This PR addresses #772 (updates Atari wrappers to work with new Gym API) and some additional issues: - Pre-commit was using gitlab for flake8, which as of recently requires authentication -> Replaced with GitHub - Yapf was quietly failing in pre-commit. Changed it such that it fixes formatting in-place - There is an incompatibility between flake8 and yapf where yapf puts binary operators after the line break and flake8 wants it before the break. I added an exception for flake8. - Also require `packaging` in setup.py My changes shouldn't change the behaviour of the wrappers for older versions, but please double check. Idk whether it's just me, but there are always some incompatibilities between yapf and flake8 that need to resolved manually. It might make sense to try black instead.
104 lines
3.3 KiB
Python
104 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import sys
|
|
|
|
from setuptools import find_packages, setup
|
|
|
|
|
|
def get_version() -> str:
|
|
# https://packaging.python.org/guides/single-sourcing-package-version/
|
|
init = open(os.path.join("tianshou", "__init__.py"), "r").read().split()
|
|
return init[init.index("__version__") + 2][1:-1]
|
|
|
|
|
|
def get_install_requires() -> str:
|
|
return [
|
|
"gym>=0.23.1",
|
|
"tqdm",
|
|
"numpy>1.16.0", # https://github.com/numpy/numpy/issues/12793
|
|
"tensorboard>=2.5.0",
|
|
"torch>=1.4.0",
|
|
"numba>=0.51.0",
|
|
"h5py>=2.10.0", # to match tensorflow's minimal requirements
|
|
"protobuf~=3.19.0", # breaking change, sphinx fail
|
|
"packaging",
|
|
]
|
|
|
|
|
|
def get_extras_require() -> str:
|
|
req = {
|
|
"dev": [
|
|
"sphinx<4",
|
|
"sphinx_rtd_theme",
|
|
"jinja2<3.1", # temporary fix
|
|
"sphinxcontrib-bibtex",
|
|
"flake8",
|
|
"flake8-bugbear",
|
|
"yapf",
|
|
"isort",
|
|
"pytest",
|
|
"pytest-cov",
|
|
"ray>=1.0.0",
|
|
"wandb>=0.12.0",
|
|
"networkx",
|
|
"mypy",
|
|
"pydocstyle",
|
|
"doc8",
|
|
"scipy",
|
|
"pillow",
|
|
"pettingzoo>=1.17",
|
|
"pygame>=2.1.0", # pettingzoo test cases pistonball
|
|
"pymunk>=6.2.1", # pettingzoo test cases pistonball
|
|
"nni>=2.3,<3.0", # expect breaking changes at next major version
|
|
"pytorch_lightning",
|
|
],
|
|
"atari": ["atari_py", "opencv-python"],
|
|
"mujoco": ["mujoco_py"],
|
|
"pybullet": ["pybullet"],
|
|
}
|
|
if sys.platform == "linux":
|
|
req["dev"].append("envpool>=0.5.3")
|
|
return req
|
|
|
|
|
|
setup(
|
|
name="tianshou",
|
|
version=get_version(),
|
|
description="A Library for Deep Reinforcement Learning",
|
|
long_description=open("README.md", encoding="utf8").read(),
|
|
long_description_content_type="text/markdown",
|
|
url="https://github.com/thu-ml/tianshou",
|
|
author="TSAIL",
|
|
author_email="trinkle23897@gmail.com",
|
|
license="MIT",
|
|
python_requires=">=3.6",
|
|
classifiers=[
|
|
# How mature is this project? Common values are
|
|
# 3 - Alpha
|
|
# 4 - Beta
|
|
# 5 - Production/Stable
|
|
"Development Status :: 4 - Beta",
|
|
# Indicate who your project is intended for
|
|
"Intended Audience :: Science/Research",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
# Pick your license as you wish (should match "license" above)
|
|
"License :: OSI Approved :: MIT License",
|
|
# Specify the Python versions you support here. In particular, ensure
|
|
# that you indicate whether you support Python 2, Python 3 or both.
|
|
"Programming Language :: Python :: 3.6",
|
|
"Programming Language :: Python :: 3.7",
|
|
"Programming Language :: Python :: 3.8",
|
|
"Programming Language :: Python :: 3.9",
|
|
"Programming Language :: Python :: 3.10",
|
|
],
|
|
keywords="reinforcement learning platform pytorch",
|
|
packages=find_packages(
|
|
exclude=["test", "test.*", "examples", "examples.*", "docs", "docs.*"]
|
|
),
|
|
install_requires=get_install_requires(),
|
|
extras_require=get_extras_require(),
|
|
)
|