[tox] skip_missing_interpreters=true envlist = cov-clean, lint, {py35,py36,py37,py38}-{requests,httplib2,urllib3,tornado4,boto3,aiohttp}, {pypy3}-{requests,httplib2,urllib3,tornado4,boto3}, cov-report # 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 . flake8 --version flake8 --exclude=./docs/conf.py,./.tox/ pyflakes ./docs/conf.py deps = flake8 black [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} deps = Flask mock pytest pytest-httpbin pytest-cov PyYAML ipaddress requests: requests>=2.22.0 httplib2: httplib2 urllib3: urllib3 {py35,py36}-tornado4: tornado>=4,<5 {py35,py36}-tornado4: pytest-tornado {py35,py36}-tornado4: pycurl boto3: boto3 boto3: urllib3 aiohttp: aiohttp aiohttp: pytest-asyncio aiohttp: pytest-aiohttp depends = lint,{py35,py36,py37,py38,pypy3}-{requests,httplib2,urllib3,tornado4,boto3},{py35,py36,py37,py38}-{aiohttp}: cov-clean cov-report: lint,{py35,py36,py37,py38,pypy3}-{requests,httplib2,urllib3,tornado4,boto3},{py35,py36,py37,py38}-{aiohttp} passenv = AWS_ACCESS_KEY_ID AWS_DEFAULT_REGION AWS_SECRET_ACCESS_KEY [flake8] max_line_length = 110