Tianshou/pyproject.toml
Michael Panchenko 2cc34fb72b
Poetry install, remove gym, bump python (#925)
Closes #914 

Additional changes:

- Deprecate python below 11
- Remove 3rd party and throughput tests. This simplifies install and
test pipeline
- Remove gym compatibility and shimmy
- Format with 3.11 conventions. In particular, add `zip(...,
strict=True/False)` where possible

Since the additional tests and gym were complicating the CI pipeline
(flaky and dist-dependent), it didn't make sense to work on fixing the
current tests in this PR to then just delete them in the next one. So
this PR changes the build and removes these tests at the same time.
2023-09-05 14:34:23 -07:00

174 lines
5.3 KiB
TOML

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry]
name = "tianshou"
version = "0.5.1"
description = "A Library for Deep Reinforcement Learning"
authors = ["TSAIL <trinkle23897@gmail.com>"]
license = "MIT"
readme = "README.md"
homepage = "https://github.com/thu-ml/tianshou"
classifiers = [
# 3 - Alpha
# 4 - Beta
# 5 - Production/Stable
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Libraries :: Python Modules",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
]
exclude = ["test/*", "examples/*", "docs/*"]
[tool.poetry.dependencies]
python = "^3.11"
gymnasium = "^0.29.0"
h5py = "^3.9.0"
numba = "^0.57.1"
numpy = "^1"
packaging = "*"
pettingzoo = "^1.22"
tensorboard = "^2.5.0"
# Torch 2.0.1 causes problems, see https://github.com/pytorch/pytorch/issues/100974
torch = "^2.0.0, !=2.0.1"
tqdm = "*"
virtualenv = [
# special sauce b/c of a flaky bug in poetry on windows
# see https://github.com/python-poetry/poetry/issues/7611#issuecomment-1466478926
{ version = "^20.4.3,!=20.4.5,!=20.4.6" },
{ version = "<20.16.4", markers = "sys_platform == 'win32'" },
]
# TODO: add versions
atari_py = {version = "*", optional = true}
envpool = {version = "^0.8.2", optional = true}
mujoco_py = {version = "*", optional = true}
opencv_python = {version = "*", optional = true}
pybullet = {version = "*", optional = true}
[tool.poetry.extras]
atari = ["atari_py", "opencv-python"]
mujoco = ["mujoco_py"]
pybullet = ["pybullet"]
envpool = ["envpool"]
[tool.poetry.group.dev]
optional = true
[tool.poetry.group.dev.dependencies]
black = "^23.7.0"
jinja2 = "*"
mypy = "^1.4.1"
# networkx is used in a test
networkx = "*"
poethepoet = "^0.20.0"
pre-commit = "^3.3.3"
pygame = "^2.1.0"
pymunk = "^6.2.1"
pytest = "*"
pytest-cov = "*"
# Ray currently causes issues when installed on windows server 2022 in CI
# If users want to use ray, they should install it manually.
ray = {version = "^2", markers = "sys_platform != 'win32'"}
ruff = "^0.0.285"
scipy = "*"
sphinx = "<7"
sphinx_rtd_theme = "*"
sphinxcontrib-bibtex = "*"
sphinxcontrib-spelling = "^8.0.0"
wandb = "^0.12.0"
[tool.mypy]
allow_redefinition = true
check_untyped_defs = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
ignore_missing_imports = true
no_implicit_optional = true
pretty = true
show_error_codes = true
show_error_context = true
show_traceback = true
strict_equality = true
strict_optional = true
warn_no_return = true
warn_redundant_casts = true
warn_unreachable = true
warn_unused_configs = true
warn_unused_ignores = true
exclude = "^build/|^docs/|^test/|^examples/"
[tool.doc8]
max-line-length = 1000
[tool.black]
line-length = 100
target-version = ["py311"]
[tool.ruff]
select = [
"ASYNC", "B", "C4", "C90", "COM", "D", "DTZ", "E", "F", "FLY", "G", "I", "ISC", "PIE", "PLC", "PLE", "PLW", "RET", "RUF", "RSE", "SIM", "TID", "UP", "W", "YTT",
]
ignore = [
"SIM118", # Needed b/c iter(batch) != iter(batch.keys()). See https://github.com/thu-ml/tianshou/issues/922
"E501", # line too long. black does a good enough job
"E741", # variable names like "l". this isn't a huge problem
"B008", # do not perform function calls in argument defaults. we do this sometimes
"B011", # assert false. we don't use python -O
"B028", # we don't need explicit stacklevel for warnings
"D100", "D101", "D102", "D104", "D105", "D107", "D203", "D213", "D401", "D402", # docstring stuff
"DTZ005", # we don't need that
# remaining rules from https://github.com/psf/black/blob/main/.flake8 (except W503)
# this is a simplified version of config, making vscode plugin happy
"E402", "E501", "E701", "E731", "C408", "E203"
]
unfixable = [
"F841", # unused variable. ruff keeps the call, but mostly we want to get rid of it all
"F601", # automatic fix might obscure issue
"F602", # automatic fix might obscure issue
"B018", # automatic fix might obscure issue
]
extend-fixable = [
"F401", # unused import
"B905" , # bugbear
]
target-version = "py311"
[tool.ruff.mccabe]
max-complexity = 20
[tool.ruff.per-file-ignores]
"test/**" = ["D103"]
"docs/**" = ["D103"]
"examples/**" = ["D103"]
[tool.poetry_bumpversion.file."tianshou/__init__.py"]
[tool.poetry-sort]
move-optionals-to-bottom = true
# keep relevant parts in sync with pre-commit
[tool.poe.tasks] # https://github.com/nat-n/poethepoet
test = "pytest test --cov=tianshou --cov-report=xml --cov-report=term-missing --durations=0 -v --color=yes"
test-reduced = "pytest test/base test/continuous --cov=tianshou --durations=0 -v --color=yes"
_black_check = "black --check ."
_ruff_check = "ruff check ."
_black_format = "black ."
_ruff_format = "ruff --fix ."
lint = ["_black_check", "_ruff_check"]
_poetry_install_sort_plugin = "poetry self add poetry-plugin-sort"
_poery_sort = "poetry sort"
format = ["_black_format", "_ruff_format", "_poetry_install_sort_plugin", "_poery_sort"]
_spellcheck = "sphinx-build -W -b spelling docs docs/_build"
_doc_build = "sphinx-build -W -b html docs docs/_build"
doc-clean = "rm -rf docs/_build"
doc-build = ["_spellcheck", "_doc_build"]
type-check = "mypy tianshou"