[tox] isolated_build = True minversion = 3.5.3 distshare = {homedir}/.tox/distshare # make sure to update environment list in travis.yml and appveyor.yml envlist = linting py36 py37 py38 py39 pypy3 py37-{pexpect,xdist,unittestextras,numpy,pluggymaster} doctesting plugins py37-freeze docs docs-checklinks [testenv] commands = {env:_PYTEST_TOX_COVERAGE_RUN:} pytest {posargs:{env:_PYTEST_TOX_DEFAULT_POSARGS:}} doctesting: {env:_PYTEST_TOX_COVERAGE_RUN:} pytest --doctest-modules --pyargs _pytest coverage: coverage combine coverage: coverage report -m passenv = USER USERNAME COVERAGE_* TRAVIS PYTEST_ADDOPTS TERM setenv = _PYTEST_TOX_DEFAULT_POSARGS={env:_PYTEST_TOX_POSARGS_DOCTESTING:} {env:_PYTEST_TOX_POSARGS_LSOF:} {env:_PYTEST_TOX_POSARGS_XDIST:} # Configuration to run with coverage similar to CI, e.g. # "tox -e py37-coverage". coverage: _PYTEST_TOX_COVERAGE_RUN=coverage run -m coverage: _PYTEST_TOX_EXTRA_DEP=coverage-enable-subprocess coverage: COVERAGE_FILE={toxinidir}/.coverage coverage: COVERAGE_PROCESS_START={toxinidir}/.coveragerc doctesting: _PYTEST_TOX_POSARGS_DOCTESTING=doc/en nobyte: PYTHONDONTWRITEBYTECODE=1 lsof: _PYTEST_TOX_POSARGS_LSOF=--lsof xdist: _PYTEST_TOX_POSARGS_XDIST=-n auto extras = testing deps = doctesting: PyYAML numpy: numpy pexpect: pexpect pluggymaster: git+https://github.com/pytest-dev/pluggy.git@master pygments unittestextras: twisted unittestextras: asynctest xdist: pytest-xdist>=1.13 {env:_PYTEST_TOX_EXTRA_DEP:} [testenv:linting] skip_install = True basepython = python3 deps = pre-commit>=1.11.0 commands = pre-commit run --all-files --show-diff-on-failure {posargs:} [testenv:mypy] extras = checkqa-mypy, testing commands = mypy {posargs:src testing} [testenv:mypy-diff] extras = checkqa-mypy, testing deps = lxml diff-cover commands = -mypy --cobertura-xml-report {envtmpdir} {posargs:src testing} diff-cover --fail-under=100 --compare-branch={env:DIFF_BRANCH:origin/{env:GITHUB_BASE_REF:master}} {envtmpdir}/cobertura.xml [testenv:docs] basepython = python3 usedevelop = True deps = -r{toxinidir}/doc/en/requirements.txt towncrier commands = python scripts/towncrier-draft-to-file.py # the '-t changelog_towncrier_draft' tags makes sphinx include the draft # changelog in the docs; this does not happen on ReadTheDocs because it uses # the standard sphinx command so the 'changelog_towncrier_draft' is never set there sphinx-build -W --keep-going -b html doc/en doc/en/_build/html -t changelog_towncrier_draft {posargs:} [testenv:docs-checklinks] basepython = python3 usedevelop = True changedir = doc/en deps = -r{toxinidir}/doc/en/requirements.txt commands = sphinx-build -W -q --keep-going -b linkcheck . _build [testenv:regen] changedir = doc/en basepython = python3 passenv = SETUPTOOLS_SCM_PRETEND_VERSION deps = dataclasses PyYAML regendoc>=0.6.1 sphinx whitelist_externals = rm make commands = # don't show hypothesis plugin info in docs, see #4602 pip uninstall hypothesis -y rm -rf /tmp/doc-exec* rm -rf {envdir}/.pytest_cache make regen [testenv:plugins] # use latest versions of all plugins, including pre-releases pip_pre=true # use latest pip and new dependency resolver (#7783) download=true install_command=python -m pip --use-feature=2020-resolver install {opts} {packages} changedir = testing/plugins_integration deps = anyio[curio,trio] django pytest-asyncio pytest-bdd pytest-cov pytest-django pytest-flakes pytest-html pytest-mock pytest-rerunfailures pytest-sugar pytest-trio pytest-twisted twisted pytest-xvfb setenv = PYTHONPATH=. # due to pytest-rerunfailures requiring 6.2+; can be removed after 6.2.0 SETUPTOOLS_SCM_PRETEND_VERSION=6.2.0a1 commands = pip check pytest bdd_wallet.py pytest --cov=. simple_integration.py pytest --ds=django_settings simple_integration.py pytest --html=simple.html simple_integration.py pytest --reruns 5 simple_integration.py pytest pytest_anyio_integration.py pytest pytest_asyncio_integration.py pytest pytest_mock_integration.py pytest pytest_trio_integration.py pytest pytest_twisted_integration.py pytest simple_integration.py --force-sugar --flakes [testenv:py37-freeze] changedir = testing/freeze deps = pyinstaller commands = {envpython} create_executable.py {envpython} tox_run.py [testenv:release] decription = do a release, required posarg of the version number basepython = python3 usedevelop = True passenv = * deps = colorama github3.py pre-commit>=1.11.0 wheel towncrier commands = python scripts/release.py {posargs} [testenv:release-on-comment] decription = do a release from a comment on GitHub usedevelop = {[testenv:release]usedevelop} passenv = {[testenv:release]passenv} deps = {[testenv:release]deps} commands = python scripts/release-on-comment.py {posargs} [testenv:publish-gh-release-notes] description = create GitHub release after deployment basepython = python3 usedevelop = True passenv = GH_RELEASE_NOTES_TOKEN GITHUB_REF GITHUB_REPOSITORY deps = github3.py pypandoc commands = python scripts/publish-gh-release-notes.py {posargs} [flake8] max-line-length = 120 extend-ignore = ; whitespace before ':' E203 ; Missing Docstrings D100,D101,D102,D103,D104,D105,D106,D107 ; Whitespace Issues D202,D203,D204,D205,D209,D213 ; Quotes Issues D302 ; Docstring Content Issues D400,D401,D401,D402,D405,D406,D407,D408,D409,D410,D411,D412,D413,D414,D415,D416,D417 [isort] ; This config mimics what reorder-python-imports does. force_single_line = 1 known_localfolder = pytest,_pytest known_third_party = test_source,test_excinfo force_alphabetical_sort_within_sections = 1