[tox] minversion = 4.2.0 envlist = py{39,310,311,312,313} [testenv] usedevelop = True passenv = https_proxy http_proxy no_proxy COLORTERM PERL PERL5LIB PYTEST_ADDOPTS DO_EPUBCHECK EPUBCHECK_PATH TERM CLEAN BUILDER READTHEDOCS description = py{39,310,311,312,313}: Run unit tests against {envname}. extras = test setenv = PYTHONWARNINGS = error PYTEST_ADDOPTS = {env:PYTEST_ADDOPTS:} --color yes commands= python -X dev -X warn_default_encoding -m pytest --durations 25 {posargs} [testenv:lint] description = Run linters. extras = lint # If you update any of these commands, don't forget to update the equivalent # GitHub Workflow step commands = ruff . --diff --format github flake8 . isort --check-only --diff . mypy sphinx/ [testenv:docs] description = Build documentation. extras = docs commands = python -c "import shutil; shutil.rmtree('./build/sphinx', ignore_errors=True) if '{env:CLEAN:}' else None" sphinx-build -M {env:BUILDER:html} ./doc ./build/sphinx -nW --keep-going {posargs} [testenv:docs-live] description = Build documentation. extras = docs deps = sphinx-autobuild commands = sphinx-autobuild ./doc ./build/sphinx/ [testenv:bindep] description = Install binary dependencies. deps = bindep commands = bindep test [testenv:ruff] description = Run ruff formatting and linting. extras = lint commands = ruff format . ruff check --fix . [testenv:mypy] description = Run mypy type checking. extras = lint test commands = mypy {posargs}