[tox] requires = tox>=4.2 env_list = fix py311 py310 py39 py38 py37 pypy3 coverage readme docs skip_missing_interpreters = true [testenv] description = run tests with {basepython} package = wheel wheel_build_env = .pkg extras = test pass_env = CI_RUN PYTEST_* TERM set_env = COVERAGE_FILE = {toxworkdir}/.coverage.{envname} COVERAGE_PROCESS_START = {toxinidir}/pyproject.toml PYTHONWARNDEFAULTENCODING = 1 _COVERAGE_SRC = {envsitepackagesdir}/virtualenv commands = coverage erase coverage run -m pytest {posargs:--junitxml {toxworkdir}/junit.{envname}.xml tests --int} coverage combine coverage report --skip-covered --show-missing coverage xml -o {toxworkdir}/coverage.{envname}.xml coverage html -d {envtmpdir}/htmlcov --show-contexts --title virtualenv-{envname}-coverage [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 commands = pre-commit run --all-files --show-diff-on-failure [testenv:readme] description = check that the long description is valid (need for PyPI) skip_install = true deps = build>=0.10 twine>=4.0.2 extras = commands = python -m build -o {envtmpdir} --wheel --sdist . twine check {envtmpdir}/* [testenv:docs] description = build documentation extras = docs commands = sphinx-build -d "{envtmpdir}/doctree" docs "{toxworkdir}/docs_out" --color -b html {posargs:-W} python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))' [testenv:upgrade] description = upgrade pip/wheels/setuptools to latest skip_install = true deps = black>=23.3 pass_env = UPGRADE_ADVISORY change_dir = {toxinidir}/tasks commands = python upgrade_wheels.py [testenv:release] description = do a release, required posarg of the version number deps = gitpython>=3.1.31 packaging>=23.1 towncrier>=22.12 change_dir = {toxinidir}/tasks commands = python release.py --version {posargs} [testenv:dev] description = generate a DEV environment package = editable extras = docs test commands = python -m pip list --format=columns python -c 'import sys; print(sys.executable)' [testenv:zipapp] description = generate a zipapp skip_install = true deps = packaging>=23.1 commands = python tasks/make_zipapp.py