diff --git a/setup.py b/setup.py index 13fbf2c42..ce189985b 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from __future__ import division, print_function +from __future__ import print_function import os import shutil import subprocess @@ -14,14 +14,6 @@ except ImportError: from distutils.core import Extension, setup -MAJOR = 0 -MINOR = 100 -MICRO = 0 -ISRELEASE = False -VERSION = '%d.%d.%d' % (MAJOR, MINOR, MICRO) -DEFAULT_MODEL = 'en_default==1.0.4' - - PACKAGES = [ 'spacy', 'spacy.tokens', @@ -104,75 +96,6 @@ class build_ext_subclass(build_ext, build_ext_options): build_ext.build_extensions(self) -# Return the git revision as a string -def git_version(): - def _minimal_ext_cmd(cmd): - # construct minimal environment - env = {} - for k in ['SYSTEMROOT', 'PATH']: - v = os.environ.get(k) - if v is not None: - env[k] = v - # LANGUAGE is used on win32 - env['LANGUAGE'] = 'C' - env['LANG'] = 'C' - env['LC_ALL'] = 'C' - out = subprocess.Popen(cmd, stdout = subprocess.PIPE, env=env).communicate()[0] - return out - - try: - out = _minimal_ext_cmd(['git', 'rev-parse', 'HEAD']) - GIT_REVISION = out.strip().decode('ascii') - except OSError: - GIT_REVISION = 'Unknown' - - return GIT_REVISION - - -def get_version_info(): - # Adding the git rev number needs to be done inside write_version_py(), - # otherwise the import of spacy.about messes up the build under Python 3. - FULLVERSION = VERSION - if os.path.exists('.git'): - GIT_REVISION = git_version() - elif os.path.exists(os.path.join('spacy', 'about.py')): - # must be a source distribution, use existing version file - try: - from spacy.about import git_revision as GIT_REVISION - except ImportError: - raise ImportError('Unable to import git_revision. Try removing ' - 'spacy/about.py and the build directory ' - 'before building.') - else: - GIT_REVISION = 'Unknown' - - if not ISRELEASE: - FULLVERSION += '.dev0+' + GIT_REVISION[:7] - - return FULLVERSION, GIT_REVISION - - -def write_version(path): - cnt = """# THIS FILE IS GENERATED FROM SPACY SETUP.PY -short_version = '%(version)s' -version = '%(version)s' -full_version = '%(full_version)s' -git_revision = '%(git_revision)s' -release = %(isrelease)s -default_model = '%(default_model)s' -if not release: - version = full_version -""" - FULLVERSION, GIT_REVISION = get_version_info() - - with open(path, 'w') as f: - f.write(cnt % {'version': VERSION, - 'full_version' : FULLVERSION, - 'git_revision' : GIT_REVISION, - 'isrelease': str(ISRELEASE), - 'default_model': DEFAULT_MODEL}) - - def generate_cython(root, source): print('Cythonizing sources') p = subprocess.call([sys.executable, @@ -244,7 +167,9 @@ def setup_package(): return clean(root) with chdir(root): - write_version(os.path.join(root, 'spacy', 'about.py')) + about = {} + with open(os.path.join(root, "spacy", "about.py")) as f: + exec(f.read(), about) include_dirs = [ get_python_inc(plat_specific=True), @@ -262,16 +187,16 @@ def setup_package(): prepare_includes(root) setup( - name='spacy', + name=about['__name__'], zip_safe=False, packages=PACKAGES, package_data={'': ['*.pyx', '*.pxd']}, - description='Industrial-strength NLP', - author='Matthew Honnibal', - author_email='matt@spacy.io', - version=VERSION, - url='https://spacy.io', - license='MIT', + description=about['__summary__'], + author=about['__author__'], + author_email=about['__email__'], + version=about['__version__'], + url=about['__uri__'], + license=about['__license__'], ext_modules=ext_modules, install_requires=['numpy', 'murmurhash>=0.26,<0.27', 'cymem>=1.30,<1.31', 'preshed>=0.46.1,<0.47', 'thinc>=4.2.0,<4.3.0', 'text_unidecode', 'plac', 'six', diff --git a/spacy/about.py b/spacy/about.py new file mode 100644 index 000000000..6ad68f5ba --- /dev/null +++ b/spacy/about.py @@ -0,0 +1,14 @@ +# inspired from: + +# https://python-packaging-user-guide.readthedocs.org/en/latest/single_source_version/ +# https://github.com/pypa/warehouse/blob/master/warehouse/__about__.py + +__name__ = 'spacy' +__version__ = '0.100.0' +__summary__ = 'Industrial-strength NLP' +__uri__ = 'https://spacy.io' +__author__ = 'Matthew Honnibal' +__email__ = 'matt@spacy.io' +__license__ = 'MIT' +__release__ = False +__default_model__ = 'en_default==1.0.4' diff --git a/spacy/en/download.py b/spacy/en/download.py index 1b50feeb6..8d48405fe 100644 --- a/spacy/en/download.py +++ b/spacy/en/download.py @@ -42,12 +42,12 @@ def main(data_size='all', force=False): path = os.path.dirname(os.path.abspath(__file__)) if force: - sputnik.purge('spacy', about.short_version) + sputnik.purge(about.__name__, about.__version__) - package = sputnik.install('spacy', about.short_version, about.default_model) + package = sputnik.install(about.__name__, about.__version__, about.__default_model__) try: - sputnik.package('spacy', about.short_version, about.default_model) + sputnik.package(about.__name__, about.__version__, about.__default_model__) except PackageNotFoundException, CompatiblePackageNotFoundException: print("Model failed to install. Please run 'python -m " "spacy.en.download --force'.", file=sys.stderr) diff --git a/spacy/language.py b/spacy/language.py index 11ae91f69..24e716265 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -19,7 +19,6 @@ from . import orth from .syntax.ner import BiluoPushDown from .syntax.arc_eager import ArcEager -from . import about from . import util from .attrs import TAG, DEP, ENT_IOB, ENT_TYPE, HEAD @@ -193,7 +192,7 @@ class Language(object): via = data_dir if via is None: - package = util.get_package_by_name(about.default_model) + package = util.get_package_by_name() else: package = util.get_package(via) diff --git a/spacy/util.py b/spacy/util.py index 27d1fe161..5083fa37a 100644 --- a/spacy/util.py +++ b/spacy/util.py @@ -20,9 +20,10 @@ def get_package(via=None): return DirPackage(via) -def get_package_by_name(name, via=None): +def get_package_by_name(name=None, via=None): try: - return sputnik.package('spacy', about.short_version, name, data_path=via) + return sputnik.package(about.__name__, about.__version__, + name or about.__default_model__, data_path=via) except PackageNotFoundException as e: raise RuntimeError("Model not installed. Please run 'python -m " "spacy.en.download' to install latest compatible "