astral-sh/ruff (ruff)
### [`v0.7.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#073)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.2...0.7.3)
##### Preview features
- Formatter: Disallow single-line implicit concatenated strings ([#13928](https://redirect.github.com/astral-sh/ruff/pull/13928))
- \[`flake8-pyi`] Include all Python file types for `PYI006` and `PYI066` ([#14059](https://redirect.github.com/astral-sh/ruff/pull/14059))
- \[`flake8-simplify`] Implement `split-of-static-string` (`SIM905`) ([#14008](https://redirect.github.com/astral-sh/ruff/pull/14008))
- \[`refurb`] Implement `subclass-builtin` (`FURB189`) ([#14105](https://redirect.github.com/astral-sh/ruff/pull/14105))
- \[`ruff`] Improve diagnostic messages and docs (`RUF031`, `RUF032`, `RUF034`) ([#14068](https://redirect.github.com/astral-sh/ruff/pull/14068))
##### Rule changes
- Detect items that hash to same value in duplicate sets (`B033`, `PLC0208`) ([#14064](https://redirect.github.com/astral-sh/ruff/pull/14064))
- \[`eradicate`] Better detection of IntelliJ language injection comments (`ERA001`) ([#14094](https://redirect.github.com/astral-sh/ruff/pull/14094))
- \[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`) ([#14150](https://redirect.github.com/astral-sh/ruff/pull/14150))
- \[`flake8-pyi`] Update `duplicate-literal-member` (`PYI062`) to alawys provide an autofix ([#14188](https://redirect.github.com/astral-sh/ruff/pull/14188))
- \[`pyflakes`] Detect items that hash to same value in duplicate dictionaries (`F601`) ([#14065](https://redirect.github.com/astral-sh/ruff/pull/14065))
- \[`ruff`] Fix false positive for decorators (`RUF028`) ([#14061](https://redirect.github.com/astral-sh/ruff/pull/14061))
##### Bug fixes
- Avoid parsing joint rule codes as distinct codes in `# noqa` ([#12809](https://redirect.github.com/astral-sh/ruff/pull/12809))
- \[`eradicate`] ignore `# language=` in commented-out-code rule (ERA001) ([#14069](https://redirect.github.com/astral-sh/ruff/pull/14069))
- \[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs (`B006`) ([#14058](https://redirect.github.com/astral-sh/ruff/pull/14058))
- \[`flake8-builtins`] Skip lambda expressions in `builtin-argument-shadowing (A002)` ([#14144](https://redirect.github.com/astral-sh/ruff/pull/14144))
- \[`flake8-comprehension`] Also remove trailing comma while fixing `C409` and `C419` ([#14097](https://redirect.github.com/astral-sh/ruff/pull/14097))
- \[`flake8-simplify`] Allow `open` without context manager in `return` statement (`SIM115`) ([#14066](https://redirect.github.com/astral-sh/ruff/pull/14066))
- \[`pylint`] Respect hash-equivalent literals in `iteration-over-set` (`PLC0208`) ([#14063](https://redirect.github.com/astral-sh/ruff/pull/14063))
- \[`pylint`] Update known dunder methods for Python 3.13 (`PLW3201`) ([#14146](https://redirect.github.com/astral-sh/ruff/pull/14146))
- \[`pyupgrade`] - ignore kwarg unpacking for `UP044` ([#14053](https://redirect.github.com/astral-sh/ruff/pull/14053))
- \[`refurb`] Parse more exotic decimal strings in `verbose-decimal-constructor` (`FURB157`) ([#14098](https://redirect.github.com/astral-sh/ruff/pull/14098))
##### Documentation
- Add links to missing related options within rule documentations ([#13971](https://redirect.github.com/astral-sh/ruff/pull/13971))
- Add rule short code to mkdocs tags to allow searching via rule codes ([#14040](https://redirect.github.com/astral-sh/ruff/pull/14040))
### [`v0.7.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#072)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.1...0.7.2)
##### Preview features
- Fix formatting of single with-item with trailing comment ([#14005](https://redirect.github.com/astral-sh/ruff/pull/14005))
- \[`pyupgrade`] Add PEP 646 `Unpack` conversion to `*` with fix (`UP044`) ([#13988](https://redirect.github.com/astral-sh/ruff/pull/13988))
##### Rule changes
- Regenerate `known_stdlibs.rs` with stdlibs 2024.10.25 ([#13963](https://redirect.github.com/astral-sh/ruff/pull/13963))
- \[`flake8-no-pep420`] Skip namespace package enforcement for PEP 723 scripts (`INP001`) ([#13974](https://redirect.github.com/astral-sh/ruff/pull/13974))
##### Server
- Fix server panic when undoing an edit ([#14010](https://redirect.github.com/astral-sh/ruff/pull/14010))
##### Bug fixes
- Fix issues in discovering ruff in pip build environments ([#13881](https://redirect.github.com/astral-sh/ruff/pull/13881))
- \[`flake8-type-checking`] Fix false positive for `singledispatchmethod` (`TCH003`) ([#13941](https://redirect.github.com/astral-sh/ruff/pull/13941))
- \[`flake8-type-checking`] Treat return type of `singledispatch` as runtime-required (`TCH003`) ([#13957](https://redirect.github.com/astral-sh/ruff/pull/13957))
##### Documentation
- \[`flake8-simplify`] Include caveats of enabling `if-else-block-instead-of-if-exp` (`SIM108`) ([#14019](https://redirect.github.com/astral-sh/ruff/pull/14019))
### [`v0.7.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#071)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.0...0.7.1)
##### Preview features
- Fix `E221` and `E222` to flag missing or extra whitespace around `==` operator ([#13890](https://redirect.github.com/astral-sh/ruff/pull/13890))
- Formatter: Alternate quotes for strings inside f-strings in preview ([#13860](https://redirect.github.com/astral-sh/ruff/pull/13860))
- Formatter: Join implicit concatenated strings when they fit on a line ([#13663](https://redirect.github.com/astral-sh/ruff/pull/13663))
- \[`pylint`] Restrict `iteration-over-set` to only work on sets of literals (`PLC0208`) ([#13731](https://redirect.github.com/astral-sh/ruff/pull/13731))
##### Rule changes
- \[`flake8-type-checking`] Support auto-quoting when annotations contain quotes ([#11811](https://redirect.github.com/astral-sh/ruff/pull/11811))
##### Server
- Avoid indexing the workspace for single-file mode ([#13770](https://redirect.github.com/astral-sh/ruff/pull/13770))
##### Bug fixes
- Make `ARG002` compatible with `EM101` when raising `NotImplementedError` ([#13714](https://redirect.github.com/astral-sh/ruff/pull/13714))
##### Other changes
- Introduce more Docker tags for Ruff (similar to uv) ([#13274](https://redirect.github.com/astral-sh/ruff/pull/13274))
### [`v0.7.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#070)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.9...0.7.0)
Check out the [blog post](https://astral.sh/blog/ruff-v0.7.0) for a migration guide and overview of the changes!
##### Breaking changes
- The pytest rules `PT001` and `PT023` now default to omitting the decorator parentheses when there are no arguments
([#12838](https://redirect.github.com/astral-sh/ruff/pull/12838), [#13292](https://redirect.github.com/astral-sh/ruff/pull/13292)).
This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part.
See the [blog post](https://astral.sh/blog/ruff-v0.7.0) for more details.
- The `useless-try-except` rule (in our `tryceratops` category) has been recoded from `TRY302` to
`TRY203` ([#13502](https://redirect.github.com/astral-sh/ruff/pull/13502)). This ensures Ruff's code is consistent with
the same rule in the [`tryceratops`](https://redirect.github.com/guilatrova/tryceratops) linter.
- The `lint.allow-unused-imports` setting has been removed ([#13677](https://redirect.github.com/astral-sh/ruff/pull/13677)). Use
[`lint.pyflakes.allow-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports)
instead.
##### Formatter preview style
- Normalize implicit concatenated f-string quotes per part ([#13539](https://redirect.github.com/astral-sh/ruff/pull/13539))
##### Preview linter features
- \[`refurb`] implement `hardcoded-string-charset` (FURB156) ([#13530](https://redirect.github.com/astral-sh/ruff/pull/13530))
- \[`refurb`] Count codepoints not bytes for `slice-to-remove-prefix-or-suffix (FURB188)` ([#13631](https://redirect.github.com/astral-sh/ruff/pull/13631))
##### Rule changes
- \[`pylint`] Mark `PLE1141` fix as unsafe ([#13629](https://redirect.github.com/astral-sh/ruff/pull/13629))
- \[`flake8-async`] Consider async generators to be "checkpoints" for `cancel-scope-no-checkpoint` (`ASYNC100`) ([#13639](https://redirect.github.com/astral-sh/ruff/pull/13639))
- \[`flake8-bugbear`] Do not suggest setting parameter `strict=` to `False` in `B905` diagnostic message ([#13656](https://redirect.github.com/astral-sh/ruff/pull/13656))
- \[`flake8-todos`] Only flag the word "TODO", not words starting with "todo" (`TD006`) ([#13640](https://redirect.github.com/astral-sh/ruff/pull/13640))
- \[`pycodestyle`] Fix whitespace-related false positives and false negatives inside type-parameter lists (`E231`, `E251`) ([#13704](https://redirect.github.com/astral-sh/ruff/pull/13704))
- \[`flake8-simplify`] Stabilize preview behavior for `SIM115` so that the rule can detect files
being opened from a wider range of standard-library functions ([#12959](https://redirect.github.com/astral-sh/ruff/pull/12959)).
##### CLI
- Add explanation of fixable in `--statistics` command ([#13774](https://redirect.github.com/astral-sh/ruff/pull/13774))
##### Bug fixes
- \[`pyflakes`] Allow `ipytest` cell magic (`F401`) ([#13745](https://redirect.github.com/astral-sh/ruff/pull/13745))
- \[`flake8-use-pathlib`] Fix `PTH123` false positive when `open` is passed a file descriptor ([#13616](https://redirect.github.com/astral-sh/ruff/pull/13616))
- \[`flake8-bandit`] Detect patterns from multi line SQL statements (`S608`) ([#13574](https://redirect.github.com/astral-sh/ruff/pull/13574))
- \[`flake8-pyi`] - Fix dropped expressions in `PYI030` autofix ([#13727](https://redirect.github.com/astral-sh/ruff/pull/13727))
### [`v0.6.9`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#069)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.8...0.6.9)
##### Preview features
- Fix codeblock dynamic line length calculation for indented docstring examples ([#13523](https://redirect.github.com/astral-sh/ruff/pull/13523))
- \[`refurb`] Mark `FURB118` fix as unsafe ([#13613](https://redirect.github.com/astral-sh/ruff/pull/13613))
##### Rule changes
- \[`pydocstyle`] Don't raise `D208` when last line is non-empty ([#13372](https://redirect.github.com/astral-sh/ruff/pull/13372))
- \[`pylint`] Preserve trivia (i.e. comments) in `PLR5501` autofix ([#13573](https://redirect.github.com/astral-sh/ruff/pull/13573))
##### Configuration
- \[`pyflakes`] Add `allow-unused-imports` setting for `unused-import` rule (`F401`) ([#13601](https://redirect.github.com/astral-sh/ruff/pull/13601))
##### Bug fixes
- Support ruff discovery in pip build environments ([#13591](https://redirect.github.com/astral-sh/ruff/pull/13591))
- \[`flake8-bugbear`] Avoid short circuiting `B017` for multiple context managers ([#13609](https://redirect.github.com/astral-sh/ruff/pull/13609))
- \[`pylint`] Do not offer an invalid fix for `PLR1716` when the comparisons contain parenthesis ([#13527](https://redirect.github.com/astral-sh/ruff/pull/13527))
- \[`pyupgrade`] Fix `UP043` to apply to `collections.abc.Generator` and `collections.abc.AsyncGenerator` ([#13611](https://redirect.github.com/astral-sh/ruff/pull/13611))
- \[`refurb`] Fix handling of slices in tuples for `FURB118`, e.g., `x[:, 1]` ([#13518](https://redirect.github.com/astral-sh/ruff/pull/13518))
##### Documentation
- Update GitHub Action link to `astral-sh/ruff-action` ([#13551](https://redirect.github.com/astral-sh/ruff/pull/13551))
### [`v0.6.8`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#068)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.7...0.6.8)
##### Preview features
- Remove unnecessary parentheses around `match case` clauses ([#13510](https://redirect.github.com/astral-sh/ruff/pull/13510))
- Parenthesize overlong `if` guards in `match..case` clauses ([#13513](https://redirect.github.com/astral-sh/ruff/pull/13513))
- Detect basic wildcard imports in `ruff analyze graph` ([#13486](https://redirect.github.com/astral-sh/ruff/pull/13486))
- \[`pylint`] Implement `boolean-chained-comparison` (`R1716`) ([#13435](https://redirect.github.com/astral-sh/ruff/pull/13435))
##### Rule changes
- \[`lake8-simplify`] Detect `SIM910` when using variadic keyword arguments, i.e., `**kwargs` ([#13503](https://redirect.github.com/astral-sh/ruff/pull/13503))
- \[`pyupgrade`] Avoid false negatives with non-reference shadowed bindings of loop variables (`UP028`) ([#13504](https://redirect.github.com/astral-sh/ruff/pull/13504))
##### Bug fixes
- Detect tuples bound to variadic positional arguments i.e. `*args` ([#13512](https://redirect.github.com/astral-sh/ruff/pull/13512))
- Exit gracefully on broken pipe errors ([#13485](https://redirect.github.com/astral-sh/ruff/pull/13485))
- Avoid panic when analyze graph hits broken pipe ([#13484](https://redirect.github.com/astral-sh/ruff/pull/13484))
##### Performance
- Reuse `BTreeSets` in module resolver ([#13440](https://redirect.github.com/astral-sh/ruff/pull/13440))
- Skip traversal for non-compound statements ([#13441](https://redirect.github.com/astral-sh/ruff/pull/13441))
### [`v0.6.7`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#067)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.6...0.6.7)
##### Preview features
- Add Python version support to ruff analyze CLI ([#13426](https://redirect.github.com/astral-sh/ruff/pull/13426))
- Add `exclude` support to `ruff analyze` ([#13425](https://redirect.github.com/astral-sh/ruff/pull/13425))
- Fix parentheses around return type annotations ([#13381](https://redirect.github.com/astral-sh/ruff/pull/13381))
##### Rule changes
- \[`pycodestyle`] Fix: Don't autofix if the first line ends in a question mark? (D400) ([#13399](https://redirect.github.com/astral-sh/ruff/pull/13399))
##### Bug fixes
- Respect `lint.exclude` in ruff check `--add-noqa` ([#13427](https://redirect.github.com/astral-sh/ruff/pull/13427))
##### Performance
- Avoid tracking module resolver files in Salsa ([#13437](https://redirect.github.com/astral-sh/ruff/pull/13437))
- Use `forget` for module resolver database ([#13438](https://redirect.github.com/astral-sh/ruff/pull/13438))
### [`v0.6.6`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#066)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.5...0.6.6)
##### Preview features
- \[`refurb`] Skip `slice-to-remove-prefix-or-suffix` (`FURB188`) when non-trivial slice steps are present ([#13405](https://redirect.github.com/astral-sh/ruff/pull/13405))
- Add a subcommand to generate dependency graphs ([#13402](https://redirect.github.com/astral-sh/ruff/pull/13402))
##### Formatter
- Fix placement of inline parameter comments ([#13379](https://redirect.github.com/astral-sh/ruff/pull/13379))
##### Server
- Fix off-by one error in the `LineIndex::offset` calculation ([#13407](https://redirect.github.com/astral-sh/ruff/pull/13407))
##### Bug fixes
- \[`fastapi`] Respect FastAPI aliases in route definitions ([#13394](https://redirect.github.com/astral-sh/ruff/pull/13394))
- \[`pydocstyle`] Respect word boundaries when detecting function signature in docs ([#13388](https://redirect.github.com/astral-sh/ruff/pull/13388))
##### Documentation
- Add backlinks to rule overview linter ([#13368](https://redirect.github.com/astral-sh/ruff/pull/13368))
- Fix documentation for editor vim plugin ALE ([#13348](https://redirect.github.com/astral-sh/ruff/pull/13348))
- Fix rendering of `FURB188` docs ([#13406](https://redirect.github.com/astral-sh/ruff/pull/13406))
### [`v0.6.5`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#065)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.4...0.6.5)
##### Preview features
- \[`pydoclint`] Ignore `DOC201` when function name is "**new**" ([#13300](https://redirect.github.com/astral-sh/ruff/pull/13300))
- \[`refurb`] Implement `slice-to-remove-prefix-or-suffix` (`FURB188`) ([#13256](https://redirect.github.com/astral-sh/ruff/pull/13256))
##### Rule changes
- \[`eradicate`] Ignore script-comments with multiple end-tags (`ERA001`) ([#13283](https://redirect.github.com/astral-sh/ruff/pull/13283))
- \[`pyflakes`] Improve error message for `UndefinedName` when a builtin was added in a newer version than specified in Ruff config (`F821`) ([#13293](https://redirect.github.com/astral-sh/ruff/pull/13293))
##### Server
- Add support for extensionless Python files for server ([#13326](https://redirect.github.com/astral-sh/ruff/pull/13326))
- Fix configuration inheritance for configurations specified in the LSP settings ([#13285](https://redirect.github.com/astral-sh/ruff/pull/13285))
##### Bug fixes
- \[`ruff`] Handle unary operators in `decimal-from-float-literal` (`RUF032`) ([#13275](https://redirect.github.com/astral-sh/ruff/pull/13275))
##### CLI
- Only include rules with diagnostics in SARIF metadata ([#13268](https://redirect.github.com/astral-sh/ruff/pull/13268))
##### Playground
- Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML" ([#13328](https://redirect.github.com/astral-sh/ruff/pull/13328))
- Fix errors not shown for restored snippet on page load ([#13262](https://redirect.github.com/astral-sh/ruff/pull/13262))
### [`v0.6.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#064)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.3...0.6.4)
##### Preview features
- \[`flake8-builtins`] Use dynamic builtins list based on Python version ([#13172](https://redirect.github.com/astral-sh/ruff/pull/13172))
- \[`pydoclint`] Permit yielding `None` in `DOC402` and `DOC403` ([#13148](https://redirect.github.com/astral-sh/ruff/pull/13148))
- \[`pylint`] Update diagnostic message for `PLW3201` ([#13194](https://redirect.github.com/astral-sh/ruff/pull/13194))
- \[`ruff`] Implement `post-init-default` (`RUF033`) ([#13192](https://redirect.github.com/astral-sh/ruff/pull/13192))
- \[`ruff`] Implement useless if-else (`RUF034`) ([#13218](https://redirect.github.com/astral-sh/ruff/pull/13218))
##### Rule changes
- \[`flake8-pyi`] Respect `pep8_naming.classmethod-decorators` settings when determining if a method is a classmethod in `custom-type-var-return-type` (`PYI019`) ([#13162](https://redirect.github.com/astral-sh/ruff/pull/13162))
- \[`flake8-pyi`] Teach various rules that annotations might be stringized ([#12951](https://redirect.github.com/astral-sh/ruff/pull/12951))
- \[`pylint`] Avoid `no-self-use` for `attrs`-style validators ([#13166](https://redirect.github.com/astral-sh/ruff/pull/13166))
- \[`pylint`] Recurse into subscript subexpressions when searching for list/dict lookups (`PLR1733`, `PLR1736`) ([#13186](https://redirect.github.com/astral-sh/ruff/pull/13186))
- \[`pyupgrade`] Detect `aiofiles.open` calls in `UP015` ([#13173](https://redirect.github.com/astral-sh/ruff/pull/13173))
- \[`pyupgrade`] Mark `sys.version_info[0] < 3` and similar comparisons as outdated (`UP036`) ([#13175](https://redirect.github.com/astral-sh/ruff/pull/13175))
##### CLI
- Enrich messages of SARIF results ([#13180](https://redirect.github.com/astral-sh/ruff/pull/13180))
- Handle singular case for incompatible rules warning in `ruff format` output ([#13212](https://redirect.github.com/astral-sh/ruff/pull/13212))
##### Bug fixes
- \[`pydocstyle`] Improve heuristics for detecting Google-style docstrings ([#13142](https://redirect.github.com/astral-sh/ruff/pull/13142))
- \[`refurb`] Treat `sep` arguments with effects as unsafe removals (`FURB105`) ([#13165](https://redirect.github.com/astral-sh/ruff/pull/13165))
### [`v0.6.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#063)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.2...0.6.3)
##### Preview features
- \[`flake8-simplify`] Extend `open-file-with-context-handler` to work with `dbm.sqlite3` (`SIM115`) ([#13104](https://redirect.github.com/astral-sh/ruff/pull/13104))
- \[`pycodestyle`] Disable `E741` in stub files (`.pyi`) ([#13119](https://redirect.github.com/astral-sh/ruff/pull/13119))
- \[`pydoclint`] Avoid `DOC201` on explicit returns in functions that only return `None` ([#13064](https://redirect.github.com/astral-sh/ruff/pull/13064))
##### Rule changes
- \[`flake8-async`] Disable check for `asyncio` before Python 3.11 (`ASYNC109`) ([#13023](https://redirect.github.com/astral-sh/ruff/pull/13023))
##### Bug fixes
- \[`FastAPI`] Avoid introducing invalid syntax in fix for `fast-api-non-annotated-dependency` (`FAST002`) ([#13133](https://redirect.github.com/astral-sh/ruff/pull/13133))
- \[`flake8-implicit-str-concat`] Normalize octals before merging concatenated strings in `single-line-implicit-string-concatenation` (`ISC001`) ([#13118](https://redirect.github.com/astral-sh/ruff/pull/13118))
- \[`flake8-pytest-style`] Improve help message for `pytest-incorrect-mark-parentheses-style` (`PT023`) ([#13092](https://redirect.github.com/astral-sh/ruff/pull/13092))
- \[`pylint`] Avoid autofix for calls that aren't `min` or `max` as starred expression (`PLW3301`) ([#13089](https://redirect.github.com/astral-sh/ruff/pull/13089))
- \[`ruff`] Add `datetime.time`, `datetime.tzinfo`, and `datetime.timezone` as immutable function calls (`RUF009`) ([#13109](https://redirect.github.com/astral-sh/ruff/pull/13109))
- \[`ruff`] Extend comment deletion for `RUF100` to include trailing text from `noqa` directives while preserving any following comments on the same line, if any ([#13105](https://redirect.github.com/astral-sh/ruff/pull/13105))
- Fix dark theme on initial page load for the Ruff playground ([#13077](https://redirect.github.com/astral-sh/ruff/pull/13077))
### [`v0.6.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#062)
[Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.1...0.6.2)
##### Preview features
- \[`flake8-simplify`] Extend `open-file-with-context-handler` to work with other standard-library IO modules (`SIM115`) ([#12959](https://redirect.github.com/astral-sh/ruff/pull/12959))
- \[`ruff`] Avoid `unused-async` for functions with FastAPI route decorator (`RUF029`) ([#12938](https://redirect.github.com/astral-sh/ruff/pull/12938))
- \[`ruff`] Ignore `fstring-missing-syntax` (`RUF027`) for `fastAPI` paths ([#12939](https://redirect.github.com/astral-sh/ruff/pull/12939))
- \[`ruff`] Implement check for Decimal called with a float literal (RUF032) ([#12909](https://redirect.github.com/astral-sh/ruff/pull/12909))
##### Rule changes
- \[`flake8-bugbear`] Update diagnostic message when expression is at the end of function (`B015`) ([#12944](https://redirect.github.com/astral-sh/ruff/pull/12944))
- \[`flake8-pyi`] Skip type annotations in `string-or-bytes-too-long` (`PYI053`) ([#13002](https://redirect.github.com/astral-sh/ruff/pull/13002))
- \[`flake8-type-checking`] Always recognise relative imports as first-party ([#12994](https://redirect.github.com/astral-sh/ruff/pull/12994))
- \[`flake8-unused-arguments`] Ignore unused arguments on stub functions (`ARG001`) ([#12966](https://redirect.github.com/astral-sh/ruff/pull/12966))
- \[`pylint`] Ignore augmented assignment for `self-cls-assignment` (`PLW0642`) ([#12957](https://redirect.github.com/astral-sh/ruff/pull/12957))
##### Server
- Show full context in error log messages ([#13029](https://redirect.github.com/astral-sh/ruff/pull/13029))
##### Bug fixes
- \[`pep8-naming`] Don't flag `from` imports following conventional import names (`N817`) ([#12946](https://redirect.github.com/astral-sh/ruff/pull/12946))
- \[`pylint`] - Allow `__new__` methods to have `cls` as their first argument even if decorated with `@staticmethod` for `bad-staticmethod-argument` (`PLW0211`) ([#12958](https://redirect.github.com/astral-sh/ruff/pull/12958))
##### Documentation
- Add `hyperfine` installation instructions; update `hyperfine` code samples ([#13034](https://redirect.github.com/astral-sh/ruff/pull/13034))
- Expand note to use Ruff with other language server in Kate ([#12806](https://redirect.github.com/astral-sh/ruff/pull/12806))
- Update example for `PT001` as per the new default behavior ([#13019](https://redirect.github.com/astral-sh/ruff/pull/13019))
- \[`perflint`] Improve docs for `try-except-in-loop` (`PERF203`) ([#12947](https://redirect.github.com/astral-sh/ruff/pull/12947))
- \[`pydocstyle`] Add reference to `lint.pydocstyle.ignore-decorators` setting to rule docs ([#12996](https://redirect.github.com/astral-sh/ruff/pull/12996))
Configuration
š Schedule: Branch creation - "every weekday" (UTC), Automerge - At any time (no schedule defined).
š¦ Automerge: Enabled.
ā» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
š Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
^0.0.285 \|\| ^0.1.0 \|\| ^0.2.0 \|\| ^0.3.0 \|\| ^0.4.0 \|\| ^0.5.0 \|\| ^0.6.0
->^0.0.285 \|\| ^0.1.0 \|\| ^0.2.0 \|\| ^0.3.0 \|\| ^0.4.0 \|\| ^0.5.0 \|\| ^0.6.0 \|\| ^0.7.0
Release Notes
astral-sh/ruff (ruff)
### [`v0.7.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#073) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.2...0.7.3) ##### Preview features - Formatter: Disallow single-line implicit concatenated strings ([#13928](https://redirect.github.com/astral-sh/ruff/pull/13928)) - \[`flake8-pyi`] Include all Python file types for `PYI006` and `PYI066` ([#14059](https://redirect.github.com/astral-sh/ruff/pull/14059)) - \[`flake8-simplify`] Implement `split-of-static-string` (`SIM905`) ([#14008](https://redirect.github.com/astral-sh/ruff/pull/14008)) - \[`refurb`] Implement `subclass-builtin` (`FURB189`) ([#14105](https://redirect.github.com/astral-sh/ruff/pull/14105)) - \[`ruff`] Improve diagnostic messages and docs (`RUF031`, `RUF032`, `RUF034`) ([#14068](https://redirect.github.com/astral-sh/ruff/pull/14068)) ##### Rule changes - Detect items that hash to same value in duplicate sets (`B033`, `PLC0208`) ([#14064](https://redirect.github.com/astral-sh/ruff/pull/14064)) - \[`eradicate`] Better detection of IntelliJ language injection comments (`ERA001`) ([#14094](https://redirect.github.com/astral-sh/ruff/pull/14094)) - \[`flake8-pyi`] Add autofix for `docstring-in-stub` (`PYI021`) ([#14150](https://redirect.github.com/astral-sh/ruff/pull/14150)) - \[`flake8-pyi`] Update `duplicate-literal-member` (`PYI062`) to alawys provide an autofix ([#14188](https://redirect.github.com/astral-sh/ruff/pull/14188)) - \[`pyflakes`] Detect items that hash to same value in duplicate dictionaries (`F601`) ([#14065](https://redirect.github.com/astral-sh/ruff/pull/14065)) - \[`ruff`] Fix false positive for decorators (`RUF028`) ([#14061](https://redirect.github.com/astral-sh/ruff/pull/14061)) ##### Bug fixes - Avoid parsing joint rule codes as distinct codes in `# noqa` ([#12809](https://redirect.github.com/astral-sh/ruff/pull/12809)) - \[`eradicate`] ignore `# language=` in commented-out-code rule (ERA001) ([#14069](https://redirect.github.com/astral-sh/ruff/pull/14069)) - \[`flake8-bugbear`] - do not run `mutable-argument-default` on stubs (`B006`) ([#14058](https://redirect.github.com/astral-sh/ruff/pull/14058)) - \[`flake8-builtins`] Skip lambda expressions in `builtin-argument-shadowing (A002)` ([#14144](https://redirect.github.com/astral-sh/ruff/pull/14144)) - \[`flake8-comprehension`] Also remove trailing comma while fixing `C409` and `C419` ([#14097](https://redirect.github.com/astral-sh/ruff/pull/14097)) - \[`flake8-simplify`] Allow `open` without context manager in `return` statement (`SIM115`) ([#14066](https://redirect.github.com/astral-sh/ruff/pull/14066)) - \[`pylint`] Respect hash-equivalent literals in `iteration-over-set` (`PLC0208`) ([#14063](https://redirect.github.com/astral-sh/ruff/pull/14063)) - \[`pylint`] Update known dunder methods for Python 3.13 (`PLW3201`) ([#14146](https://redirect.github.com/astral-sh/ruff/pull/14146)) - \[`pyupgrade`] - ignore kwarg unpacking for `UP044` ([#14053](https://redirect.github.com/astral-sh/ruff/pull/14053)) - \[`refurb`] Parse more exotic decimal strings in `verbose-decimal-constructor` (`FURB157`) ([#14098](https://redirect.github.com/astral-sh/ruff/pull/14098)) ##### Documentation - Add links to missing related options within rule documentations ([#13971](https://redirect.github.com/astral-sh/ruff/pull/13971)) - Add rule short code to mkdocs tags to allow searching via rule codes ([#14040](https://redirect.github.com/astral-sh/ruff/pull/14040)) ### [`v0.7.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#072) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.1...0.7.2) ##### Preview features - Fix formatting of single with-item with trailing comment ([#14005](https://redirect.github.com/astral-sh/ruff/pull/14005)) - \[`pyupgrade`] Add PEP 646 `Unpack` conversion to `*` with fix (`UP044`) ([#13988](https://redirect.github.com/astral-sh/ruff/pull/13988)) ##### Rule changes - Regenerate `known_stdlibs.rs` with stdlibs 2024.10.25 ([#13963](https://redirect.github.com/astral-sh/ruff/pull/13963)) - \[`flake8-no-pep420`] Skip namespace package enforcement for PEP 723 scripts (`INP001`) ([#13974](https://redirect.github.com/astral-sh/ruff/pull/13974)) ##### Server - Fix server panic when undoing an edit ([#14010](https://redirect.github.com/astral-sh/ruff/pull/14010)) ##### Bug fixes - Fix issues in discovering ruff in pip build environments ([#13881](https://redirect.github.com/astral-sh/ruff/pull/13881)) - \[`flake8-type-checking`] Fix false positive for `singledispatchmethod` (`TCH003`) ([#13941](https://redirect.github.com/astral-sh/ruff/pull/13941)) - \[`flake8-type-checking`] Treat return type of `singledispatch` as runtime-required (`TCH003`) ([#13957](https://redirect.github.com/astral-sh/ruff/pull/13957)) ##### Documentation - \[`flake8-simplify`] Include caveats of enabling `if-else-block-instead-of-if-exp` (`SIM108`) ([#14019](https://redirect.github.com/astral-sh/ruff/pull/14019)) ### [`v0.7.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#071) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.7.0...0.7.1) ##### Preview features - Fix `E221` and `E222` to flag missing or extra whitespace around `==` operator ([#13890](https://redirect.github.com/astral-sh/ruff/pull/13890)) - Formatter: Alternate quotes for strings inside f-strings in preview ([#13860](https://redirect.github.com/astral-sh/ruff/pull/13860)) - Formatter: Join implicit concatenated strings when they fit on a line ([#13663](https://redirect.github.com/astral-sh/ruff/pull/13663)) - \[`pylint`] Restrict `iteration-over-set` to only work on sets of literals (`PLC0208`) ([#13731](https://redirect.github.com/astral-sh/ruff/pull/13731)) ##### Rule changes - \[`flake8-type-checking`] Support auto-quoting when annotations contain quotes ([#11811](https://redirect.github.com/astral-sh/ruff/pull/11811)) ##### Server - Avoid indexing the workspace for single-file mode ([#13770](https://redirect.github.com/astral-sh/ruff/pull/13770)) ##### Bug fixes - Make `ARG002` compatible with `EM101` when raising `NotImplementedError` ([#13714](https://redirect.github.com/astral-sh/ruff/pull/13714)) ##### Other changes - Introduce more Docker tags for Ruff (similar to uv) ([#13274](https://redirect.github.com/astral-sh/ruff/pull/13274)) ### [`v0.7.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#070) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.9...0.7.0) Check out the [blog post](https://astral.sh/blog/ruff-v0.7.0) for a migration guide and overview of the changes! ##### Breaking changes - The pytest rules `PT001` and `PT023` now default to omitting the decorator parentheses when there are no arguments ([#12838](https://redirect.github.com/astral-sh/ruff/pull/12838), [#13292](https://redirect.github.com/astral-sh/ruff/pull/13292)). This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part. See the [blog post](https://astral.sh/blog/ruff-v0.7.0) for more details. - The `useless-try-except` rule (in our `tryceratops` category) has been recoded from `TRY302` to `TRY203` ([#13502](https://redirect.github.com/astral-sh/ruff/pull/13502)). This ensures Ruff's code is consistent with the same rule in the [`tryceratops`](https://redirect.github.com/guilatrova/tryceratops) linter. - The `lint.allow-unused-imports` setting has been removed ([#13677](https://redirect.github.com/astral-sh/ruff/pull/13677)). Use [`lint.pyflakes.allow-unused-imports`](https://docs.astral.sh/ruff/settings/#lint_pyflakes_allowed-unused-imports) instead. ##### Formatter preview style - Normalize implicit concatenated f-string quotes per part ([#13539](https://redirect.github.com/astral-sh/ruff/pull/13539)) ##### Preview linter features - \[`refurb`] implement `hardcoded-string-charset` (FURB156) ([#13530](https://redirect.github.com/astral-sh/ruff/pull/13530)) - \[`refurb`] Count codepoints not bytes for `slice-to-remove-prefix-or-suffix (FURB188)` ([#13631](https://redirect.github.com/astral-sh/ruff/pull/13631)) ##### Rule changes - \[`pylint`] Mark `PLE1141` fix as unsafe ([#13629](https://redirect.github.com/astral-sh/ruff/pull/13629)) - \[`flake8-async`] Consider async generators to be "checkpoints" for `cancel-scope-no-checkpoint` (`ASYNC100`) ([#13639](https://redirect.github.com/astral-sh/ruff/pull/13639)) - \[`flake8-bugbear`] Do not suggest setting parameter `strict=` to `False` in `B905` diagnostic message ([#13656](https://redirect.github.com/astral-sh/ruff/pull/13656)) - \[`flake8-todos`] Only flag the word "TODO", not words starting with "todo" (`TD006`) ([#13640](https://redirect.github.com/astral-sh/ruff/pull/13640)) - \[`pycodestyle`] Fix whitespace-related false positives and false negatives inside type-parameter lists (`E231`, `E251`) ([#13704](https://redirect.github.com/astral-sh/ruff/pull/13704)) - \[`flake8-simplify`] Stabilize preview behavior for `SIM115` so that the rule can detect files being opened from a wider range of standard-library functions ([#12959](https://redirect.github.com/astral-sh/ruff/pull/12959)). ##### CLI - Add explanation of fixable in `--statistics` command ([#13774](https://redirect.github.com/astral-sh/ruff/pull/13774)) ##### Bug fixes - \[`pyflakes`] Allow `ipytest` cell magic (`F401`) ([#13745](https://redirect.github.com/astral-sh/ruff/pull/13745)) - \[`flake8-use-pathlib`] Fix `PTH123` false positive when `open` is passed a file descriptor ([#13616](https://redirect.github.com/astral-sh/ruff/pull/13616)) - \[`flake8-bandit`] Detect patterns from multi line SQL statements (`S608`) ([#13574](https://redirect.github.com/astral-sh/ruff/pull/13574)) - \[`flake8-pyi`] - Fix dropped expressions in `PYI030` autofix ([#13727](https://redirect.github.com/astral-sh/ruff/pull/13727)) ### [`v0.6.9`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#069) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.8...0.6.9) ##### Preview features - Fix codeblock dynamic line length calculation for indented docstring examples ([#13523](https://redirect.github.com/astral-sh/ruff/pull/13523)) - \[`refurb`] Mark `FURB118` fix as unsafe ([#13613](https://redirect.github.com/astral-sh/ruff/pull/13613)) ##### Rule changes - \[`pydocstyle`] Don't raise `D208` when last line is non-empty ([#13372](https://redirect.github.com/astral-sh/ruff/pull/13372)) - \[`pylint`] Preserve trivia (i.e. comments) in `PLR5501` autofix ([#13573](https://redirect.github.com/astral-sh/ruff/pull/13573)) ##### Configuration - \[`pyflakes`] Add `allow-unused-imports` setting for `unused-import` rule (`F401`) ([#13601](https://redirect.github.com/astral-sh/ruff/pull/13601)) ##### Bug fixes - Support ruff discovery in pip build environments ([#13591](https://redirect.github.com/astral-sh/ruff/pull/13591)) - \[`flake8-bugbear`] Avoid short circuiting `B017` for multiple context managers ([#13609](https://redirect.github.com/astral-sh/ruff/pull/13609)) - \[`pylint`] Do not offer an invalid fix for `PLR1716` when the comparisons contain parenthesis ([#13527](https://redirect.github.com/astral-sh/ruff/pull/13527)) - \[`pyupgrade`] Fix `UP043` to apply to `collections.abc.Generator` and `collections.abc.AsyncGenerator` ([#13611](https://redirect.github.com/astral-sh/ruff/pull/13611)) - \[`refurb`] Fix handling of slices in tuples for `FURB118`, e.g., `x[:, 1]` ([#13518](https://redirect.github.com/astral-sh/ruff/pull/13518)) ##### Documentation - Update GitHub Action link to `astral-sh/ruff-action` ([#13551](https://redirect.github.com/astral-sh/ruff/pull/13551)) ### [`v0.6.8`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#068) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.7...0.6.8) ##### Preview features - Remove unnecessary parentheses around `match case` clauses ([#13510](https://redirect.github.com/astral-sh/ruff/pull/13510)) - Parenthesize overlong `if` guards in `match..case` clauses ([#13513](https://redirect.github.com/astral-sh/ruff/pull/13513)) - Detect basic wildcard imports in `ruff analyze graph` ([#13486](https://redirect.github.com/astral-sh/ruff/pull/13486)) - \[`pylint`] Implement `boolean-chained-comparison` (`R1716`) ([#13435](https://redirect.github.com/astral-sh/ruff/pull/13435)) ##### Rule changes - \[`lake8-simplify`] Detect `SIM910` when using variadic keyword arguments, i.e., `**kwargs` ([#13503](https://redirect.github.com/astral-sh/ruff/pull/13503)) - \[`pyupgrade`] Avoid false negatives with non-reference shadowed bindings of loop variables (`UP028`) ([#13504](https://redirect.github.com/astral-sh/ruff/pull/13504)) ##### Bug fixes - Detect tuples bound to variadic positional arguments i.e. `*args` ([#13512](https://redirect.github.com/astral-sh/ruff/pull/13512)) - Exit gracefully on broken pipe errors ([#13485](https://redirect.github.com/astral-sh/ruff/pull/13485)) - Avoid panic when analyze graph hits broken pipe ([#13484](https://redirect.github.com/astral-sh/ruff/pull/13484)) ##### Performance - Reuse `BTreeSets` in module resolver ([#13440](https://redirect.github.com/astral-sh/ruff/pull/13440)) - Skip traversal for non-compound statements ([#13441](https://redirect.github.com/astral-sh/ruff/pull/13441)) ### [`v0.6.7`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#067) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.6...0.6.7) ##### Preview features - Add Python version support to ruff analyze CLI ([#13426](https://redirect.github.com/astral-sh/ruff/pull/13426)) - Add `exclude` support to `ruff analyze` ([#13425](https://redirect.github.com/astral-sh/ruff/pull/13425)) - Fix parentheses around return type annotations ([#13381](https://redirect.github.com/astral-sh/ruff/pull/13381)) ##### Rule changes - \[`pycodestyle`] Fix: Don't autofix if the first line ends in a question mark? (D400) ([#13399](https://redirect.github.com/astral-sh/ruff/pull/13399)) ##### Bug fixes - Respect `lint.exclude` in ruff check `--add-noqa` ([#13427](https://redirect.github.com/astral-sh/ruff/pull/13427)) ##### Performance - Avoid tracking module resolver files in Salsa ([#13437](https://redirect.github.com/astral-sh/ruff/pull/13437)) - Use `forget` for module resolver database ([#13438](https://redirect.github.com/astral-sh/ruff/pull/13438)) ### [`v0.6.6`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#066) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.5...0.6.6) ##### Preview features - \[`refurb`] Skip `slice-to-remove-prefix-or-suffix` (`FURB188`) when non-trivial slice steps are present ([#13405](https://redirect.github.com/astral-sh/ruff/pull/13405)) - Add a subcommand to generate dependency graphs ([#13402](https://redirect.github.com/astral-sh/ruff/pull/13402)) ##### Formatter - Fix placement of inline parameter comments ([#13379](https://redirect.github.com/astral-sh/ruff/pull/13379)) ##### Server - Fix off-by one error in the `LineIndex::offset` calculation ([#13407](https://redirect.github.com/astral-sh/ruff/pull/13407)) ##### Bug fixes - \[`fastapi`] Respect FastAPI aliases in route definitions ([#13394](https://redirect.github.com/astral-sh/ruff/pull/13394)) - \[`pydocstyle`] Respect word boundaries when detecting function signature in docs ([#13388](https://redirect.github.com/astral-sh/ruff/pull/13388)) ##### Documentation - Add backlinks to rule overview linter ([#13368](https://redirect.github.com/astral-sh/ruff/pull/13368)) - Fix documentation for editor vim plugin ALE ([#13348](https://redirect.github.com/astral-sh/ruff/pull/13348)) - Fix rendering of `FURB188` docs ([#13406](https://redirect.github.com/astral-sh/ruff/pull/13406)) ### [`v0.6.5`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#065) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.4...0.6.5) ##### Preview features - \[`pydoclint`] Ignore `DOC201` when function name is "**new**" ([#13300](https://redirect.github.com/astral-sh/ruff/pull/13300)) - \[`refurb`] Implement `slice-to-remove-prefix-or-suffix` (`FURB188`) ([#13256](https://redirect.github.com/astral-sh/ruff/pull/13256)) ##### Rule changes - \[`eradicate`] Ignore script-comments with multiple end-tags (`ERA001`) ([#13283](https://redirect.github.com/astral-sh/ruff/pull/13283)) - \[`pyflakes`] Improve error message for `UndefinedName` when a builtin was added in a newer version than specified in Ruff config (`F821`) ([#13293](https://redirect.github.com/astral-sh/ruff/pull/13293)) ##### Server - Add support for extensionless Python files for server ([#13326](https://redirect.github.com/astral-sh/ruff/pull/13326)) - Fix configuration inheritance for configurations specified in the LSP settings ([#13285](https://redirect.github.com/astral-sh/ruff/pull/13285)) ##### Bug fixes - \[`ruff`] Handle unary operators in `decimal-from-float-literal` (`RUF032`) ([#13275](https://redirect.github.com/astral-sh/ruff/pull/13275)) ##### CLI - Only include rules with diagnostics in SARIF metadata ([#13268](https://redirect.github.com/astral-sh/ruff/pull/13268)) ##### Playground - Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML" ([#13328](https://redirect.github.com/astral-sh/ruff/pull/13328)) - Fix errors not shown for restored snippet on page load ([#13262](https://redirect.github.com/astral-sh/ruff/pull/13262)) ### [`v0.6.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#064) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.3...0.6.4) ##### Preview features - \[`flake8-builtins`] Use dynamic builtins list based on Python version ([#13172](https://redirect.github.com/astral-sh/ruff/pull/13172)) - \[`pydoclint`] Permit yielding `None` in `DOC402` and `DOC403` ([#13148](https://redirect.github.com/astral-sh/ruff/pull/13148)) - \[`pylint`] Update diagnostic message for `PLW3201` ([#13194](https://redirect.github.com/astral-sh/ruff/pull/13194)) - \[`ruff`] Implement `post-init-default` (`RUF033`) ([#13192](https://redirect.github.com/astral-sh/ruff/pull/13192)) - \[`ruff`] Implement useless if-else (`RUF034`) ([#13218](https://redirect.github.com/astral-sh/ruff/pull/13218)) ##### Rule changes - \[`flake8-pyi`] Respect `pep8_naming.classmethod-decorators` settings when determining if a method is a classmethod in `custom-type-var-return-type` (`PYI019`) ([#13162](https://redirect.github.com/astral-sh/ruff/pull/13162)) - \[`flake8-pyi`] Teach various rules that annotations might be stringized ([#12951](https://redirect.github.com/astral-sh/ruff/pull/12951)) - \[`pylint`] Avoid `no-self-use` for `attrs`-style validators ([#13166](https://redirect.github.com/astral-sh/ruff/pull/13166)) - \[`pylint`] Recurse into subscript subexpressions when searching for list/dict lookups (`PLR1733`, `PLR1736`) ([#13186](https://redirect.github.com/astral-sh/ruff/pull/13186)) - \[`pyupgrade`] Detect `aiofiles.open` calls in `UP015` ([#13173](https://redirect.github.com/astral-sh/ruff/pull/13173)) - \[`pyupgrade`] Mark `sys.version_info[0] < 3` and similar comparisons as outdated (`UP036`) ([#13175](https://redirect.github.com/astral-sh/ruff/pull/13175)) ##### CLI - Enrich messages of SARIF results ([#13180](https://redirect.github.com/astral-sh/ruff/pull/13180)) - Handle singular case for incompatible rules warning in `ruff format` output ([#13212](https://redirect.github.com/astral-sh/ruff/pull/13212)) ##### Bug fixes - \[`pydocstyle`] Improve heuristics for detecting Google-style docstrings ([#13142](https://redirect.github.com/astral-sh/ruff/pull/13142)) - \[`refurb`] Treat `sep` arguments with effects as unsafe removals (`FURB105`) ([#13165](https://redirect.github.com/astral-sh/ruff/pull/13165)) ### [`v0.6.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#063) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.2...0.6.3) ##### Preview features - \[`flake8-simplify`] Extend `open-file-with-context-handler` to work with `dbm.sqlite3` (`SIM115`) ([#13104](https://redirect.github.com/astral-sh/ruff/pull/13104)) - \[`pycodestyle`] Disable `E741` in stub files (`.pyi`) ([#13119](https://redirect.github.com/astral-sh/ruff/pull/13119)) - \[`pydoclint`] Avoid `DOC201` on explicit returns in functions that only return `None` ([#13064](https://redirect.github.com/astral-sh/ruff/pull/13064)) ##### Rule changes - \[`flake8-async`] Disable check for `asyncio` before Python 3.11 (`ASYNC109`) ([#13023](https://redirect.github.com/astral-sh/ruff/pull/13023)) ##### Bug fixes - \[`FastAPI`] Avoid introducing invalid syntax in fix for `fast-api-non-annotated-dependency` (`FAST002`) ([#13133](https://redirect.github.com/astral-sh/ruff/pull/13133)) - \[`flake8-implicit-str-concat`] Normalize octals before merging concatenated strings in `single-line-implicit-string-concatenation` (`ISC001`) ([#13118](https://redirect.github.com/astral-sh/ruff/pull/13118)) - \[`flake8-pytest-style`] Improve help message for `pytest-incorrect-mark-parentheses-style` (`PT023`) ([#13092](https://redirect.github.com/astral-sh/ruff/pull/13092)) - \[`pylint`] Avoid autofix for calls that aren't `min` or `max` as starred expression (`PLW3301`) ([#13089](https://redirect.github.com/astral-sh/ruff/pull/13089)) - \[`ruff`] Add `datetime.time`, `datetime.tzinfo`, and `datetime.timezone` as immutable function calls (`RUF009`) ([#13109](https://redirect.github.com/astral-sh/ruff/pull/13109)) - \[`ruff`] Extend comment deletion for `RUF100` to include trailing text from `noqa` directives while preserving any following comments on the same line, if any ([#13105](https://redirect.github.com/astral-sh/ruff/pull/13105)) - Fix dark theme on initial page load for the Ruff playground ([#13077](https://redirect.github.com/astral-sh/ruff/pull/13077)) ### [`v0.6.2`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#062) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.6.1...0.6.2) ##### Preview features - \[`flake8-simplify`] Extend `open-file-with-context-handler` to work with other standard-library IO modules (`SIM115`) ([#12959](https://redirect.github.com/astral-sh/ruff/pull/12959)) - \[`ruff`] Avoid `unused-async` for functions with FastAPI route decorator (`RUF029`) ([#12938](https://redirect.github.com/astral-sh/ruff/pull/12938)) - \[`ruff`] Ignore `fstring-missing-syntax` (`RUF027`) for `fastAPI` paths ([#12939](https://redirect.github.com/astral-sh/ruff/pull/12939)) - \[`ruff`] Implement check for Decimal called with a float literal (RUF032) ([#12909](https://redirect.github.com/astral-sh/ruff/pull/12909)) ##### Rule changes - \[`flake8-bugbear`] Update diagnostic message when expression is at the end of function (`B015`) ([#12944](https://redirect.github.com/astral-sh/ruff/pull/12944)) - \[`flake8-pyi`] Skip type annotations in `string-or-bytes-too-long` (`PYI053`) ([#13002](https://redirect.github.com/astral-sh/ruff/pull/13002)) - \[`flake8-type-checking`] Always recognise relative imports as first-party ([#12994](https://redirect.github.com/astral-sh/ruff/pull/12994)) - \[`flake8-unused-arguments`] Ignore unused arguments on stub functions (`ARG001`) ([#12966](https://redirect.github.com/astral-sh/ruff/pull/12966)) - \[`pylint`] Ignore augmented assignment for `self-cls-assignment` (`PLW0642`) ([#12957](https://redirect.github.com/astral-sh/ruff/pull/12957)) ##### Server - Show full context in error log messages ([#13029](https://redirect.github.com/astral-sh/ruff/pull/13029)) ##### Bug fixes - \[`pep8-naming`] Don't flag `from` imports following conventional import names (`N817`) ([#12946](https://redirect.github.com/astral-sh/ruff/pull/12946)) - \[`pylint`] - Allow `__new__` methods to have `cls` as their first argument even if decorated with `@staticmethod` for `bad-staticmethod-argument` (`PLW0211`) ([#12958](https://redirect.github.com/astral-sh/ruff/pull/12958)) ##### Documentation - Add `hyperfine` installation instructions; update `hyperfine` code samples ([#13034](https://redirect.github.com/astral-sh/ruff/pull/13034)) - Expand note to use Ruff with other language server in Kate ([#12806](https://redirect.github.com/astral-sh/ruff/pull/12806)) - Update example for `PT001` as per the new default behavior ([#13019](https://redirect.github.com/astral-sh/ruff/pull/13019)) - \[`perflint`] Improve docs for `try-except-in-loop` (`PERF203`) ([#12947](https://redirect.github.com/astral-sh/ruff/pull/12947)) - \[`pydocstyle`] Add reference to `lint.pydocstyle.ignore-decorators` setting to rule docs ([#12996](https://redirect.github.com/astral-sh/ruff/pull/12996))Configuration
š Schedule: Branch creation - "every weekday" (UTC), Automerge - At any time (no schedule defined).
š¦ Automerge: Enabled.
ā» Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
š Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.