refactor: Use ignore-list over verbose select-list
What changed, and why it matters
This commit is a pure cleanup of the project's Python linter configuration file (ruff.toml). It replaces a long explicit list of individual style/error checks with shorter category codes and a small 'ignore' list. There is no change to Bitcoin Core's actual code, behavior, or security.
No security action needed. Review as a normal tooling/config refactor if desired.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff only modifies ruff.toml, switching from enumerating specific pycodestyle/pyflakes rule codes (E101, E401, F401, etc.) to selecting the broader ‘E’, ‘F’, and ‘W’ rule categories and explicitly ignoring E501, E712, E731, and E741. This is a readability refactor of linting rules; no source code, build system, or runtime logic is affected.
Changed components
ruff.tomlInspect captured patch +9 / −36
diff --git a/ruff.toml b/ruff.toml
index 1c1867e3..d379dde1 100644
--- a/ruff.toml
+++ b/ruff.toml
@@ -2,44 +2,17 @@
select = [
"B006", # mutable-argument-default
"B008", # function-call-in-default-argument
- "E101", # indentation contains mixed spaces and tabs
- "E401", # multiple imports on one line
- "E402", # module level import not at top of file
- "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:'
- "E713", # test for membership should be "not in"
- "E714", # test for object identity should be "is not"
- "E721", # do not compare types, use "isinstance()"
- "E722", # do not use bare 'except'
- "E742", # do not define classes named "l", "O", or "I"
- "E743", # do not define functions named "l", "O", or "I"
- "F401", # module imported but unused
- "F402", # import module from line N shadowed by loop variable
- "F403", # 'from foo_module import *' used; unable to detect undefined names
- "F404", # future import(s) name after other statements
- "F405", # foo_function may be undefined, or defined from star imports: bar_module
- "F406", # "from module import *" only allowed at module level
- "F407", # an undefined __future__ feature name was imported
- "F541", # f-string without any placeholders
- "F601", # dictionary key name repeated with different values
- "F602", # dictionary key variable name repeated with different values
- "F621", # too many expressions in an assignment with star-unpacking
- "F631", # assertion test is a tuple, which are always True
- "F632", # use ==/!= to compare str, bytes, and int literals
- "F811", # redefinition of unused name from line N
- "F821", # undefined name 'Foo'
- "F822", # undefined name name in __all__
- "F823", # local variable name referenced before assignment
- "F841", # local variable 'foo' is assigned to but never used
+ "E", # pycodestyle errors
+ "F", # pyflakes errors
"PLE", # Pylint errors
"RUF001", # ambiguous-unicode-character-string
"RUF002", # ambiguous-unicode-character-docstring
"RUF003", # ambiguous-unicode-character-comment
- "W191", # indentation contains tabs
- "W291", # trailing whitespace
- "W292", # no newline at end of file
- "W293", # blank line contains whitespace
- "W605", # invalid escape sequence "x"
+ "W", # pycodestyle warnings
+]
+ignore = [
+ "E501", # line too long
+ "E712", # true-false comparison
+ "E731", # lambda assignment
+ "E741", # ambiguous-variable-name
]
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.