From b166c3ae7d5801d2812412b5f55e919e68858742 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 24 Feb 2024 11:38:10 -0800 Subject: [PATCH 1/9] tox.ini, src/tox.ini: New environments ruff, ruff-minimal --- src/tox.ini | 14 +++++++++++++- tox.ini | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/tox.ini b/src/tox.ini index ca69ed6c8bf..af6144b5e36 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -21,7 +21,7 @@ ## in a virtual environment. ## [tox] -envlist = doctest, coverage, startuptime, pycodestyle-minimal, relint, codespell, rst +envlist = doctest, coverage, startuptime, pycodestyle-minimal, relint, codespell, rst, ruff-minimal # When adding environments above, also update the delegations in SAGE_ROOT/tox.ini skipsdist = true @@ -259,6 +259,18 @@ description = deps = cython-lint commands = cython-lint --no-pycodestyle {posargs:{toxinidir}/sage/} +[testenv:ruff] +description = + check against Python style conventions +deps = ruff +commands = ruff {posargs:{toxinidir}/sage/} + +[testenv:ruff-minimal] +description = + check against Sage's minimal style conventions +deps = ruff +commands = ruff {posargs:{toxinidir}/sage/} + [flake8] rst-roles = # Sphinx diff --git a/tox.ini b/tox.ini index b06f4529afc..f8797654830 100644 --- a/tox.ini +++ b/tox.ini @@ -1090,3 +1090,19 @@ passenv = {[sage_src]passenv} envdir = {[sage_src]envdir} commands = {[sage_src]commands} allowlist_externals = {[sage_src]allowlist_externals} + +[testenv:ruff] +description = + check against Python style conventions +passenv = {[sage_src]passenv} +envdir = {[sage_src]envdir} +allowlist_externals = {[sage_src]allowlist_externals} +commands = tox -c {toxinidir}/src/tox.ini -e {envname} -- {posargs:src/sage/} + +[testenv:ruff-minimal] +description = + check against Sage's minimal style conventions +passenv = {[sage_src]passenv} +envdir = {[sage_src]envdir} +allowlist_externals = {[sage_src]allowlist_externals} +commands = tox -c {toxinidir}/src/tox.ini -e {envname} -- {posargs:src/sage/} From be9e5da2b1de668959fe9b143ba857c0a35c51b3 Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Mon, 23 Oct 2023 12:53:46 -0700 Subject: [PATCH 2/9] src/tox.ini (ruff-minimal): Add --ignore. This is taken from https://github.com/sagemath/sage/pull/36512 --- src/tox.ini | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/tox.ini b/src/tox.ini index af6144b5e36..00145484593 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -269,7 +269,52 @@ commands = ruff {posargs:{toxinidir}/sage/} description = check against Sage's minimal style conventions deps = ruff -commands = ruff {posargs:{toxinidir}/sage/} + # Ignore the following code style checks (currently failing): + # 3617 I001 [*] Import block is un-sorted or un-formatted + # 3554 PLR2004 [ ] Magic value used in comparison, consider replacing -0.5 with a constant variable + # 2065 F401 [*] `.PyPolyBoRi.Monomial` imported but unused + # 1939 E741 [ ] Ambiguous variable name: `I` + # 1635 F821 [ ] Undefined name `AA` + # 1500 PLR0912 [ ] Too many branches (102 > 12) + # 1156 PLR0913 [ ] Too many arguments to function call (10 > 5) + # 865 E402 [ ] Module level import not at top of file + # 660 PLR0915 [ ] Too many statements (100 > 50) + # 471 PLW2901 [ ] Outer `for` loop variable `ext` overwritten by inner `for` loop target + # 432 PLR5501 [ ] Use `elif` instead of `else` then `if`, to reduce indentation + # 423 PLR0911 [ ] Too many return statements (10 > 6) + # 354 E731 [*] Do not assign a `lambda` expression, use a `def` + # 351 F405 [ ] `ComplexField` may be undefined, or defined from star imports + # 300 PLR1714 [*] Consider merging multiple comparisons. Use a `set` if the elements are hashable. + # 240 F403 [ ] `from .abelian_gps.all import *` used; unable to detect undefined names + # 125 PLR0402 [*] Use `from matplotlib import cm` in lieu of alias + # 111 PLW0603 [ ] Using the global statement to update `AA_0` is discouraged + # 90 E713 [*] Test for membership should be `not in` + # 69 F841 [*] Local variable `B` is assigned to but never used + # 48 PLW0602 [ ] Using global for `D` but no assignment is done + # 44 E714 [*] Test for object identity should be `is not` + # 35 PLR1711 [*] Useless `return` statement at end of function + # 19 PLR1701 [*] Merge `isinstance` calls + # 17 PLW3301 [ ] Nested `max` calls can be flattened + # 15 E721 [ ] Do not compare types, use `isinstance()` + # 15 PLW1510 [ ] `subprocess.run` without explicit `check` argument + # 14 F811 [ ] Redefinition of unused `CompleteDiscreteValuationRings` from line 44 + # 14 PLW0120 [ ] `else` clause on loop without a `break` statement; remove the `else` and de-indent all the code inside it + # 8 PLC0414 [*] Import alias does not rename original package + # 7 E743 [ ] Ambiguous function name: `I` + # 7 F541 [*] f-string without any placeholders + # 7 PLE0101 [ ] Explicit return in `__init__` + # 7 PLR0124 [ ] Name compared with itself, consider replacing `a == a` + # 5 PLW0127 [ ] Self-assignment of variable `a` + # 4 PLW1508 [ ] Invalid type for environment variable default; expected `str` or `None` + # 3 PLC3002 [ ] Lambda expression called directly. Execute the expression inline instead. + # 2 E742 [ ] Ambiguous class name: `I` + # 2 PLE0302 [ ] The special method `__len__` expects 1 parameter, 3 were given + # 1 E701 [ ] Multiple statements on one line (colon) + # 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable + # 1 F823 [ ] Local variable `zero` referenced before assignment + # 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values + # 1 PLW0129 [ ] Asserting on a non-empty string literal will always pass +commands = ruff --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,E701,F402,F823,PLC0208,PLW0129,E902 {posargs:{toxinidir}/sage/} [flake8] rst-roles = From 3154f602cae974735708c875568887021fda0d8b Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sun, 25 Feb 2024 18:13:30 -0800 Subject: [PATCH 3/9] src/doc/en/developer/tools.rst: Update for ruff --- src/doc/en/developer/tools.rst | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/doc/en/developer/tools.rst b/src/doc/en/developer/tools.rst index 737d7410a48..bc18723cb24 100644 --- a/src/doc/en/developer/tools.rst +++ b/src/doc/en/developer/tools.rst @@ -49,7 +49,7 @@ available:: --tox [options] -- general entry point for testing and linting of the Sage library -e -- run specific test environments; default: - doctest,coverage,startuptime,pycodestyle-minimal,relint,codespell,rst + doctest,coverage,startuptime,pycodestyle-minimal,relint,codespell,rst,ruff-minimal doctest -- run the Sage doctester (same as "sage -t") coverage -- give information about doctest coverage of files @@ -60,11 +60,13 @@ available:: relint -- check whether some forbidden patterns appear codespell -- check for misspelled words in source code rst -- validate Python docstrings markup as reStructuredText + ruff-minimal -- check against Sage's minimal style conventions coverage.py -- run the Sage doctester with Coverage.py coverage.py-html -- run the Sage doctester with Coverage.py, generate HTML report pyright -- run the static typing checker pyright pycodestyle -- check against the Python style conventions of PEP8 cython-lint -- check Cython files for code style + ruff -- check against Python style conventions -p auto -- run test environments in parallel --help -- show tox help @@ -287,6 +289,20 @@ for Python code, written in Rust. It comes with a large choice of possible checks, and has the capacity to fix some of the warnings it emits. +Sage defines two configurations for ruff. The command ``./sage -tox -e ruff-minimal`` uses +ruff in a minimal configuration. As of Sage 10.3, the entire Sage library conforms to this +configuration. When preparing a Sage PR, developers should verify that +``./sage -tox -e ruff-minimal`` passes. + +The second configuration is used with the command ``./sage -tox -e ruff`` and runs a +more thorough check. When preparing a PR that adds new code, +developers should verify that ``./sage -tox -e ruff`` does not +issue warnings for the added code. This will avoid later cleanup +PRs as the Sage codebase is moving toward full PEP 8 compliance. + +On the other hand, it is usually not advisable to mix coding-style +fixes with productive changes on the same PR because this would +makes it harder for reviewers to evaluate the changes. .. _section-tools-relint: From ab4b330f14c34c0acb919633aca0a1e08bd4ec98 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 24 Feb 2024 12:22:48 -0800 Subject: [PATCH 4/9] .github/workflows/lint.yml: Run tox -e ruff-minimal --- .github/workflows/lint.yml | 9 ++++++++- src/tox.ini | 2 ++ tox.ini | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7c108f7eb2c..dcc9ecb3cec 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -37,7 +37,14 @@ jobs: id: deps run: pip install tox - - name: Code style check with pycodestyle + - name: Code style check with ruff-minimal + if: (success() || failure()) && steps.deps.outcome == 'success' + run: tox -e ruff-minimal + env: + # https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 + RUFF_OUTPUT_FORMAT: github + + - name: Code style check with pycodestyle-minimal if: (success() || failure()) && steps.deps.outcome == 'success' run: tox -e pycodestyle-minimal diff --git a/src/tox.ini b/src/tox.ini index 00145484593..ec0b0d91dd7 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -269,6 +269,8 @@ commands = ruff {posargs:{toxinidir}/sage/} description = check against Sage's minimal style conventions deps = ruff +# https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 +passenv = RUFF_OUTPUT_FORMAT # Ignore the following code style checks (currently failing): # 3617 I001 [*] Import block is un-sorted or un-formatted # 3554 PLR2004 [ ] Magic value used in comparison, consider replacing -0.5 with a constant variable diff --git a/tox.ini b/tox.ini index f8797654830..aacdbb803e4 100644 --- a/tox.ini +++ b/tox.ini @@ -1095,6 +1095,8 @@ allowlist_externals = {[sage_src]allowlist_externals} description = check against Python style conventions passenv = {[sage_src]passenv} + # https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 + RUFF_OUTPUT_FORMAT envdir = {[sage_src]envdir} allowlist_externals = {[sage_src]allowlist_externals} commands = tox -c {toxinidir}/src/tox.ini -e {envname} -- {posargs:src/sage/} From d25607f78252c38d21353c56cc7f8abe19682ad7 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 24 Feb 2024 13:05:27 -0800 Subject: [PATCH 5/9] src/ruff.toml: Update according to 'warning: The top-level linter settings are deprecated in favour of their counterparts in the lint section.' --- ruff.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ruff.toml b/ruff.toml index d6dd6fed1bd..b3070914153 100644 --- a/ruff.toml +++ b/ruff.toml @@ -3,12 +3,12 @@ # Assume Python 3.9 target-version = "py39" -select = [ +lint.select = [ "E", # pycodestyle errors - https://docs.astral.sh/ruff/rules/#error-e "F", # pyflakes - https://docs.astral.sh/ruff/rules/#pyflakes-f "I", # isort - https://docs.astral.sh/ruff/rules/#isort-i "PL", # pylint - https://docs.astral.sh/ruff/rules/#pylint-pl ] -ignore = [ +lint.ignore = [ "E501", # Line too long - hard to avoid in doctests, and better handled by black. ] From 9be8c408e34d49b830de394b82678203924f4424 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 24 Feb 2024 13:20:02 -0800 Subject: [PATCH 6/9] src/tox.ini (ruff-minimal): Document command to obtain statistics, update ignored codes --- src/tox.ini | 92 ++++++++++++++++++++++++++--------------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/src/tox.ini b/src/tox.ini index ec0b0d91dd7..43b3b53742b 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -271,52 +271,52 @@ description = deps = ruff # https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 passenv = RUFF_OUTPUT_FORMAT - # Ignore the following code style checks (currently failing): - # 3617 I001 [*] Import block is un-sorted or un-formatted - # 3554 PLR2004 [ ] Magic value used in comparison, consider replacing -0.5 with a constant variable - # 2065 F401 [*] `.PyPolyBoRi.Monomial` imported but unused - # 1939 E741 [ ] Ambiguous variable name: `I` - # 1635 F821 [ ] Undefined name `AA` - # 1500 PLR0912 [ ] Too many branches (102 > 12) - # 1156 PLR0913 [ ] Too many arguments to function call (10 > 5) - # 865 E402 [ ] Module level import not at top of file - # 660 PLR0915 [ ] Too many statements (100 > 50) - # 471 PLW2901 [ ] Outer `for` loop variable `ext` overwritten by inner `for` loop target - # 432 PLR5501 [ ] Use `elif` instead of `else` then `if`, to reduce indentation - # 423 PLR0911 [ ] Too many return statements (10 > 6) - # 354 E731 [*] Do not assign a `lambda` expression, use a `def` - # 351 F405 [ ] `ComplexField` may be undefined, or defined from star imports - # 300 PLR1714 [*] Consider merging multiple comparisons. Use a `set` if the elements are hashable. - # 240 F403 [ ] `from .abelian_gps.all import *` used; unable to detect undefined names - # 125 PLR0402 [*] Use `from matplotlib import cm` in lieu of alias - # 111 PLW0603 [ ] Using the global statement to update `AA_0` is discouraged - # 90 E713 [*] Test for membership should be `not in` - # 69 F841 [*] Local variable `B` is assigned to but never used - # 48 PLW0602 [ ] Using global for `D` but no assignment is done - # 44 E714 [*] Test for object identity should be `is not` - # 35 PLR1711 [*] Useless `return` statement at end of function - # 19 PLR1701 [*] Merge `isinstance` calls - # 17 PLW3301 [ ] Nested `max` calls can be flattened - # 15 E721 [ ] Do not compare types, use `isinstance()` - # 15 PLW1510 [ ] `subprocess.run` without explicit `check` argument - # 14 F811 [ ] Redefinition of unused `CompleteDiscreteValuationRings` from line 44 - # 14 PLW0120 [ ] `else` clause on loop without a `break` statement; remove the `else` and de-indent all the code inside it - # 8 PLC0414 [*] Import alias does not rename original package - # 7 E743 [ ] Ambiguous function name: `I` - # 7 F541 [*] f-string without any placeholders - # 7 PLE0101 [ ] Explicit return in `__init__` - # 7 PLR0124 [ ] Name compared with itself, consider replacing `a == a` - # 5 PLW0127 [ ] Self-assignment of variable `a` - # 4 PLW1508 [ ] Invalid type for environment variable default; expected `str` or `None` - # 3 PLC3002 [ ] Lambda expression called directly. Execute the expression inline instead. - # 2 E742 [ ] Ambiguous class name: `I` - # 2 PLE0302 [ ] The special method `__len__` expects 1 parameter, 3 were given - # 1 E701 [ ] Multiple statements on one line (colon) - # 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable - # 1 F823 [ ] Local variable `zero` referenced before assignment - # 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values - # 1 PLW0129 [ ] Asserting on a non-empty string literal will always pass -commands = ruff --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,E701,F402,F823,PLC0208,PLW0129,E902 {posargs:{toxinidir}/sage/} +# Output of currently failing, from "./sage -tox -e ruff -- check --statistics": +# +# 3579 PLR2004 [ ] Magic value used in comparison, consider replacing `- 0.5` with a constant variable +# 3498 I001 [*] Import block is un-sorted or un-formatted +# 2146 F401 [*] `.PyPolyBoRi.Monomial` imported but unused +# 1964 E741 [ ] Ambiguous variable name: `I` +# 1676 F821 [ ] Undefined name `AA` +# 1513 PLR0912 [ ] Too many branches (102 > 12) +# 1159 PLR0913 [ ] Too many arguments in function definition (10 > 5) +# 815 E402 [ ] Module level import not at top of file +# 671 PLR0915 [ ] Too many statements (100 > 50) +# 483 PLW2901 [ ] Outer `for` loop variable `ext` overwritten by inner `for` loop target +# 433 PLR5501 [*] Use `elif` instead of `else` then `if`, to reduce indentation +# 428 PLR0911 [ ] Too many return statements (10 > 6) +# 404 E731 [*] Do not assign a `lambda` expression, use a `def` +# 351 F405 [ ] `ComplexField` may be undefined, or defined from star imports +# 306 PLR1714 [*] Consider merging multiple comparisons. Use a `set` if the elements are hashable. +# 236 F403 [ ] `from .abelian_gps.all import *` used; unable to detect undefined names +# 116 PLR0402 [*] Use `from matplotlib import cm` in lieu of alias +# 111 PLW0603 [ ] Using the global statement to update `AA_0` is discouraged +# 78 F841 [*] Local variable `B` is assigned to but never used +# 64 E713 [*] Test for membership should be `not in` +# 48 PLW0602 [ ] Using global for `D` but no assignment is done +# 33 PLR1711 [*] Useless `return` statement at end of function +# 24 E714 [*] Test for object identity should be `is not` +# 20 PLR1701 [*] Merge `isinstance` calls +# 17 PLW3301 [ ] Nested `max` calls can be flattened +# 16 PLW1510 [*] `subprocess.run` without explicit `check` argument +# 14 E721 [ ] Do not compare types, use `isinstance()` +# 14 PLW0120 [*] `else` clause on loop without a `break` statement; remove the `else` and dedent its contents +# 12 F811 [*] Redefinition of unused `CompleteDiscreteValuationRings` from line 49 +# 8 PLC0414 [*] Import alias does not rename original package +# 7 E743 [ ] Ambiguous function name: `I` +# 7 PLE0101 [ ] Explicit return in `__init__` +# 7 PLR0124 [ ] Name compared with itself, consider replacing `a == a` +# 5 PLW0127 [ ] Self-assignment of variable `a` +# 4 F541 [*] f-string without any placeholders +# 4 PLW1508 [ ] Invalid type for environment variable default; expected `str` or `None` +# 3 PLC3002 [ ] Lambda expression called directly. Execute the expression inline instead. +# 2 E742 [ ] Ambiguous class name: `I` +# 2 PLE0302 [ ] The special method `__len__` expects 1 parameter, 3 were given +# 2 PLW0129 [ ] Asserting on a non-empty string literal will always pass +# 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable +# 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values +# +commands = ruff --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,F402,PLC0208,PLW0129 {posargs:{toxinidir}/sage/} [flake8] rst-roles = From bfb38421e1240d37c77d2fd53a2f8495df54eca3 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Sat, 24 Feb 2024 13:40:11 -0800 Subject: [PATCH 7/9] tox.ini, src/tox.ini: Passenv RUFF_OUTPUT_FORMAT in both rust envs --- src/tox.ini | 1 + tox.ini | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/tox.ini b/src/tox.ini index 43b3b53742b..bca7c8351d5 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -263,6 +263,7 @@ commands = cython-lint --no-pycodestyle {posargs:{toxinidir}/sage/} description = check against Python style conventions deps = ruff +passenv = RUFF_OUTPUT_FORMAT commands = ruff {posargs:{toxinidir}/sage/} [testenv:ruff-minimal] diff --git a/tox.ini b/tox.ini index aacdbb803e4..4a5d4fb7834 100644 --- a/tox.ini +++ b/tox.ini @@ -1105,6 +1105,8 @@ commands = tox -c {toxinidir}/src/tox.ini -e {envname} -- {posargs:src/sage/} description = check against Sage's minimal style conventions passenv = {[sage_src]passenv} + # https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 + RUFF_OUTPUT_FORMAT envdir = {[sage_src]envdir} allowlist_externals = {[sage_src]allowlist_externals} commands = tox -c {toxinidir}/src/tox.ini -e {envname} -- {posargs:src/sage/} From e41b10c6516e0ad090f024808857490636b79e14 Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Tue, 30 Apr 2024 17:06:33 -0700 Subject: [PATCH 8/9] src/tox.ini: Use 'ruff check' instead of 'ruff' to avoid warning --- src/tox.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tox.ini b/src/tox.ini index bca7c8351d5..9eb05607c5b 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -264,7 +264,7 @@ description = check against Python style conventions deps = ruff passenv = RUFF_OUTPUT_FORMAT -commands = ruff {posargs:{toxinidir}/sage/} +commands = ruff check {posargs:{toxinidir}/sage/} [testenv:ruff-minimal] description = @@ -272,7 +272,7 @@ description = deps = ruff # https://github.com/ChartBoost/ruff-action/issues/7#issuecomment-1887780308 passenv = RUFF_OUTPUT_FORMAT -# Output of currently failing, from "./sage -tox -e ruff -- check --statistics": +# Output of currently failing, from "./sage -tox -e ruff -- --statistics": # # 3579 PLR2004 [ ] Magic value used in comparison, consider replacing `- 0.5` with a constant variable # 3498 I001 [*] Import block is un-sorted or un-formatted @@ -317,7 +317,7 @@ passenv = RUFF_OUTPUT_FORMAT # 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable # 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values # -commands = ruff --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,F402,PLC0208,PLW0129 {posargs:{toxinidir}/sage/} +commands = ruff check --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,F402,PLC0208,PLW0129 {posargs:{toxinidir}/sage/} [flake8] rst-roles = From c97451dc3e43d16c4b95c8e1f5e08478da43358a Mon Sep 17 00:00:00 2001 From: Matthias Koeppe Date: Fri, 17 May 2024 15:58:44 -0700 Subject: [PATCH 9/9] src/tox.ini (ruff-minimal): Order the ignore list in the same way as the statistics --- src/tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tox.ini b/src/tox.ini index 9eb05607c5b..6e6a084b3db 100644 --- a/src/tox.ini +++ b/src/tox.ini @@ -317,7 +317,7 @@ passenv = RUFF_OUTPUT_FORMAT # 1 F402 [ ] Import `factor` from line 259 shadowed by loop variable # 1 PLC0208 [*] Use a sequence type instead of a `set` when iterating over values # -commands = ruff check --ignore I001,PLR2004,F401,E741,F821,PLR0912,PLR0913,E402,PLR0915,PLW2901,PLR5501,PLR0911,E731,F405,PLR1714,F403,PLR0402,PLW0603,E713,F841,PLW0602,E714,PLR1711,PLR1701,PLW3301,E721,PLW1510,F811,PLW0120,PLC0414,E743,F541,PLE0101,PLR0124,PLW0127,PLW1508,PLC3002,E742,PLE0302,F402,PLC0208,PLW0129 {posargs:{toxinidir}/sage/} +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/} [flake8] rst-roles =