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.
174 lines
5.3 KiB
TOML
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"
|