repo_description: LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source data labeling tool for images, text, hypertext, audio, video and time-series data.
repo_topics: annotations deep-learning detection image-classification imagenet python2 python3 recognition tools
code: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  
  from setuptools import setup, find_packages, Command
  from sys import platform as _platform
  from shutil import rmtree
  import sys
  import os
  
  here = os.path.abspath(os.path.dirname(__file__))
  NAME = 'labelImg'
  REQUIRES_PYTHON = '>=3.0.0'
  REQUIRED_DEP = ['pyqt5', 'lxml']
  about = {}
  
  with open(os.path.join(here, 'libs', '__init__.py')) as f:
      exec(f.read(), about)
  
  with open("README.rst", "rb") as readme_file:
      readme = readme_file.read().decode("UTF-8")
  
  with open("HISTORY.rst", "rb") as history_file:
      history = history_file.read().decode("UTF-8")
  
  # OS specific settings
  SET_REQUIRES = []
  if _platform == "linux" or _platform == "linux2":
     # linux
     print('linux')
  elif _platform == "darwin":
     # MAC OS X
     SET_REQUIRES.append('py2app')
  
  required_packages = find_packages()
  required_packages.append('labelImg')
  
  APP = [NAME + '.py']
  OPTIONS = {
      'argv_emulation': True,
      'iconfile': 'resources/icons/app.icns'
  }
  
  class UploadCommand(Command):
      """Support setup.py upload."""
  
      description=readme + '\n\n' + history,
  
      user_options = []
  
      @staticmethod
      def status(s):
          """Prints things in bold."""
          print('\033[1m{0}\033[0m'.format(s))
  
      def initialize_options(self):
          pass
  
      def finalize_options(self):
          pass
  
      def run(self):
          try:
              self.status('Removing previous builds…')
              rmtree(os.path.join(here, 'dist'))
          except OSError:
              self.status('Fail to remove previous builds..')
              pass
  
          self.status('Building Source and Wheel (universal) distribution…')
          os.system(
              '{0} setup.py sdist bdist_wheel --universal'.format(sys.executable))
  
          self.status('Uploading the package to PyPI via Twine…')
          os.system('twine upload dist/*')
  
          self.status('Pushing git tags…')
          os.system('git tag -d v{0}'.format(about['__version__']))
          os.system('git tag v{0}'.format(about['__version__']))
          # os.system('git push --tags')
  
          sys.exit()
  
  
  setup(
      app=APP,
      name=NAME,
      version=about['__version__'],
      description="LabelImg is a graphical image annotation tool and label object bounding boxes in images",
      long_description=readme + '\n\n' + history,
      author="TzuTa Lin",
      author_email='[REDACTED_EMAIL]',
      url='https://github.com/tzutalin/labelImg',
      python_requires=REQUIRES_PYTHON,
      package_dir={'labelImg': '.'},
      packages=required_packages,
      entry_points={
          'console_scripts': [
              'labelImg=labelImg.labelImg:main'
          ]
      },
      include_package_data=True,
      install_requires=REQUIRED_DEP,
      license="MIT license",
      zip_safe=False,
      keywords='labelImg labelTool development annotation deeplearning',
      classifiers=[
          'Development Status :: 5 - Production/Stable',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: MIT License',
          'Natural Language :: English',
          'Programming Language :: Python :: 3',
          'Programming Language :: Python :: 3.3',
          'Programming Language :: Python :: 3.4',
          'Programming Language :: Python :: 3.5',
          'Programming Language :: Python :: 3.6',
          'Programming Language :: Python :: 3.7',
      ],
      package_data={'data/predefined_classes.txt': ['data/predefined_classes.txt']},
      options={'py2app': OPTIONS},
      setup_requires=SET_REQUIRES,
      # $ setup.py publish support.
      cmdclass={
          'upload': UploadCommand,
      }
  )
  