[tox] envlist = fix py311 py310 py39 py38 py37 cov type docs pkg_meta isolated_build = true skip_missing_interpreters = true minversion = 3.22 [testenv] description = run the tests with pytest under {envname} passenv = PYTEST_* SSL_CERT_FILE setenv = COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}{/}.coverage.{envname}} COVERAGE_PROCESS_START = {toxinidir}{/}pyproject.toml extras = testing commands = pytest {posargs: \ --junitxml {toxworkdir}{/}junit.{envname}.xml --cov {envsitepackagesdir}{/}tox --cov {toxinidir}{/}tests \ --cov-config={toxinidir}{/}pyproject.toml --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \ --cov-report html:{envtmpdir}{/}htmlcov \ --cov-report xml:{toxworkdir}{/}coverage.{envname}.xml \ -n={env:PYTEST_XDIST_AUTO_NUM_WORKERS:auto} \ tests --durations 5 --run-integration} diff-cover --compare-branch {env:DIFF_AGAINST:origin/main} {toxworkdir}{/}coverage.{envname}.xml package = wheel wheel_build_env = .pkg [testenv:fix] description = format the code base to adhere to our styles, and complain about what we cannot do automatically passenv = {[testenv]passenv} PROGRAMDATA skip_install = true deps = pre-commit>=2.21 commands = pre-commit run --all-files --show-diff-on-failure {posargs} python -c 'print(r"hint: run {envbindir}{/}pre-commit install to add checks as pre-commit hook")' [testenv:type] description = run type check on code base deps = mypy==0.991 types-cachetools>=5.2.1 types-chardet>=5.0.4.1 commands = mypy src/tox mypy tests [testenv:docs] description = build documentation extras = docs commands = sphinx-build -d "{envtmpdir}{/}doctree" docs "{toxworkdir}{/}docs_out" --color -b html {posargs:-b linkcheck -W} python -c 'print(r"documentation available under file://{toxworkdir}{/}docs_out{/}index.html")' [testenv:pkg_meta] description = check that the long description is valid skip_install = true deps = build[virtualenv]>=0.9 check-wheel-contents>=0.4 twine>=4.0.2 commands = python -m build -o {envtmpdir} -s -w . twine check {envtmpdir}{/}* check-wheel-contents --no-config {envtmpdir} [testenv:release] description = do a release, required posarg of the version number skip_install = true deps = gitpython>=3.1.30 packaging>=23 towncrier>=22.12 commands = python {toxinidir}/tasks/release.py --version {posargs} [testenv:dev] description = dev environment with all deps at {envdir} usedevelop = true deps = {[testenv:release]deps} extras = docs testing commands = python -m pip list --format=columns python -c "print(r'{envpython}')"