mirror of https://github.com/astral-sh/ruff
20 KiB
20 KiB
Changelog 0.2.x
0.2.0
Breaking changes
- The
NURSERYselector cannot be used anymore - Legacy selection of nursery rules by exact codes is no longer allowed without preview enabled
See also, the "Remapped rules" section which may result in disabled rules.
Deprecations
The following rules are now deprecated:
missing-type-self(ANN101)missing-type-cls(ANN102)
The following command line options are now deprecated:
--show-source; use--output-format fullinstead--no-show-source; use--output-format conciseinstead--output-format text; usefullorconciseinstead
The following settings have moved and the previous name is deprecated:
ruff.allowed-confusables→ruff.lint.allowed-confusablesruff.dummy-variable-rgx→ruff.lint.dummy-variable-rgxruff.explicit-preview-rules→ruff.lint.explicit-preview-rulesruff.extend-fixable→ruff.lint.extend-fixableruff.extend-ignore→ruff.lint.extend-ignoreruff.extend-per-file-ignores→ruff.lint.extend-per-file-ignoresruff.extend-safe-fixes→ruff.lint.extend-safe-fixesruff.extend-select→ruff.lint.extend-selectruff.extend-unfixable→ruff.lint.extend-unfixableruff.extend-unsafe-fixes→ruff.lint.extend-unsafe-fixesruff.external→ruff.lint.externalruff.fixable→ruff.lint.fixableruff.flake8-annotations→ruff.lint.flake8-annotationsruff.flake8-bandit→ruff.lint.flake8-banditruff.flake8-bugbear→ruff.lint.flake8-bugbearruff.flake8-builtins→ruff.lint.flake8-builtinsruff.flake8-comprehensions→ruff.lint.flake8-comprehensionsruff.flake8-copyright→ruff.lint.flake8-copyrightruff.flake8-errmsg→ruff.lint.flake8-errmsgruff.flake8-gettext→ruff.lint.flake8-gettextruff.flake8-implicit-str-concat→ruff.lint.flake8-implicit-str-concatruff.flake8-import-conventions→ruff.lint.flake8-import-conventionsruff.flake8-pytest-style→ruff.lint.flake8-pytest-styleruff.flake8-quotes→ruff.lint.flake8-quotesruff.flake8-self→ruff.lint.flake8-selfruff.flake8-tidy-imports→ruff.lint.flake8-tidy-importsruff.flake8-type-checking→ruff.lint.flake8-type-checkingruff.flake8-unused-arguments→ruff.lint.flake8-unused-argumentsruff.ignore→ruff.lint.ignoreruff.ignore-init-module-imports→ruff.lint.ignore-init-module-importsruff.isort→ruff.lint.isortruff.logger-objects→ruff.lint.logger-objectsruff.mccabe→ruff.lint.mccaberuff.pep8-naming→ruff.lint.pep8-namingruff.per-file-ignores→ruff.lint.per-file-ignoresruff.pycodestyle→ruff.lint.pycodestyleruff.pydocstyle→ruff.lint.pydocstyleruff.pyflakes→ruff.lint.pyflakesruff.pylint→ruff.lint.pylintruff.pyupgrade→ruff.lint.pyupgraderuff.select→ruff.lint.selectruff.task-tags→ruff.lint.task-tagsruff.typing-modules→ruff.lint.typing-modulesruff.unfixable→ruff.lint.unfixable
Remapped rules
The following rules have been remapped to new codes:
raise-without-from-inside-except:TRY200toB904suspicious-eval-usage:PGH001toS307logging-warn:PGH002toG010static-key-dict-comprehension:RUF011toB035runtime-string-union:TCH006toTCH010
Stabilizations
The following rules have been stabilized and are no longer in preview:
trio-timeout-without-await(TRIO100)trio-sync-call(TRIO105)trio-async-function-with-timeout(TRIO109)trio-unneeded-sleep(TRIO110)trio-zero-sleep-call(TRIO115)unnecessary-escaped-quote(Q004)enumerate-for-loop(SIM113)zip-dict-keys-and-values(SIM911)timeout-error-alias(UP041)flask-debug-true(S201)tarfile-unsafe-members(S202)ssl-insecure-version(S502)ssl-with-bad-defaults(S503)ssl-with-no-version(S504)weak-cryptographic-key(S505)ssh-no-host-key-verification(S507)django-raw-sql(S611)mako-templates(S702)generator-return-from-iter-method(PYI058)runtime-string-union(TCH006)numpy2-deprecation(NPY201)quadratic-list-summation(RUF017)assignment-in-assert(RUF018)unnecessary-key-check(RUF019)never-union(RUF020)direct-logger-instantiation(LOG001)invalid-get-logger-argument(LOG002)exception-without-exc-info(LOG007)undocumented-warn(LOG009)
Fixes for the following rules have been stabilized and are now available without preview:
triple-single-quotes(D300)non-pep604-annotation(UP007)dict-get-with-none-default(SIM910)in-dict-keys(SIM118)collapsible-else-if(PLR5501)if-with-same-arms(SIM114)useless-else-on-loop(PLW0120)unnecessary-literal-union(PYI030)unnecessary-spread(PIE800)error-instead-of-exception(TRY400)redefined-while-unused(F811)duplicate-value(B033)multiple-imports-on-one-line(E401)non-pep585-annotation(UP006)
Fixes for the following rules have been promoted from unsafe to safe:
unaliased-collections-abc-set-import(PYI025)
The following behaviors have been stabilized:
module-import-not-at-top-of-file(E402) allowssys.pathmodifications between importsreimplemented-container-builtin(PIE807) includes lambdas that can be replaced withdictunnecessary-placeholder(PIE790) applies to unnecessary ellipses (...)if-else-block-instead-of-dict-get(SIM401) applies toif-elseexpressions
Preview features
-
`refurb` - Implement
blank_line_after_nested_stub_classpreview style (#9155) - The preview rule
and-or-ternary(PLR1706) was removed
Bug fixes
-
`flake8-async` -
`flake8-return` - Detect multi-statement lines in else removal (#9748)
RUF022,RUF023: never add two trailing commas to the end of a sequence (#9698)RUF023: Don't sort__match_args__, only__slots__(#9724)-
`flake8-simplify` -
`pylint` - Removing trailing whitespace inside multiline strings is unsafe (#9744)
- Support
IfExpwith dual string arms ininvalid-envvar-default(#9734) -
`pylint`
Documentation
- Removed rules are now retained in the documentation (#9691)
- Deprecated rules are now indicated in the documentation (#9689)
0.2.1
This release includes support for range formatting (i.e., the ability to format specific lines within a source file).
Preview features
-
`refurb` - Format module-level docstrings (#9725)
Formatter
Bug fixes
- Skip empty lines when determining base indentation (#9795)
- Drop
__get__and__set__fromunnecessary-dunder-call(#9791) - Respect generic
Protocolin ellipsis removal (#9841) - Revert "Use publicly available Apple Silicon runners (#9726)" (#9834)
Performance
- Skip LibCST parsing for standard dedent adjustments (#9769)
- Remove CST-based fixer for
C408(#9822) - Add our own ignored-names abstractions (#9802)
- Remove CST-based fixers for
C400,C401,C410, andC418(#9819) - Use
AhoCorasickto speed up quote match (#9773) - Remove CST-based fixers for
C405andC409(#9821) - Add fast-path for comment detection (#9808)
- Invert order of checks in
zero-sleep-call(#9766) - Short-circuit typing matches based on imports (#9800)
- Run dunder method rule on methods directly (#9815)
- Track top-level module imports in the semantic model (#9775)
- Slight speed-up for lowercase and uppercase identifier checks (#9798)
- Remove LibCST-based fixer for
C403(#9818)
Documentation
- Update
max-pos-argsexample tomax-positional-args(#9797) - Fixed example code in
weak_cryptographic_key.rs(#9774) - Fix references to deprecated
ANNrules in changelog (#9771) - Fix default for
max-positional-args(#9838)
0.2.2
Highlights include:
- Initial support formatting f-strings (in
--preview). - Support for overriding arbitrary configuration options via the CLI through an expanded
--configargument (e.g.,--config "lint.isort.combine-as-imports=false"). - Significant performance improvements in Ruff's lexer, parser, and lint rules.
Preview features
- Implement minimal f-string formatting (#9642)
-
`pycodestyle` -
`refurb`
Rule changes
-
`ruff` -
`numpy` -
`flake8-bandit` -
`ruff` -
`flake8-pyi`
Formatter
- Docstring formatting: Preserve tab indentation when using
indent-style=tabs(#9915) - Disable top-level docstring formatting for notebooks (#9957)
- Stabilize quote-style's
preservemode (#9922)
CLI
- Allow arbitrary configuration options to be overridden via the CLI (#9599)
Bug fixes
- Make
show-settingsfilters directory-agnostic (#9866) - Respect duplicates when rewriting type aliases (#9905)
- Respect tuple assignments in typing analyzer (#9969)
- Use atomic write when persisting cache (#9981)
- Use non-parenthesized range for
DebugText(#9953) -
`flake8-simplify` -
`flake8-trio` -
`perflint` -
`pycodestyle` -
`pydocstyle` -
`pydocstyle` -
`pylint` -
`pylint` -
`ruff` -
`ruff` -
`ruff`
Performance
- Use
memchrfor string lexing (#9888) - Use
memchrfor tab-indentation detection (#9853) - Reduce
Result<Tok, LexicalError>size by usingBox<str>instead ofString(#9885) - Reduce size of
Exprfrom 80 to 64 bytes (#9900) - Improve trailing comma rule performance (#9867)
- Remove unnecessary string cloning from the parser (#9884)