astral-sh/ruff (ruff)
### [`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))
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, 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.6.0
->^0.7.0
Release Notes
astral-sh/ruff (ruff)
### [`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))Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, 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.