From b1c2768f319e47c3bd474bf23db575f2e9034718 Mon Sep 17 00:00:00 2001 From: LaraStuStu Date: Sat, 28 Mar 2020 14:01:50 +0800 Subject: [PATCH] Create setup.py --- DataAnnotation/labelme/setup.py | 143 ++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 DataAnnotation/labelme/setup.py diff --git a/DataAnnotation/labelme/setup.py b/DataAnnotation/labelme/setup.py new file mode 100644 index 0000000..f877fa8 --- /dev/null +++ b/DataAnnotation/labelme/setup.py @@ -0,0 +1,143 @@ +from __future__ import print_function + +import distutils.spawn +import os.path +from setuptools import find_packages +from setuptools import setup +import shlex +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 = [ + '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 + +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 + + +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) + + +def get_long_description(): + with open('README.md') as f: + long_description = f.read() + try: + import github2pypi + return github2pypi.replace_url( + slug='wkentaro/labelme', content=long_description + ) + except Exception: + 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', + 'Programming Language :: Python :: 3', + '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', + ], + }, + data_files=[('share/man/man1', ['docs/man/labelme.1'])], +) -- GitLab