-
-
Notifications
You must be signed in to change notification settings - Fork 374
Expand file tree
/
Copy pathtox.ini
More file actions
134 lines (110 loc) · 3.26 KB
/
Copy pathtox.ini
File metadata and controls
134 lines (110 loc) · 3.26 KB
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
133
134
[tox]
min_version = 4.17.0
envlist =
build{, -minimum}
coverage-erase
test-py{3.15, 3.14, 3.13, 3.12, 3.11, 3.10}{-chardet, }
coverage-report
coverage-html
docs
mypy-py{3.15, 3.14, 3.13, 3.12, 3.11, 3.10}
labels =
update = update-{pre_commit, requirements}
[testenv]
package = wheel
wheel_build_env = build_wheel
commands =
python -c "import sys; sys.exit('This is not a runnable tox environment')"
[testenv:build{, -minimum}]
description =
Test building the project
minimum: (minimum requirements)
base_python =
minimum: py3.10
skip_install = true
recreate = true
deps =
build
twine
minimum: poetry-core==2.0.0
!minimum: poetry-core<3
commands =
python --version
python -m build --outdir {envdir}/dist/ --no-isolation
twine check --strict {envdir}/dist/*
[testenv:test-py{3.15, 3.14, 3.13, 3.12, 3.11, 3.10}{-chardet, }]
description = Run the test suite ({env_name})
depends =
coverage-erase
deps =
-r requirements/test/requirements.txt
chardet: chardet
commands =
coverage run -m pytest {posargs:}
[testenv:coverage_base]
description = Base config for coverage-* environments
deps = -r requirements/test/requirements-coverage.txt
skip_install = true
[testenv:coverage-erase]
description = Erase coverage data files
base = coverage_base
commands =
coverage erase
[testenv:coverage-report]
description = Display a coverage report and verify the fail-under value
base = coverage_base
depends = test-py{3.15, 3.14, 3.13, 3.12, 3.11, 3.10}{-chardet, }
commands_pre =
- coverage combine
commands =
coverage report
[testenv:coverage-html]
description = Create an HTML coverage report
base = coverage_base
depends = coverage-report
commands =
coverage html --fail-under=0
[testenv:docs]
description = Build and lint the documentation
skip_install = True
base_python = py3.13
deps = -r requirements/docs/requirements.txt
commands =
sphinx-build -EWq -j auto --keep-going docs/ build/docs/
[testenv:mypy-py{3.15, 3.14, 3.13, 3.12, 3.11, 3.10}]
description = Test type annotations on Python {py_dot_ver}
deps = -r requirements/mypy/requirements.txt
set_env =
MYPY_FORCE_COLOR=1
commands =
mypy {posargs:}
[testenv:update_base]
description = Base for update-* environments
recreate = true
skip_install = true
base_python = py3.14
[testenv:update-requirements]
description = Update requirements
base = update_base
deps =
poetry
poetry-plugin-export
commands =
# Update test requirements
poetry update --directory="requirements/docs" --lock
poetry export --directory="requirements/docs" --output="requirements.txt" --without-hashes
poetry update --directory="requirements/mypy" --lock
poetry export --directory="requirements/mypy" --output="requirements.txt" --without-hashes
poetry update --directory="requirements/test" --lock
poetry export --directory="requirements/test" --output="requirements.txt" --without-hashes
poetry export --directory="requirements/test" --output="requirements-coverage.txt" --without-hashes --only="coverage"
[testenv:update-pre_commit]
description = Update pre-commit hooks
base = update_base
deps =
prek
upadup
commands =
# Update pre-commit hook versions
prek autoupdate --freeze --cooldown-days 20
upadup --freeze