/setup.py

https://github.com/Nextdoor/ndscheduler · Python · 91 lines · 71 code · 15 blank · 5 comment · 3 complexity · 64424c97ede5604a122f06640da19f50 MD5 · raw file

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import multiprocessing # To make python setup.py test happy
  4. import os
  5. import shutil
  6. import subprocess
  7. from distutils.command.clean import clean
  8. from setuptools import find_packages
  9. from setuptools import setup
  10. multiprocessing
  11. PACKAGE = 'ndscheduler'
  12. __version__ = None
  13. exec(open(os.path.join('ndscheduler', 'version.py')).read()) # set __version__
  14. # -*- Hooks -*-
  15. class CleanHook(clean):
  16. def run(self):
  17. clean.run(self)
  18. def maybe_rm(path):
  19. if os.path.exists(path):
  20. shutil.rmtree(path)
  21. maybe_rm('ndscheduler.egg-info')
  22. maybe_rm('build')
  23. maybe_rm('.venv')
  24. maybe_rm('dist')
  25. maybe_rm('.eggs')
  26. subprocess.call('rm -rf *.egg', shell=True)
  27. subprocess.call('rm -f datastore.db', shell=True)
  28. subprocess.call('find . -name "*.pyc" -exec rm -rf {} \;',
  29. shell=True)
  30. # -*- Classifiers -*-
  31. classes = """
  32. Development Status :: 5 - Production/Stable
  33. License :: OSI Approved :: BSD License
  34. Topic :: System :: Distributed Computing
  35. Topic :: Software Development :: Object Brokering
  36. Programming Language :: Python
  37. Programming Language :: Python :: 2.7
  38. Programming Language :: Python :: 3.3
  39. Programming Language :: Python :: 3.4
  40. Programming Language :: Python :: 3.5
  41. Programming Language :: Python :: 3.6
  42. Programming Language :: Python :: Implementation :: CPython
  43. Operating System :: OS Independent
  44. """
  45. classifiers = [s.strip() for s in classes.split('\n') if s]
  46. # -*- %%% -*-
  47. setup(
  48. name=PACKAGE,
  49. version=__version__,
  50. description='ndscheduler: A cron-replacement library from Nextdoor',
  51. long_description=open('README.md').read(),
  52. author='Nextdoor Engineering',
  53. author_email='eng@nextdoor.com',
  54. url='https://github.com/Nextdoor/ndscheduler',
  55. download_url='http://pypi.python.org/pypi/ndscheduler#downloads',
  56. license='Apache License, Version 2',
  57. keywords='scheduler nextdoor cron python',
  58. packages=find_packages(),
  59. include_package_data=True,
  60. extras_require={'python_version<"3.3"': ['funcsigs']},
  61. tests_require=[
  62. 'funcsigs',
  63. 'mock >= 1.1.2',
  64. 'nose',
  65. ],
  66. test_suite='nose.collector',
  67. install_requires=[
  68. 'APScheduler >= 3.0.0',
  69. 'SQLAlchemy >= 1.0.0',
  70. 'future >= 0.15.2',
  71. 'tornado < 6',
  72. 'python-dateutil >= 2.2',
  73. ],
  74. classifiers=classifiers,
  75. cmdclass={'clean': CleanHook},
  76. )