-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
tox.ini
136 lines (124 loc) · 3.53 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
[tox]
envlist = python
isolated_build = true
minversion = 3.21.0
[testenv]
description = Run test suite
commands =
{envpython} \
-m pytest \
{tty:--color=yes} \
{posargs:--cov-report=html:{envtmpdir}{/}htmlcov{/}}
deps =
covdefaults
pytest
pytest-cov
pytest-xdist
# Ref: https://github.com/tox-dev/tox/issues/1199
towncrier
isolated_build = true
package = wheel
wheel_build_env = .pkg
usedevelop = false
[testenv:build-dists]
description =
Build dists and put them into the dist{/} folder
basepython = python3
isolated_build = true
# NOTE: `package_env = none` is needed so it's possible to use `--installpkg`
# NOTE: with the main `testenv`.
# Ref: https://github.com/tox-dev/tox/issues/2442
package_env = ❌ DUMMY NON-EXISTENT ENV NAME ❌
# `usedevelop = true` overrides `skip_install` instruction, it's unwanted
usedevelop = false
skip_install = true
deps =
build ~= 1.0.0
commands =
{envpython} -c \
"import shutil; \
shutil.rmtree('{toxinidir}{/}dist{/}', ignore_errors=True)"
{envpython} -m build \
--outdir '{toxinidir}{/}dist{/}' \
{posargs:} \
'{toxinidir}'
[testenv:lint]
description =
Run the quality checks under {basepython}; run as
`SKIP=check-id1,check-id2 tox r -e pre-commit` to instruct the underlying
`pre-commit` invocation avoid running said checks; Use
`tox r -e pre-commit -- check-id1 --all-files` to select checks matching IDs
aliases{:} `tox r -e pre-commit -- mypy --all-files` will run 3 MyPy
invocations, but `tox r -e pre-commit -- mypy-py313 --all-files` runs one.
basepython = python3
commands =
{envpython} \
-m pre_commit \
run \
--color=always \
--show-diff-on-failure \
--hook-stage manual \
{posargs:--all-files}
# Print out the advice on how to install pre-commit from this env into Git:
-{envpython} -c \
'cmd = "{envpython} -m pre_commit install"; \
scr_width = len(cmd) + 10; \
sep = "=" * scr_width; \
cmd_str = " $ \{cmd\}";' \
'print(f"\n\{sep\}\nTo install pre-commit hooks into the Git repo, run:\n\n\{cmd_str\}\n\n\{sep\}\n")'
deps =
{[testenv]deps}
{[testenv:build-docs]deps}
pre-commit >= 2.6.0
pylint ~= 2.15.0
isolated_build = true
passenv =
SKIP
[testenv:build-docs]
allowlist_externals =
git
basepython = python3
depends =
make-changelog
deps =
# -r{toxinidir}{/}docs{/}requirements.txt
# FIXME: re-enable the "-r" + "-c" paradigm once the pip bug is fixed.
# Ref: https://github.com/pypa/pip/issues/9243
-r{toxinidir}{/}docs{/}requirements.in
# -c{toxinidir}{/}docs{/}requirements.txt
description = Build The Docs
commands =
# Retrieve possibly missing commits:
-git fetch --unshallow
-git fetch --tags
# Build the html docs with Sphinx:
{envpython} -m sphinx \
-j auto \
-b html \
{tty:--color} \
-a \
-n \
-W --keep-going \
-d "{temp_dir}{/}.doctrees" \
{posargs:} \
. \
"{envdir}{/}docs_out"
# Print out the output docs dir and a way to serve html:
-{envpython} -c\
'import pathlib;\
docs_dir = pathlib.Path(r"{envdir}") / "docs_out";\
index_file = docs_dir / "index.html";\
print("\n" + "=" * 120 +\
f"\n\nDocumentation available under:\n\n\
\tfile://\{index_file\}\n\nTo serve docs, use\n\n\
\t$ python3 -m http.server --directory \
\N\{QUOTATION MARK\}\{docs_dir\}\N\{QUOTATION MARK\} 0\n\n" +\
"=" * 120)'
changedir = {toxinidir}{/}docs
isolated_build = true
passenv =
SSH_AUTH_SOCK
skip_install = false
# whitelist_externals is a compatibility alias for allowlist_externals @ old tox
whitelist_externals =
git