# To run Tox against all supported Python interpreters, you can set:
#
# export TOXENV='py3{5,6,7,8},pypy,pypy3'

[tox]
envlist=python
minversion = 3.2
requires =
	tox-pip-version >= 0.0.6

[helpers]
# Custom pip behavior
pip = python {toxinidir}/tools/tox_pip.py

[testenv]
pip_version = pip
install_command = {[helpers]pip} install {opts} {packages}
list_dependencies_command = {[helpers]pip} freeze --all
setenv =
	COVERAGE_FILE={toxworkdir}/.coverage.{envname}
# TODO: The passed environment variables came from copying other tox.ini files
# These should probably be individually annotated to explain what needs them.
passenv=APPDATA HOMEDRIVE HOMEPATH windir Program* CommonProgram* VS* APPVEYOR APPVEYOR_* CI CODECOV_* TRAVIS TRAVIS_* NETWORK_REQUIRED
commands = pytest {posargs}
usedevelop=True
extras =
	tests


[testenv:pypy{,3}]
commands = pytest --no-cov {posargs}


[testenv:coverage]
description=Combine coverage data and create report
deps=coverage
skip_install=True
changedir={toxworkdir}
setenv=COVERAGE_FILE=.coverage
commands=coverage erase
         coverage combine
         coverage {posargs:xml}

[testenv:codecov]
description=[Only run on CI]: Upload coverage data to codecov
deps=codecov
skip_install=True
commands=codecov -X gcov --file {toxworkdir}/coverage.xml

[testenv:docs]
extras =
        docs
        testing
changedir = docs
commands =
        python -m sphinx . {toxinidir}/build/html

[testenv:finalize]
skip_install = True
deps =
	towncrier
	bump2version
passenv = *
commands =
	python tools/finalize.py

[testenv:release]
skip_install = True
deps =
	wheel
	twine[keyring]>=1.13
	path
	jaraco.tidelift
passenv =
	TWINE_PASSWORD
	TIDELIFT_TOKEN
setenv =
	TWINE_USERNAME = {env:TWINE_USERNAME:__token__}
commands =
	python -m bootstrap
	python -c "import path; path.Path('dist').rmtree_p()"
	python setup.py release
	python -m twine upload dist/*
	python -m jaraco.tidelift.publish-release-notes
