-
Notifications
You must be signed in to change notification settings - Fork 1
/
tox.ini
164 lines (155 loc) · 4.76 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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
## Configuration for tox.
## Needs tox installed in the system python.
##
## doctest: Run the sage doctests. From the SAGE_ROOT/src directory:
##
## $ tox
##
## Arguments are passed on to "sage -t":
##
## $ tox sage/geometry
##
## To pass on options to "sage -t", use -- to separate it from tox options:
##
## $ tox -- --verbose --optional=sage,pynormaliz --long sage/geometry
##
## pycodestyle:
##
## $ tox -e pycodestyle
##
## Note that on the first run, tox automatically installs pycodestyle
## in a virtual environment.
##
[tox]
envlist = pycodestyle-minimal, relint, rst
skipsdist = true
requires =
# For the renamed "allowlist_externals" keyword
tox>=3.18
[testenv]
passenv =
local: SKIP_BOOTSTRAP
local: SKIP_SYSTEM_PKG_INSTALL
local: SKIP_CONFIGURE
[testenv:pycodestyle]
description =
check against the Python style conventions of PEP8
deps = pycodestyle
commands = pycodestyle
[testenv:pycodestyle-minimal]
## Note that the the pycodestyle linter provided by vscode checks against the
## same minimal conventions as defined below, see the file SAGE_ROOT/.vscode/settings.json.
description =
check against Sage's minimal style conventions
# Check for the following issues:
# E111: indentation is not a multiple of four
# E211: whitespace before '('
# E271: multiple spaces after keyword
# E306: expected 1 blank line before a nested definition, found 0
# E401: multiple imports on one line
# E502 the backslash is redundant between brackets
# E701: multiple statements on one line (colon)
# E702: multiple statements on one line (semicolon)
# E703: statement ends with a semicolon
# E711: comparison to None should be ‘if cond is None:’
# E712: comparison to True should be ‘if cond is True:’ or ‘if cond:’
# E713 test for membership should be ’not in’
# E721: do not compare types, use isinstance()
# E722: do not use bare except, specify exception instead
# W291: trailing whitespace
# W293: blank line contains whitespace
# W391: blank line at end of file
# W605: invalid escape sequence ‘x’
# See https://pycodestyle.pycqa.org/en/latest/intro.html#error-codes
deps = pycodestyle
commands = pycodestyle --select E111,E211,E271,E303,E306,E401,E502,E701,E702,E703,E714,W291,W293,W391,W605,E711,E712,E713,E721,E722 {posargs:{toxinidir}/oriented_matroids/}
pycodestyle --select E111,E306,E401,E703,W293,W391,W605,E712,E713,E714,E721,E722 --filename *.pyx oriented_matroids {posargs:{toxinidir}/oriented_matroids/}
[pycodestyle]
max-line-length = 160
statistics = True
[testenv:relint]
description =
check whether some forbidden patterns appear
(includes all patchbot pattern-exclusion plugins)
# https://github.com/codingjoe/relint
# The patterns are in .relint.yml
deps = relint
allowlist_externals = find
commands = find {posargs:{toxinidir}/oriented_matroids/} \
-name "*\#*" -prune -o \
-name "*.a" -prune -o \
-name "*.bak" -prune -o \
-name "*.bz2" -prune -o \
-name "*.dia" -prune -o \
-name "*.gz" -prune -o \
-name "*.ico" -prune -o \
-name "*.inv" -prune -o \
-name "*.JPEG" -prune -o \
-name "*.jpeg" -prune -o \
-name "*.JPG" -prune -o \
-name "*.jpg" -prune -o \
-name "*.log" -prune -o \
-name "*.o" -prune -o \
-name "*.orig" -prune -o \
-name "*.PDF" -prune -o \
-name "*.pdf" -prune -o \
-name "*.PNG" -prune -o \
-name "*.png" -prune -o \
-name "*.pyc" -prune -o \
-name "*.so" -prune -o \
-name "*.sobj" -prune -o \
-name "*.sws" -prune -o \
-name "*.tar" -prune -o \
-name "*.tgz" -prune -o \
-name "*.xz" -prune -o \
-name "*.zip" -prune -o \
-name "*~*" -prune -o \
-name ".DS_Store" -prune -o \
-exec relint -c {toxinidir}/.relint.yml \{\} +
[testenv:rst]
description =
validate Python docstrings markup as reStructuredText
deps = flake8-rst-docstrings
commands = flake8 --select=RST {posargs:{toxinidir}/oriented_matroids/}
[flake8]
rst-roles =
# Sphinx
doc,
file,
ref,
# Sphinx - https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-standard-domain (selection)
envvar,
# Sphinx - https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-python-objects
attr,
class,
const,
data,
exc,
func,
kbd,
meth,
mod,
obj,
# from src/sage/misc/sagedoc.py
arxiv,
doi,
mathscinet,
oeis,
pari,
python,
trac,
issue,
wikipedia
rst-directives =
attribute,
automethod,
autofunction,
toctree,
MODULEAUTHOR,
ONLY,
PLOT,
SEEALSO,
TODO
extend-ignore =
# Ignore RST306 Unknown target name -- because of references to the global bibliography
RST306