| [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" |