-
-
Notifications
You must be signed in to change notification settings - Fork 276
Expand file tree
/
Copy pathtox.ini
More file actions
128 lines (107 loc) · 3.45 KB
/
tox.ini
File metadata and controls
128 lines (107 loc) · 3.45 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
[tox]
requires =
tox>=4.51.0
tox-uv
env_list =
pre-commit,
3.1{0-4}-{tests,mypy}
3.1{0,3}-tests-{colorama,be,rich},
typing-{mypy,pyright,ty,pyrefly},
docs-{sponsors,build,doctests},
coverage-{combine,report}
[testenv]
package = wheel
wheel_build_env = .pkg
dependency_groups =
tests: tests
mypy: typing
commands =
tests: pytest {posargs}
mypy: mypy tests/typing
# Run oldest and latest under Coverage.
# Currently we're tied to 3.13 b/c better-exceptions doesn't run on later
# versions.
[testenv:3.1{0,3}-tests{,-colorama,-be,-rich}]
deps =
coverage[toml]
3.13: twisted
colorama: colorama
rich: rich
be: better-exceptions
commands = coverage run -m pytest {posargs}
# Split combine/report in 2 to avoid excessive "Combined data file ..." output.
[testenv:coverage-combine]
base_python_file = .python-version-default
depends = *-tests*
skip_install = true
deps = coverage
commands = coverage combine
[testenv:coverage-report]
base_python_file = .python-version-default
depends = coverage-combine
parallel_show_output = true
skip_install = true
deps = coverage
commands = coverage report
[testenv:docs-{build,doctests,linkcheck}]
# Keep base_python in sync with ci.yml/docs and .readthedocs.yaml.
base_python = 3.14
dependency_groups = docs
commands =
# N.B. doctests is not a nitpicky as build -- we need to run both in CI!
build: sphinx-build -n -T -W -b html -d {envtmpdir}/doctrees docs {posargs:docs/_build/}html
doctests: sphinx-build -n -T -W -b doctest -d {envtmpdir}/doctrees docs {posargs:docs/_build/}html
linkcheck: sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees docs docs/_build/html
[testenv:docs-watch]
package = editable
base_python = {[testenv:docs-build]base_python}
dependency_groups = {[testenv:docs-build]dependency_groups}
deps = watchfiles
commands =
watchfiles \
--ignore-paths docs/_build/ \
'sphinx-build -W -n --jobs auto -b html -d {envtmpdir}/doctrees docs docs/_build/html' \
src \
docs
[testenv:docs-sponsors]
description = Ensure sponsor logos are up to date.
deps = cogapp
commands = cog -rP README.md docs/index.md
[testenv:pre-commit]
skip_install = true
deps = prek
commands = prek run --all-files
[testenv:typing-{pyright,ty,mypy,pyrefly}]
description = Type-check the package.
base_python_file = .python-version-default
dependency_groups = typing
deps =
pyrefly: pyrefly
pyright: pyright
ty: ty
commands =
# Mypy API checks need to happen per-Python version.
mypy: mypy src
pyrefly: pyrefly check
pyright: pyright tests/typing
ty: ty check
[testenv:color-force]
help = A visual check that FORCE_COLOR is working.
set_env = FORCE_COLOR=1
commands = python -c "import structlog; structlog.get_logger().warning('should be colorful')"
[testenv:color-no]
help = A visual check that NO_COLOR is working.
set_env = NO_COLOR=1
commands = python -c "import structlog; structlog.get_logger().warning('should be plain')"
[testenv:docset]
deps = doc2dash
dependency_groups = docs
allowlist_externals =
rm
cp
tar
commands =
rm -rf structlog.docset structlog.tgz docs/_build
sphinx-build -n -T -W -b html -d {envtmpdir}/doctrees docs docs/_build/html
doc2dash --index-page index.html --icon docs/_static/docset-icon.png --icon-2x docs/_static/docset-icon@2x.png --online-redirect-url https://www.structlog.org/en/latest/ docs/_build/html
tar --exclude='.DS_Store' -cvzf structlog.tgz structlog.docset