-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
143 lines (128 loc) · 3.87 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
133
134
135
136
137
138
139
140
141
142
143
[tox]
envlist =
coverage-erase
py{3.14, 3.13, 3.12, 3.11, 3.10, 3.9}
pypy{3.11, 3.10}
coverage-report
build
mypy
docs
docs-integrations
labels =
update=update
prep-release=prep-release
[testenv]
package = wheel
wheel_build_env = build_wheel
depends =
py{3.14, 3.13, 3.12, 3.11, 3.10, 3.9}, pypy{3.11, 3.10}: coverage-erase
deps = -r requirements/test/requirements.txt
commands =
coverage run -m pytest
[testenv:coverage-erase]
deps =
coverage[toml]
skip_install = true
commands =
coverage erase
[testenv:coverage-report{,-ci}]
depends =
py{3.14, 3.13, 3.12, 3.11, 3.10, 3.9}
pypy{3.11, 3.10}
deps =
coverage[toml]
skip_install = true
commands_pre =
- coverage combine
commands =
coverage report
commands_post =
!ci: coverage html --fail-under=0
[testenv:mypy]
deps = -r requirements/mypy/requirements.txt
extras =
cli
setenv =
MYPY_FORCE_COLOR=1
commands = mypy
[testenv:docs]
base_python = py3.12
skip_install = true
deps = -r requirements/docs/requirements.txt
commands =
sphinx-build -aWEnqb html docs/ build/docs
[testenv:docs-integrations]
description = Test integration doc examples
deps = -r requirements/docs-integrations/requirements.txt
skip_install = true
commands =
# Verify isort integrations in the docs.
isort docs/isort/custom-section/sorted.py --check --settings docs/isort/custom-section/config.ini
isort docs/isort/custom-section/sorted.py --check --settings docs/isort/custom-section/config.toml
isort docs/isort/force-to-top/sorted.py --check --thirdparty sqliteimport --settings docs/isort/force-to-top/config.ini
isort docs/isort/force-to-top/sorted.py --check --thirdparty sqliteimport --settings docs/isort/force-to-top/config.toml
# Verify flake8 integrations in the docs.
flake8 --config docs/flake8/empty-flake8-config.ini docs/flake8/example-noqa.py
[testenv:build]
base_python = py3.12
skip_install = true
deps =
build
twine
uv
commands =
- python assets/validate-readme-banner-url.py
python -m build --installer uv --outdir dist/
twine check --strict dist/*
[testenv:update]
base_python = py3.13
description = Update dependencies, requirements files, and pre-commit hooks
recreate = true
skip_install = true
deps =
poetry
poetry-plugin-export
pre-commit
upadup
commands =
# Update test requirements
poetry update --directory="requirements/docs" --lock
poetry export --directory="requirements/docs" --output="requirements.txt" --without-hashes
poetry update --directory="requirements/docs-integrations" --lock
poetry export --directory="requirements/docs-integrations" --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/regenerate-test-projects" --lock
poetry export --directory="requirements/regenerate-test-projects" --output="requirements.txt" --without-hashes
poetry update --directory="requirements/test" --lock
poetry export --directory="requirements/test" --output="requirements.txt" --without-hashes
# Update pre-commit hook versions
pre-commit autoupdate
upadup
[testenv:prep-release]
description = Make the changes needed to create a new release PR
skip_install = true
deps =
poetry
scriv
passenv =
VERSION
commands =
poetry version "{env:VERSION}"
scriv collect
[testenv:regenerate_test_projects]
base_python = py3.13
description = Regenerate installed projects used by the test suite
recreate = true
skip_install = true
deps = -r requirements/regenerate-test-projects/requirements.txt
commands =
python tests/regenerate-test-projects.py
[flake8]
max-line-length = 80
extend-select = B950
extend-ignore = E203,E501,E701
extend-exclude =
demo.py,
docs/flake8/*.py,
docs/isort/*.py