text: #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  
  import subprocess
  import os
  from setuptools import setup, find_packages
  from setuptools.command.develop import develop
  from setuptools.command.install import install
  
  # Dynamically compile protos
  def compileProtoBuf():
      res = subprocess.call(['bash', './compile.sh'])
      assert res == 0, 'cannot compile protobuf'
  
  class PostDevelopCommand(develop):
      """Post-installation for development mode."""
      def run(self):
          compileProtoBuf()
          develop.run(self)
  
  
  class PostInstallCommand(install):
      """Post-installation for installation mode."""
      def run(self):
          compileProtoBuf()
          import os
          os.system("pip install protobuf numpy six")
          install.run(self)
  
  with open('HISTORY.rst') as history_file:
      history = history_file.read()
  
  preparing_PyPI_package = False
  version_git = version = '1.8'
  
  if not preparing_PyPI_package:
      if os.path.exists('.git'):
          sha = subprocess.check_output(['git', 'rev-parse', 'HEAD']).decode('ascii').strip()
          version_git = version_git + '+' + sha[:7]
  
      with open('tensorboardX/__init__.py', 'a') as f:
          f.write('\n__version__ = "{}"\n'.format(version_git))
  
  requirements = [
      'numpy',
      'protobuf >= 3.8.0',
      'six',
  ]
  
  test_requirements = [
      'pytest',
      'matplotlib',
      'crc32c',
  ]
  
  setup(
      name='tensorboardX',
      version=version_git,
      description='TensorBoardX lets you watch Tensors Flow without Tensorflow',
      long_description=history,
      author='Tzu-Wei Huang',
      author_email='huang.dexter@gmail.com',
      url='https://github.com/lanpa/tensorboardX',
      packages=['tensorboardX'],
      include_package_data=True,
      install_requires=requirements,
      license='MIT license',
      zip_safe=False,
      classifiers=[
          'Development Status :: 2 - Pre-Alpha',
          'Intended Audience :: Developers',
          'License :: OSI Approved :: MIT License',
          'Natural Language :: English',
          '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',
      ],
      cmdclass={
          'develop': PostDevelopCommand,
          'install': PostInstallCommand,
      },
      test_suite='tests',
      tests_require=test_requirements
  )
  
  
  # checklist: update History.rst readme.md
  # change preparing_PyPI_package to True
  # remove __version__ = "1.old" in __init__.py
  # commit
  # add tag
  # python setup.py sdist bdist_wheel --universal
  # twine upload dist/*
  # push commit