blob: e65ee3dc9d1553b315ac8ea59b8e5b79c7850ea2 (
plain)
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
144
145
146
147
148
149
150
151
152
|
[tox]
minversion = 3.14.0
envlist =
fix_lint
py38
py37
py36
py35
py34
py27
pypy
pypy3
coverage
readme
docs
isolated_build = true
skip_missing_interpreters = true
[testenv]
description = run tests with {basepython}
setenv =
COVERAGE_FILE = {toxworkdir}/.coverage.{envname}
COVERAGE_PROCESS_START = {toxinidir}/.coveragerc
_COVERAGE_SRC = {envsitepackagesdir}/virtualenv
PYTHONIOENCODING=utf-8
{py34,py27,pypy, upgrade}: PYTHONWARNINGS=ignore:DEPRECATION::pip._internal.cli.base_command
{pypy,py27}: PYTEST_XDIST = 0
passenv = https_proxy http_proxy no_proxy HOME PYTEST_* PIP_* CI_RUN TERM
extras = testing
install_command = python -m pip install {opts} {packages} --disable-pip-version-check
commands =
python -m coverage erase
python -m coverage run -m pytest \
--junitxml {toxworkdir}/junit.{envname}.xml \
{posargs:tests --int --timeout 600 -n {env:PYTEST_XDIST:auto}}
python -m coverage combine
python -m coverage report --skip-covered --show-missing
python -m coverage xml -o {toxworkdir}/coverage.{envname}.xml
python -m coverage html -d {envtmpdir}/htmlcov
[testenv:coverage]
description = [run locally after tests]: combine coverage data and create report;
generates a diff coverage against origin/master (can be changed by setting DIFF_AGAINST env var)
deps =
coverage >= 5.0.1
diff_cover >= 3
extras =
skip_install = True
passenv = DIFF_AGAINST
setenv =
COVERAGE_FILE={toxworkdir}/.coverage
commands =
python -m coverage combine
python -m coverage report --skip-covered --show-missing
python -m coverage xml -o {toxworkdir}/coverage.xml
python -m coverage html -d {toxworkdir}/htmlcov
python -m diff_cover.diff_cover_tool --compare-branch {env:DIFF_AGAINST:origin/master} {toxworkdir}/coverage.xml
depends =
py38
py37
py36
py35
py34
py27
pypy
pypy3
parallel_show_output = True
[testenv:docs]
basepython = python3.8
description = build documentation
extras = docs
commands =
python -c 'import glob; import subprocess; subprocess.call(["proselint"] + glob.glob("docs/*.rst") + glob.glob("docs/**/*.rst"))'
sphinx-build -d "{envtmpdir}/doctree" docs "{toxworkdir}/docs_out" --color -b html {posargs}
python -c 'import pathlib; print("documentation available under file://\{0\}".format(pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html"))'
[testenv:readme]
description = check that the long description is valid (need for PyPI)
deps =
twine >= 1.12.1
pep517 >= 0.8.2
skip_install = true
extras =
commands =
python -m pep517.build -o {envtmpdir} -b -s .
twine check {envtmpdir}/*
[testenv:upgrade]
description = upgrade pip/wheels/setuptools to latest
skip_install = true
deps =
black
passenv = UPGRADE_ADVISORY
changedir = {toxinidir}/tasks
commands = python upgrade_wheels.py
[testenv:fix_lint]
description = format the code base to adhere to our styles, and complain about what we cannot do automatically
basepython = python3.8
passenv = *
deps =
pre-commit >= 2
skip_install = True
commands =
pre-commit run --all-files --show-diff-on-failure
python -c 'import pathlib; print("hint: run \{\} install to add checks as pre-commit hook".format(pathlib.Path(r"{envdir}") / "bin" / "pre-commit"))'
[isort]
profile = black
line_length = 120
known_first_party = virtualenv
[flake8]
max-complexity = 22
max-line-length = 120
ignore = E203, W503, C901, E402
[pep8]
max-line-length = 120
[testenv:release]
description = do a release, required posarg of the version number
basepython = python3.8
passenv = *
deps =
gitpython >= 3
towncrier >= 19.9.0rc1
packaging >= 17.1
changedir = {toxinidir}/tasks
commands =
python release.py --version {posargs}
[testenv:dev]
description = generate a DEV environment
extras = testing, docs
usedevelop = True
deps =
{[testenv:release]deps}
setuptools_scm[toml]>=3.4
commands =
python -m pip list --format=columns
python -c 'import sys; print(sys.executable)'
[testenv:zipapp]
description = generate a zipapp
skip_install = true
deps =
packaging >= 20
commands =
python tasks/make_zipapp.py
|