[tox] skip_missing_interpreters=true envlist = cov-clean, lint, {py37,py38,py39,py310,py311}-{requests-urllib3-1,requests-urllib3-2,httplib2,urllib3-1,urllib3-2,tornado4,boto3,aiohttp,httpx}, {pypy3}-{requests-urllib3-1,requests-urllib3-2,httplib2,urllib3-1,urllib3-2,tornado4,boto3}, {py310}-httpx019, cov-report [gh-actions] python = 3.7: py37 3.8: py38 3.9: py39 3.10: py310, lint 3.11: py311 pypy-3: pypy3 # Coverage environment tasks: cov-clean and cov-report # https://pytest-cov.readthedocs.io/en/latest/tox.html [testenv:cov-clean] deps = coverage skip_install=true commands = coverage erase [testenv:cov-report] deps = coverage skip_install=true commands = coverage html coverage report --fail-under=90 [testenv:lint] skipsdist = True commands = black --version black --check --diff . isort --version isort . --check --diff flake8 --version flake8 --exclude=./docs/conf.py,./.tox/,./venv/ pyflakes ./docs/conf.py deps = flake8 black isort basepython = python3.10 [testenv:docs] # Running sphinx from inside the "docs" directory # ensures it will not pick up any stray files that might # get into a virtual environment under the top-level directory # or other artifacts under build/ changedir = docs # The only dependency is sphinx # If we were using extensions packaged separately, # we would specify them here. # A better practice is to specify a specific version of sphinx. deps = sphinx sphinx_rtd_theme # This is the sphinx command to generate HTML. # In other circumstances, we might want to generate a PDF or an ebook commands = sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html # We use Python 3.7. Tox sometimes tries to autodetect it based on the name of # the testenv, but "docs" does not give useful clues so we have to be explicit. basepython = python3.7 [testenv] # Need to use develop install so that paths # for aggregate code coverage combine usedevelop=true commands = ./runtests.sh --cov=./vcr --cov-branch --cov-report=xml --cov-append {posargs} allowlist_externals = ./runtests.sh deps = Werkzeug==2.0.3 pytest pytest-httpbin>=1.0.1 pytest-cov PyYAML ipaddress requests: requests>=2.22.0 httplib2: httplib2 urllib3-1: urllib3<2 urllib3-2: urllib3<3 boto3: boto3 aiohttp: aiohttp aiohttp: pytest-asyncio aiohttp: pytest-aiohttp httpx: httpx {py37,py38,py39,py310}-{httpx}: httpx {py37,py38,py39,py310}-{httpx}: pytest-asyncio httpx: httpx>0.19 # httpx==0.19 is the latest version that supports allow_redirects, newer versions use follow_redirects httpx019: httpx==0.19 {py37,py38,py39,py310}-{httpx}: pytest-asyncio depends = lint,{py37,py38,py39,py310,py311,pypy3}-{requests-urllib3-1,requests-urllib3-2,httplib2,urllib3-1,urllib3-2,tornado4,boto3},{py37,py38,py39,py310,py311}-{aiohttp},{py37,py38,py39,py310,py311}-{httpx}: cov-clean cov-report: lint,{py37,py38,py39,py310,py311,pypy3}-{requests-urllib3-1,requests-urllib3-2,httplib2,urllib3-1,urllib3-2,tornado4,boto3},{py37,py38,py39,py310,py311}-{aiohttp} passenv = AWS_ACCESS_KEY_ID AWS_DEFAULT_REGION AWS_SECRET_ACCESS_KEY [flake8] max_line_length = 110