[tox] minversion = 2.4 envlist = py27,pypy,py36,py37,py38,py39,docs,pep8,packaging isolated_build = True [testenv] extras = test ssh: ssh deps = # This must be kept in sync with .github/workflows/ci.yml coverage ./vectors randomorder: pytest-randomly passenv = ARCHFLAGS LDFLAGS CFLAGS INCLUDE LIB LD_LIBRARY_PATH USERNAME PYTHONIOENCODING OPENSSL_FORCE_FIPS_MODE commands = pip list # We use parallel mode and then combine here so that coverage.py will take # the paths like .tox/py38/lib/python3.8/site-packages/cryptography/__init__.py # and collapse them into src/cryptography/__init__.py. coverage run --parallel-mode -m pytest --capture=no --strict {posargs} coverage combine coverage report -m # This target disables coverage on pypy because of performance problems with # coverage.py on pypy. [testenv:pypy-nocoverage] basepython = pypy commands = pip list pytest --capture=no --strict {posargs} # This target disables coverage on pypy because of performance problems with # coverage.py on pypy. [testenv:pypy3-nocoverage] basepython = pypy3 commands = pip list pytest --capture=no --strict {posargs} [testenv:docs] extras = docs docstest basepython = python3 commands = sphinx-build -T -W -b html -d {envtmpdir}/doctrees docs docs/_build/html sphinx-build -T -W -b latex -d {envtmpdir}/doctrees docs docs/_build/latex sphinx-build -T -W -b doctest -d {envtmpdir}/doctrees docs docs/_build/html sphinx-build -T -W -b spelling docs docs/_build/html doc8 --allow-long-titles README.rst CHANGELOG.rst docs/ --ignore-path docs/_build/ python setup.py sdist twine check dist/* [testenv:docs-linkcheck] extras = docs basepython = python3 commands = sphinx-build -W -b linkcheck docs docs/_build/html [testenv:pep8] basepython = python3 extras = pep8test commands = flake8 . black --check . [testenv:packaging] deps = check-manifest commands = check-manifest [flake8] ignore = E203,E211,W503,W504 exclude = .tox,*.egg,.git,_build,.hypothesis select = E,W,F,N,I application-import-names = cryptography,cryptography_vectors,tests [doc8] extensions = rst [pytest] addopts = -r s markers = requires_backend_interface: this test requires a specific backend interface skip_fips: this test is not executed in FIPS mode supported: parametrized test requiring only_if and skip_message wycheproof_tests: this test runs a wycheproof fixture