[testenv]
description = perform primary checks (tests, style, types, coverage)
deps =
setenv =
	PYTHONWARNDEFAULTENCODING = 1
commands =
	pytest {posargs}
usedevelop = True
extras =
	test
	check
	cover
	enabler
	type

[testenv:diffcov]
description = run tests and check that diff from main is covered
deps =
	{[testenv]deps}
	diff-cover
commands =
	pytest {posargs} --cov-report xml
	diff-cover coverage.xml --compare-branch=origin/main --format html:diffcov.html
	diff-cover coverage.xml --compare-branch=origin/main --fail-under=100

[testenv:docs]
description = build the documentation
extras =
	doc
	test
changedir = docs
commands =
	python -m sphinx -W --keep-going . {toxinidir}/build/html
	python -m sphinxlint

[testenv:finalize]
description = assemble changelog and tag a release
skip_install = True
deps =
	towncrier
	jaraco.develop >= 7.23
pass_env = *
commands =
	python -m jaraco.develop.finalize


[testenv:release]
description = publish the package to PyPI and GitHub
skip_install = True
deps =
	build
	twine>=3
	jaraco.develop>=7.1
pass_env =
	TWINE_PASSWORD
	GITHUB_TOKEN
setenv =
	TWINE_USERNAME = {env:TWINE_USERNAME:__token__}
commands =
	python -c "import shutil; shutil.rmtree('dist', ignore_errors=True)"
	python -m build
	python -m twine upload dist/*
	python -m jaraco.develop.create-github-release
