|
21 | 21 | ## in a virtual environment.
|
22 | 22 | ##
|
23 | 23 | [tox]
|
24 |
| -envlist = doctest, coverage, startuptime, pycodestyle-minimal, relint, codespell, rst |
| 24 | +envlist = doctest, coverage, startuptime, pycodestyle-minimal, relint, codespell, rst, ruff-minimal |
25 | 25 | # When adding environments above, also update the delegations in SAGE_ROOT/tox.ini
|
26 | 26 | skipsdist = true
|
27 | 27 |
|
@@ -259,6 +259,66 @@ description =
|
259 | 259 | deps = cython-lint
|
260 | 260 | commands = cython-lint --no-pycodestyle {posargs:{toxinidir}/sage/}
|
261 | 261 |
|
| 262 | +[testenv:ruff] |
| 263 | +description = |
| 264 | + check against Python style conventions |
| 265 | +deps = ruff |
| 266 | +passenv = RUFF_OUTPUT_FORMAT |
| 267 | +commands = ruff check {posargs:{toxinidir}/sage/} |
| 268 | +
|
| 269 | +[testenv:ruff-minimal] |
| 270 | +description = |
| 271 | + check against Sage's minimal style conventions |
| 272 | +deps = ruff |
| 273 | +# https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 |
| 274 | +passenv = RUFF_OUTPUT_FORMAT |
| 275 | +# Output of currently failing, from "./sage -tox -e ruff -- --statistics": |
| 276 | +# |
| 277 | +# 3579 PLR2004 [ ] Magic value used in comparison, consider replacing `- 0.5` with a constant variable |
| 278 | +# 3498 I001 [*] Import block is un-sorted or un-formatted |
| 279 | +# 2146 F401 [*] `.PyPolyBoRi.Monomial` imported but unused |
| 280 | +# 1964 E741 [ ] Ambiguous variable name: `I` |
| 281 | +# 1676 F821 [ ] Undefined name `AA` |
| 282 | +# 1513 PLR0912 [ ] Too many branches (102 > 12) |
| 283 | +# 1159 PLR0913 [ ] Too many arguments in function definition (10 > 5) |
| 284 | +# 815 E402 [ ] Module level import not at top of file |
| 285 | +# 671 PLR0915 [ ] Too many statements (100 > 50) |
| 286 | +# 483 PLW2901 [ ] Outer `for` loop variable `ext` overwritten by inner `for` loop target |
| 287 | +# 433 PLR5501 [*] Use `elif` instead of `else` then `if`, to reduce indentation |
| 288 | +# 428 PLR0911 [ ] Too many return statements (10 > 6) |
| 289 | +# 404 E731 [*] Do not assign a `lambda` expression, use a `def` |
| 290 | +# 351 F405 [ ] `ComplexField` may be undefined, or defined from star imports |
| 291 | +# 306 PLR1714 [*] Consider merging multiple comparisons. Use a `set` if the elements are hashable. |
| 292 | +# 236 F403 [ ] `from .abelian_gps.all import *` used; unable to detect undefined names |
| 293 | +# 116 PLR0402 [*] Use `from matplotlib import cm` in lieu of alias |
| 294 | +# 111 PLW0603 [ ] Using the global statement to update `AA_0` is discouraged |
| 295 | +# 78 F841 [*] Local variable `B` is assigned to but never used |
| 296 | +# 64 E713 [*] Test for membership should be `not in` |
| 297 | +# 48 PLW0602 [ ] Using global for `D` but no assignment is done |
| 298 | +# 33 PLR1711 [*] Useless `return` statement at end of function |
| 299 | +# 24 E714 [*] Test for object identity should be `is not` |
| 300 | +# 20 PLR1701 [*] Merge `isinstance` calls |
| 301 | +# 17 PLW3301 [ ] Nested `max` calls can be flattened |
| 302 | +# 16 PLW1510 [*] `subprocess.run` without explicit `check` argument |
| 303 | +# 14 E721 [ ] Do not compare types, use `isinstance()` |
| 304 | +# 14 PLW0120 [*] `else` clause on loop without a `break` statement; remove the `else` and dedent its contents |
| 305 | +# 12 F811 [*] Redefinition of unused `CompleteDiscreteValuationRings` from line 49 |
| 306 | +# 8 PLC0414 [*] Import alias does not rename original package |
| 307 | +# 7 E743 [ ] Ambiguous function name: `I` |
| 308 | +# 7 PLE0101 [ ] Explicit return in `__init__` |
| 309 | +# 7 PLR0124 [ ] Name compared with itself, consider replacing `a == a` |
| 310 | +# 5 PLW0127 [ ] Self-assignment of variable `a` |
| 311 | +# 4 F541 [*] f-string without any placeholders |
| 312 | +# 4 PLW1508 [ ] Invalid type for environment variable default; expected `str` or `None` |
| 313 | +# 3 PLC3002 [ ] Lambda expression called directly. Execute the expression inline instead. |
| 314 | +# 2 E742 [ ] Ambiguous class name: `I` |
| 315 | +# 2 PLE0302 [ ] The special method `__len__` expects 1 parameter, 3 were given |
| 316 | +# 2 PLW0129 [ ] Asserting on a non-empty string literal will always pass |
| 317 | +# 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable |
| 318 | +# 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values |
| 319 | +# |
| 320 | +commands = ruff check --ignore PLR2004,I001,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,F841,E713,PLW0602,PLR1711,E714,PLR1701,PLW3301,PLW1510,E721,PLW0120,F811,PLC0414,E743,PLE0101,PLR0124,PLW0127,F541,PLW1508,PLC3002,E742,PLE0302,PLW0129,F402,PLC0208 {posargs:{toxinidir}/sage/} |
| 321 | + |
262 | 322 | [flake8]
|
263 | 323 | rst-roles =
|
264 | 324 | # Sphinx
|
|
0 commit comments