setup.py (102 lines of code) (raw):

# Copyright (c) 2017-2019 Uber Technologies, Inc. # SPDX-License-Identifier: Apache-2.0 import os import subprocess import sys from setuptools import find_packages, setup PROJECT_PATH = os.path.dirname(os.path.abspath(__file__)) VERSION = """ # This file is auto-generated with the version information during setup.py installation. __version__ = '{}' """ # Find pyro version. for line in open(os.path.join(PROJECT_PATH, 'pyro', '__init__.py')): if line.startswith('version_prefix = '): version = line.strip().split()[2][1:-1] # Append current commit sha to version commit_sha = '' try: current_tag = subprocess.check_output(['git', 'tag', '--points-at', 'HEAD'], cwd=PROJECT_PATH).decode('ascii').strip() # only add sha if HEAD does not point to the release tag if not current_tag == version: commit_sha = subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], cwd=PROJECT_PATH).decode('ascii').strip() # catch all exception to be safe except Exception: pass # probably not a git repo # Write version to _version.py if commit_sha: version += '+{}'.format(commit_sha) with open(os.path.join(PROJECT_PATH, 'pyro', '_version.py'), 'w') as f: f.write(VERSION.format(version)) # READ README.md for long description on PyPi. # This requires uploading via twine, e.g.: # $ python setup.py sdist bdist_wheel # $ twine upload --repository-url https://test.pypi.org/legacy/ dist/* # test version # $ twine upload dist/* try: long_description = open('README.md', encoding='utf-8').read() except Exception as e: sys.stderr.write('Failed to read README.md: {}\n'.format(e)) sys.stderr.flush() long_description = '' # Remove badges since they will always be obsolete. # This assumes the first 12 lines contain badge info. long_description = '\n'.join([str(line) for line in long_description.split('\n')[12:]]) # examples/tutorials EXTRAS_REQUIRE = [ 'jupyter>=1.0.0', 'graphviz>=0.8', 'matplotlib>=1.3', 'torchvision>=0.6.0', 'visdom>=0.1.4', # 'biopython>=1.54', # requires Python 3.6 'pandas', 'scikit-learn', 'seaborn', 'wget', ] setup( name='pyro-ppl', version=version, description='A Python library for probabilistic modeling and inference', long_description=long_description, long_description_content_type='text/markdown', packages=find_packages(include=['pyro', 'pyro.*']), package_data={"pyro.distributions": ["*.cpp"]}, url='http://pyro.ai', author='Uber AI Labs', author_email='pyro@uber.com', install_requires=[ # if you add any additional libraries, please also # add them to `docs/requirements.txt` # numpy is necessary for some functionality of PyTorch 'numpy>=1.7', 'opt_einsum>=2.3.2', 'pyro-api>=0.1.1', 'torch>=1.5.0', 'tqdm>=4.36', ], extras_require={ 'extras': EXTRAS_REQUIRE, 'test': EXTRAS_REQUIRE + [ 'nbval', 'pytest>=5.0', 'pytest-cov', 'scipy>=1.1', ], 'profile': ['prettytable', 'pytest-benchmark', 'snakeviz'], 'dev': EXTRAS_REQUIRE + [ 'flake8', 'isort', 'nbformat', 'nbsphinx>=0.3.2', 'nbstripout', 'nbval', 'ninja', 'pypandoc', 'pytest>=5.0', 'pytest-xdist', 'scipy>=1.1', 'sphinx', 'sphinx_rtd_theme', 'yapf', ], 'horovod': ['horovod[pytorch]>=0.19'], 'funsor': [ # TODO update to release branch (currently using a recent commit on master) 'funsor[torch] @ git+git://github.com/pyro-ppl/funsor.git@6410b19b645e447da81ba4b00f5818c9ec95981f', ], }, python_requires='>=3.5', keywords='machine learning statistics probabilistic programming bayesian modeling pytorch', license='Apache 2.0', classifiers=[ 'Intended Audience :: Developers', 'Intended Audience :: Education', 'Intended Audience :: Science/Research', 'Operating System :: POSIX :: Linux', 'Operating System :: MacOS :: MacOS X', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], # yapf )