diff --git a/mmdet/__init__.py b/mmdet/__init__.py index 58f3ace6c03d093337c9fa417ccbe8bc267b6c69..8b5e1ac77ad2a9596409bba4464f746d56ef3176 100644 --- a/mmdet/__init__.py +++ b/mmdet/__init__.py @@ -1 +1 @@ -from .version import __version__ +from .version import __version__, short_version diff --git a/mmdet/version.py b/mmdet/version.py deleted file mode 100644 index 2b8877c505752cd3aaa805b09b88791d3ca0c9bb..0000000000000000000000000000000000000000 --- a/mmdet/version.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = '0.5.0' diff --git a/setup.py b/setup.py index 759e8ebf37e0f197dfc8575ad33777584a470e3a..02dede74779edf0c281884b0b935b71691ee1af8 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,6 @@ +import os +import subprocess +import time from setuptools import find_packages, setup @@ -7,34 +10,99 @@ def readme(): return content +MAJOR = 0 +MINOR = 5 +PATCH = 0 +SUFFIX = '' +SHORT_VERSION = '{}.{}.{}{}'.format(MAJOR, MINOR, PATCH, SUFFIX) + +version_file = 'mmdet/version.py' + + +def get_git_hash(): + + def _minimal_ext_cmd(cmd): + # construct minimal environment + env = {} + for k in ['SYSTEMROOT', 'PATH', 'HOME']: + 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']) + sha = out.strip().decode('ascii') + except OSError: + sha = 'unknown' + + return sha + + +def get_hash(): + if os.path.exists('.git'): + sha = get_git_hash()[:7] + elif os.path.exists(version_file): + try: + from mmdet.version import __version__ + sha = __version__.split('+')[-1] + except ImportError: + raise ImportError('Unable to get git version') + else: + sha = 'unknown' + + return sha + + +def write_version_py(): + content = """# GENERATED VERSION FILE +# TIME: {} + +__version__ = '{}' +short_version = '{}' +""" + sha = get_hash() + VERSION = SHORT_VERSION + '+' + sha + + with open(version_file, 'w') as f: + f.write(content.format(time.asctime(), VERSION, SHORT_VERSION)) + + def get_version(): - version_file = 'mmdet/version.py' with open(version_file, 'r') as f: exec(compile(f.read(), version_file, 'exec')) return locals()['__version__'] -setup( - name='mmdet', - version=get_version(), - description='Open MMLab Detection Toolbox', - long_description=readme(), - keywords='computer vision, object detection', - packages=find_packages(), - classifiers=[ - 'Development Status :: 4 - Beta', - 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Topic :: Utilities', - ], - license='GPLv3', - setup_requires=['pytest-runner'], - tests_require=['pytest'], - install_requires=['numpy', 'matplotlib', 'six', 'terminaltables'], - zip_safe=False) +if __name__ == '__main__': + write_version_py() + setup( + name='mmdet', + version=get_version(), + description='Open MMLab Detection Toolbox', + long_description=readme(), + keywords='computer vision, object detection', + packages=find_packages(), + classifiers=[ + 'Development Status :: 4 - Beta', + 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 2', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Topic :: Utilities', + ], + license='GPLv3', + setup_requires=['pytest-runner'], + tests_require=['pytest'], + install_requires=['numpy', 'matplotlib', 'six', 'terminaltables'], + zip_safe=False)