183 lines
5.9 KiB
TOML
183 lines
5.9 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.28.0"
|
|
h5py = "^3.9.0"
|
|
numba = "^0.57.1"
|
|
numpy = "^1"
|
|
overrides = "^7.4.0"
|
|
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, !=2.1.0"
|
|
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"
|
|
docstring-parser = "^0.15"
|
|
jinja2 = "*"
|
|
jsonargparse = "^4.24.1"
|
|
jupyter = "^1.0.0"
|
|
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/|^tianshou/utils/(string|logging).py|^temp*.py"
|
|
|
|
[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", "D106", "D205", # docstring stuff
|
|
"G004", # logging (no f-strings)
|
|
"RUF012", # disallows mutable class variables unless annotated
|
|
"DTZ005", # we don't need that
|
|
"RET505", # sacrifices visual discernability of control flow paths for brevity (regarding return statements)
|
|
# 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
|
|
]
|
|
ignore-init-module-imports = true # without this, "unused" imports in __init__ will be auto-removed, breaking imports
|
|
|
|
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"]
|
|
_autogen_rst = "python docs/autogen_rst.py"
|
|
_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 = ["_autogen_rst", "_spellcheck", "_doc_build"]
|
|
type-check = "mypy tianshou"
|