-
-
Notifications
You must be signed in to change notification settings - Fork 433
/
tox.ini
132 lines (111 loc) · 4.15 KB
/
tox.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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, 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}: 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
# 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}
# 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}
[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/*,.treerc'
# 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 --exclude=sysmon {env:TYPEABLE}
mypy --python-version=3.13 {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