blob: 5900198a54845029a6c8dc4f3a1f1dffb7430ea7 [file]
[tox]
min_version = 4.31.0
envlist =
build
coverage-erase
py{3.14, 3.13, 3.12, 3.11, 3.10}
coverage-report
coverage-html
docs
labels =
update=update-{requirements}
[testenv]
description = Test the project on Python {py_dot_ver}
package = wheel
wheel_build_env = build_wheel
depends =
py{3.14, 3.13, 3.12, 3.11, 3.10}: coverage-erase
deps =
-r requirements/test/requirements.txt
commands =
coverage run -m pytest {posargs:}
[testenv:coverage-base]
description = Base settings for coverage-* environments
base_python = py3.14
no_package = true
skip_install = true
deps =
-r requirements/test/requirements-coverage.txt
[testenv:coverage-erase]
base = coverage-base
description = Erase coverage data
commands = coverage erase
[testenv:coverage-report]
base = coverage-base
description = Print a coverage report
depends =
py{3.14, 3.13, 3.12, 3.11, 3.10}
commands_pre =
- coverage combine
commands =
coverage report
[testenv:coverage-html]
base = coverage-base
description = Create an HTML coverage report
depends =
coverage-report
commands =
coverage html --fail-under=0
[testenv:build]
description = Test building the package
base_python = py3.14
skip_install = true
deps =
build
twine
uv
commands =
python -m build --installer uv --outdir dist/
twine check --strict dist/*
[testenv:docs]
description = Test the documentation builds
# The Python version here must match the version set in `.readthedocs.yaml`
# to help ensure documentation builds are tested in a reproducible way.
base_python = py3.13
skip_install = true
deps =
-r requirements/docs/requirements.txt
commands =
sphinx-build -aWEb html documentation/ documentation/_build
[testenv:update-base]
description = Base settings for update-* environments
base_python = py3.14
recreate = true
skip_install = true
[testenv:update-requirements]
base = update-base
description = Update requirements files
deps =
poetry
poetry-plugin-export
commands =
poetry update --directory="requirements/docs" --lock
poetry export --directory="requirements/docs" --output="requirements.txt" --without-hashes
poetry update --directory="requirements/test" --lock
poetry export --directory="requirements/test" --output="requirements.txt" --without-hashes
poetry export --directory="requirements/test" --output="requirements-coverage.txt" --without-hashes --only="coverage"