Преглед изворни кода

Move __version__ to __init__.py

Kentaro Wada пре 5 година
родитељ
комит
37bfe44276
4 измењених фајлова са 130 додато и 126 уклоњено
  1. 6 3
      labelme/__init__.py
  2. 0 5
      labelme/_version.py
  3. 1 1
      labelme/label_file.py
  4. 123 117
      setup.py

+ 6 - 3
labelme/__init__.py

@@ -8,6 +8,12 @@ from qtpy import QT_VERSION
 
 __appname__ = 'labelme'
 
+# Semantic Versioning 2.0.0: https://semver.org/
+# 1. MAJOR version when you make incompatible API changes;
+# 2. MINOR version when you add functionality in a backwards-compatible manner;
+# 3. PATCH version when you make backwards-compatible bug fixes.
+__version__ = '3.21.1'
+
 QT4 = QT_VERSION[0] == '4'
 QT5 = QT_VERSION[0] == '5'
 del QT_VERSION
@@ -16,9 +22,6 @@ PY2 = sys.version[0] == '2'
 PY3 = sys.version[0] == '3'
 del sys
 
-
-from labelme._version import __version__
-
 from labelme.label_file import LabelFile
 from labelme import testing
 from labelme import utils

+ 0 - 5
labelme/_version.py

@@ -1,5 +0,0 @@
-# Semantic Versioning 2.0.0: https://semver.org/
-# 1. MAJOR version when you make incompatible API changes;
-# 2. MINOR version when you add functionality in a backwards-compatible manner;
-# 3. PATCH version when you make backwards-compatible bug fixes.
-__version__ = '3.21.1'

+ 1 - 1
labelme/label_file.py

@@ -5,7 +5,7 @@ import os.path as osp
 
 import PIL.Image
 
-from labelme._version import __version__
+from labelme import __version__
 from labelme.logger import logger
 from labelme import PY2
 from labelme import QT4

+ 123 - 117
setup.py

@@ -1,7 +1,7 @@
 from __future__ import print_function
 
 import distutils.spawn
-import os.path
+import re
 from setuptools import find_packages
 from setuptools import setup
 import shlex
@@ -9,90 +9,70 @@ import subprocess
 import sys
 
 
-PY3 = sys.version_info[0] == 3
-PY2 = sys.version_info[0] == 2
-assert PY3 or PY2
-
-
-here = os.path.abspath(os.path.dirname(__file__))
-version_file = os.path.join(here, 'labelme', '_version.py')
-if PY3:
-    import importlib
-    version = importlib.machinery.SourceFileLoader(
-        '_version', version_file
-    ).load_module().__version__
-else:
-    assert PY2
-    import imp
-    version = imp.load_source('_version', version_file).__version__
-del here
-
-
-install_requires = [
-    'imgviz>=0.10.2',
-    'matplotlib',
-    'numpy',
-    'Pillow>=2.8.0',
-    'PyYAML',
-    'qtpy',
-    'termcolor',
-]
-
-# Find python binding for qt with priority:
-# PyQt5 -> PySide2 -> PyQt4,
-# and PyQt5 is automatically installed on Python3.
-QT_BINDING = None
-
-try:
-    import PyQt5  # NOQA
-    QT_BINDING = 'pyqt5'
-except ImportError:
-    pass
-
-if QT_BINDING is None:
-    try:
-        import PySide2  # NOQA
-        QT_BINDING = 'pyside2'
-    except ImportError:
-        pass
+def get_version():
+    filename = 'labelme/__init__.py'
+    with open(filename) as f:
+        match = re.search(
+            r'''^__version__ = ['"]([^'"]*)['"]''', f.read(), re.M
+        )
+    if not match:
+        raise RuntimeError("{} doesn't contain __version__".format(filename))
+    version = match.groups()[0]
+    return version
+
+
+def get_install_requires():
+    PY3 = sys.version_info[0] == 3
+    PY2 = sys.version_info[0] == 2
+    assert PY3 or PY2
+
+    install_requires = [
+        'imgviz>=0.10.2',
+        'matplotlib',
+        'numpy',
+        'Pillow>=2.8.0',
+        'PyYAML',
+        'qtpy',
+        'termcolor',
+    ]
+
+    # Find python binding for qt with priority:
+    # PyQt5 -> PySide2 -> PyQt4,
+    # and PyQt5 is automatically installed on Python3.
+    QT_BINDING = None
 
-if QT_BINDING is None:
     try:
-        import PyQt4  # NOQA
-        QT_BINDING = 'pyqt4'
-    except ImportError:
-        if PY2:
-            print(
-                'Please install PyQt5, PySide2 or PyQt4 for Python2.\n'
-                'Note that PyQt5 can be installed via pip for Python3.',
-                file=sys.stderr,
-            )
-            sys.exit(1)
-        assert PY3
-        # PyQt5 can be installed via pip for Python3
-        install_requires.append('PyQt5')
+        import PyQt5  # NOQA
         QT_BINDING = 'pyqt5'
-del QT_BINDING
-
+    except ImportError:
+        pass
 
