@@ -125,6 +125,16 @@ select = [
125125 " TCH" , # flake8-type-checking
126126 " PTH" , # flake8-use-pathlib
127127 " RUF" , # Ruff-specific rules
128+ " S" , # flake8-bandit (Security)
129+ " BLE" , # flake8-blind-except
130+ " ANN" , # flake8-annotations
131+ " ARG" , # flake8-unused-arguments
132+ " ERA" , # eradicate
133+ " PERF" , # Perflint
134+ " FURB" , # refurb
135+ " TRY" , # tryceratops
136+ " SLF" , # flake8-self
137+ " A" , # flake8-builtins
128138]
129139fixable = [" ALL" ]
130140unfixable = []
@@ -136,11 +146,35 @@ ignore = [
136146 " UP006" , # Use `list` instead of `List` (Python 3.9+)
137147 " UP007" , # Use `X | Y` for unions (Python 3.10+)
138148 " UP035" , # Import from collections.abc (Python 3.9+)
149+ " ANN101" , # Missing type annotation for self
150+ " ANN102" , # Missing type annotation for cls
151+ " ANN401" , # Dynamically typed expressions (Any) - OK for flexible library
152+ " TRY003" , # Long exception messages (ok for Libraries)
153+ " TRY300" , # Consider moving to else block - not always applicable
154+ " TRY301" , # Abstract raise to inner function - not needed for simple cases
155+ " PERF203" , # try-except in loop - acceptable for validation patterns
156+ " A001" , # Variable shadowing builtin - OK in specific contexts (e.g. copyright)
157+ " A002" , # Variable shadowing builtin
139158]
140159pyupgrade = [
141160 true
142161]
143162
163+ [tool .ruff .lint .per-file-ignores ]
164+ "tests/*" = [
165+ " S101" , # Assert usage ist OK in Tests
166+ " ANN" , # Type annotations optional in Tests
167+ " ARG" , # Unused arguments OK in Test fixtures
168+ ]
169+ "examples/*" = [
170+ " ANN201" , # Missing return type annotation in examples
171+ " ANN204" , # Missing return type annotation for __init__ in examples
172+ " S201" , # debug=True is OK in examples
173+ ]
174+ "docs/*" = [
175+ " A001" , # Variable shadowing builtin (copyright) is OK in docs
176+ ]
177+
144178[tool .ruff .lint .isort ]
145179force-single-line = false
146180split-on-trailing-comma = true
0 commit comments