| # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
| # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt |
| |
| [tox] |
| # When changing this list, be sure to check the [gh] list below. |
| # PYVERSIONS |
| envlist = py3{9,10,11,12,13,14}, pypy3, anypy, doc, lint, mypy |
| skip_missing_interpreters = {env:COVERAGE_SKIP_MISSING_INTERPRETERS:True} |
| toxworkdir = {env:TOXWORKDIR:.tox} |
| |
| [testenv] |
| usedevelop = True |
| download = True |
| extras = |
| toml |
| |
| # PYVERSIONS |
| deps = |
| -r requirements/pip.pip |
| -r requirements/pytest.pip |
| py3{9,10,11}: -r requirements/light-threads.pip |
| |
| # Windows can't update the pip version with pip running, so use Python |
| # to install things. |
| install_command = python -m pip install -U {opts} {packages} |
| |
| passenv = * |
| setenv = |
| pypy3{,9,10,11}: COVERAGE_TEST_CORES=pytrace |
| # For some tests, we need .pyc files written in the current directory, |
| # so override any local setting. |
| PYTHONPYCACHEPREFIX= |
| # If we ever need a stronger way to suppress warnings: |
| #PYTHONWARNINGS=ignore:removed in Python 3.14; use ast.Constant:DeprecationWarning |
| # Disable CPython's color output |
| PYTHON_COLORS=0 |
| |
| # $set_env.py: COVERAGE_PIP_ARGS - Extra arguments for `pip install` |
| # `--no-build-isolation` will let tox work with no network. |
| commands = |
| # Create tests/zipmods.zip |
| python igor.py zip_mods |
| |
| # Remove the C extension so that we can test the PyTracer |
| python igor.py remove_extension |
| |
| # Test with the PyTracer |
| python igor.py test_with_core pytrace {posargs} |
| |
| # Build the C extension and test with the CTracer |
| python setup.py --quiet build_ext --inplace |
| python -m pip install {env:COVERAGE_PIP_ARGS} -q -e . |
| python igor.py test_with_core ctrace {posargs} |
| |
| py3{12,13,14},anypy: python igor.py test_with_core sysmon {posargs} |
| |
| [testenv:anypy] |
| # $set_env.py: COVERAGE_ANYPY - The custom Python for "tox -e anypy" |
| # For running against my own builds of CPython, or any other specific Python. |
| basepython = {env:COVERAGE_ANYPY} |
| |
| [testenv:doc] |
| # One of the PYVERSIONS, that's currently supported by Sphinx. Make sure it |
| # matches the `python:version:` in the .readthedocs.yml file, and the |
| # python-version in the `doc` job in the .github/workflows/quality.yml workflow. |
| basepython = python3.11 |
| |
| # Build the docs so we know if they are successful. We build twice: once with |
| # -q to get all warnings, and once with -QW to get a success/fail status |
| # return. |
| deps = |
| -r doc/requirements.pip |
| allowlist_externals = |
| make |
| commands = |
| # If this command fails, see the comment at the top of doc/cmd.rst |
| python -m cogapp -cP --check --verbosity=1 doc/*.rst |
| doc8 -q --ignore-path 'doc/_*' doc CHANGES.rst README.rst |
| sphinx-lint doc CHANGES.rst README.rst |
| sphinx-build -b html -aEnqW doc doc/_build/html |
| rst2html --verbose --strict README.rst doc/_build/README.html |
| - sphinx-build -b html -b linkcheck -aEnq doc doc/_build/html |
| - sphinx-build -b html -b linkcheck -aEnQW doc doc/_build/html |
| |
| [testenv:lint] |
| # Minimum of PYVERSIONS |
| basepython = python3.9 |
| deps = |
| -r requirements/dev.pip |
| |
| setenv = |
| {[testenv]setenv} |
| LINTABLE=coverage tests doc ci igor.py setup.py __main__.py |
| |
| commands = |
| python -m tabnanny {env:LINTABLE} |
| # If this command fails, see the comment at the top of doc/cmd.rst |
| python -m cogapp -cP --check --verbosity=1 doc/*.rst |
| python -m cogapp -cP --check --verbosity=1 .github/workflows/*.yml |
| python -m pylint -j 0 --notes= --ignore-paths 'doc/_build/.*' {env:LINTABLE} |
| check-manifest --ignore 'doc/sample_html/*' |
| # If 'build -q' becomes a thing (https://github.com/pypa/build/issues/188), |
| # this can be simplified: |
| python igor.py quietly "python -m build" |
| twine check dist/* |
| |
| [testenv:mypy] |
| basepython = python3.9 |
| |
| deps = |
| -r requirements/mypy.pip |
| |
| setenv = |
| {[testenv]setenv} |
| TYPEABLE=coverage tests benchmark/benchmark.py |
| |
| commands = |
| # PYVERSIONS |
| mypy --python-version=3.9 --strict --exclude=sysmon --exclude=bytecode {env:TYPEABLE} |
| mypy --python-version=3.13 --strict {env:TYPEABLE} |
| |
| [gh] |
| # https://pypi.org/project/tox-gh/ |
| # PYVERSIONS |
| python = |
| 3.9 = py39 |
| 3.10 = py310 |
| 3.11 = py311 |
| 3.12 = py312 |
| 3.13 = py313 |
| 3.14 = py314 |
| pypy-3 = pypy3 |