-if sys.argv[1] == 'release':
-    if not distutils.spawn.find_executable('twine'):
-        print(
-            'Please install twine:\n\n\tpip install twine\n',
-            file=sys.stderr,
-        )
-        sys.exit(1)
-
-    commands = [
-        'python tests/docs_tests/man_tests/test_labelme_1.py',
-        'git tag v{:s}'.format(version),
-        'git push origin master --tag',
-        'python setup.py sdist',
-        'twine upload dist/labelme-{:s}.tar.gz'.format(version),
-    ]
-    for cmd in commands:
-        subprocess.check_call(shlex.split(cmd))
-    sys.exit(0)
+    if QT_BINDING is None:
+        try:
+            import PySide2  # NOQA
+            QT_BINDING = 'pyside2'
+        except ImportError:
+            pass
+
+    if QT_BINDING is None:
+        try:
+            import PyQt4  # NOQA
+            QT_BINDING = 'pyqt4'
+        except ImportError:
+            if PY2:
+                print(
+                    'Please install PyQt5, PySide2 or PyQt4 for Python2.\n'
+                    'Note that PyQt5 can be installed via pip for Python3.',
+                    file=sys.stderr,
+                )
+                sys.exit(1)
+            assert PY3
+            # PyQt5 can be installed via pip for Python3
+            install_requires.append('PyQt5')
+            QT_BINDING = 'pyqt5'
+    del QT_BINDING
+
+    return install_requires
 
 
 def get_long_description():
@@ -107,40 +87,66 @@ def get_long_description():
         return long_description
 
 
-setup(
-    name='labelme',
-    version=version,
-    packages=find_packages(),
-    description='Image Polygonal Annotation with Python',
-    long_description=get_long_description(),
-    long_description_content_type='text/markdown',
-    author='Kentaro Wada',
-    author_email='www.kentaro.wada@gmail.com',
-    url='https://github.com/wkentaro/labelme',
-    install_requires=install_requires,
-    license='GPLv3',
-    keywords='Image Annotation, Machine Learning',
-    classifiers=[
-        'Development Status :: 5 - Production/Stable',
-        'Intended Audience :: Developers',
-        'Natural Language :: English',
-        'Programming Language :: Python',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3.5',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
-        'Programming Language :: Python :: Implementation :: CPython',
-        'Programming Language :: Python :: Implementation :: PyPy',
-    ],
-    package_data={'labelme': ['icons/*', 'config/*.yaml']},
-    entry_points={
-        'console_scripts': [
-            'labelme=labelme.__main__:main',
-            'labelme_draw_json=labelme.cli.draw_json:main',
-            'labelme_draw_label_png=labelme.cli.draw_label_png:main',
-            'labelme_json_to_dataset=labelme.cli.json_to_dataset:main',
-            'labelme_on_docker=labelme.cli.on_docker:main',
+def main():
+    version = get_version()
+
+    if sys.argv[1] == 'release':
+        if not distutils.spawn.find_executable('twine'):
+            print(
+                'Please install twine:\n\n\tpip install twine\n',
+                file=sys.stderr,
+            )
+            sys.exit(1)
+
+        commands = [
+            'python tests/docs_tests/man_tests/test_labelme_1.py',
+            'git tag v{:s}'.format(version),
+            'git push origin master --tag',
+            'python setup.py sdist',
+            'twine upload dist/labelme-{:s}.tar.gz'.format(version),
+        ]
+        for cmd in commands:
+            subprocess.check_call(shlex.split(cmd))
+        sys.exit(0)
+
+    setup(
+        name='labelme',
+        version=version,
+        packages=find_packages(),
+        description='Image Polygonal Annotation with Python',
+        long_description=get_long_description(),
+        long_description_content_type='text/markdown',
+        author='Kentaro Wada',
+        author_email='www.kentaro.wada@gmail.com',
+        url='https://github.com/wkentaro/labelme',
+        install_requires=get_install_requires(),
+        license='GPLv3',
+        keywords='Image Annotation, Machine Learning',
+        classifiers=[
+            'Development Status :: 5 - Production/Stable',
+            'Intended Audience :: Developers',
+            'Natural Language :: English',
+            'Programming Language :: Python',
+            'Programming Language :: Python :: 2.7',
+            'Programming Language :: Python :: 3.5',
+            'Programming Language :: Python :: 3.6',
+            'Programming Language :: Python :: 3.7',
+            'Programming Language :: Python :: Implementation :: CPython',
+            'Programming Language :: Python :: Implementation :: PyPy',
         ],
-    },
-    data_files=[('share/man/man1', ['docs/man/labelme.1'])],
-)
+        package_data={'labelme': ['icons/*', 'config/*.yaml']},
+        entry_points={
+            'console_scripts': [
+                'labelme=labelme.__main__:main',
+                'labelme_draw_json=labelme.cli.draw_json:main',
+                'labelme_draw_label_png=labelme.cli.draw_label_png:main',
+                'labelme_json_to_dataset=labelme.cli.json_to_dataset:main',
+                'labelme_on_docker=labelme.cli.on_docker:main',
+            ],
+        },
+        data_files=[('share/man/man1', ['docs/man/labelme.1'])],
+    )
+
+
+if __name__ == '__main__':
+    main()