[tox] requires = tox>=4.2 env_list = fix py312 py311 py310 py39 py38 py37 cov type docs pkg_meta skip_missing_interpreters = true [testenv] description = run the tests with pytest under {envname} package = wheel wheel_build_env = .pkg extras = testing pass_env = PYTEST_* SSL_CERT_FILE set_env = COVERAGE_FILE = {env:COVERAGE_FILE:{toxworkdir}{/}.coverage.{envname}} COVERAGE_PROCESS_START = {toxinidir}{/}pyproject.toml 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 [testenv:fix] description = format the code base to adhere to our styles, and complain about what we cannot do automatically skip_install = true deps = pre-commit>=3.2.2 pass_env = {[testenv]passenv} PROGRAMDATA 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==1.2 types-cachetools>=5.3.0.5 types-chardet>=5.0.4.3 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.10 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.31 packaging>=23.1 towncrier>=22.12 commands = python {toxinidir}/tasks/release.py --version {posargs} [testenv:dev] description = dev environment with all deps at {envdir} package = editable deps = {[testenv:release]deps} extras = docs testing commands = python -m pip list --format=columns python -c "print(r'{envpython}')"