-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
136 lines (125 loc) · 2.98 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]
minversion = 3.15
envlist = default
isolated_build = True
[testenv]
# install pytest in the virtualenv where commands will be executed
deps = pytest
extras = dev
commands =
# NOTE: you can run any command line tool here - not just tests
pytest
[testenv:debug]
description = manual test run
skipsdist = false
skip_install = false
changedir = {toxinidir}
commands =
hpl -o json -p "globally: no a {data < 0}"
[testenv:grammars]
description = assemble Lark grammars into a Python module
skipsdist = true
skip_install = true
changedir = {toxinidir}
commands =
python scripts/build_grammars.py
[testenv:typecheck]
description = invoke mypy to typecheck the source code
skipsdist = true
skip_install = true
changedir = {toxinidir}
passenv =
TERM
# ^ ensure colors
deps =
mypy
commands =
python -m mypy --install-types --non-interactive {posargs:src}
[testenv:lint]
description = invoke flake8 to ensure PEP8 compatibility
skipsdist = true
skip_install = true
deps =
flake8
flake8-black
flake8-bugbear
flake8-docstrings
flake8-isort
flake8-quotes
pep8-naming
commands =
flake8 {posargs:.}
[testenv:format]
description = run automatic formatting tools
skipsdist = true
skip_install = true
deps =
black
isort
commands =
isort {posargs:.}
black {posargs:.}
[testenv:{build,clean}]
description =
build: Build the package in isolation according to PEP517, see https://github.com/pypa/build
clean: Remove old distribution files and temporary build artifacts (./build and ./dist)
skip_install = True
changedir = {toxinidir}
deps =
build: build[virtualenv]
commands =
clean: python -c 'from shutil import rmtree; rmtree("build", True); rmtree("dist", True)'
build: python -m build {posargs:--wheel}
[testenv:publish]
description =
Publish the package you have been developing to a package index server.
By default, it uses testpypi. If you really want to publish your package
to be publicly accessible in PyPI, use the `-- --repository pypi` option.
skip_install = True
changedir = {toxinidir}
passenv =
TWINE_USERNAME
TWINE_PASSWORD
TWINE_REPOSITORY
deps = twine
commands =
python -m twine check dist/*
python -m twine upload {posargs:--repository testpypi} dist/*
[pytest]
testpaths = tests
addopts = --strict-markers --showlocals --verbose
[flake8]
# black compatibility
max-line-length = 100
show-source = True
# E203 and W503 have edge cases handled by black
ignore =
# missing docstring (errors D100 - D107)
D10,
# whitespace before ':'
E203,
# function name should be lowercase
N802,
# argument name should be lowercase
N803,
# variable in function should be lowercase
N806,
# line break before binary operator
W503,
per-file-ignores = __init__.py:F401
exclude =
.git,
__pycache__,
.tox,
.mypy_cache,
.eggs,
*.egg,
.env,
.venv,
env,
venv,
build,
dist,
docs/conf.py,
**/_unused.py,
black-config = pyproject.toml