|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## 0.15.9 |
| 4 | + |
| 5 | +Released on 2026-04-02. |
| 6 | + |
| 7 | +### Preview features |
| 8 | + |
| 9 | +- \[`pyflakes`\] Flag annotated variable redeclarations as `F811` in preview mode ([#24244](https://github.com/astral-sh/ruff/pull/24244)) |
| 10 | +- \[`ruff`\] Allow dunder-named assignments in non-strict mode for `RUF067` ([#24089](https://github.com/astral-sh/ruff/pull/24089)) |
| 11 | + |
| 12 | +### Bug fixes |
| 13 | + |
| 14 | +- \[`flake8-errmsg`\] Avoid shadowing existing `msg` in fix for `EM101` ([#24363](https://github.com/astral-sh/ruff/pull/24363)) |
| 15 | +- \[`flake8-simplify`\] Ignore pre-initialization references in `SIM113` ([#24235](https://github.com/astral-sh/ruff/pull/24235)) |
| 16 | +- \[`pycodestyle`\] Fix `W391` fixes for consecutive empty notebook cells ([#24236](https://github.com/astral-sh/ruff/pull/24236)) |
| 17 | +- \[`pyupgrade`\] Fix `UP008` nested class matching ([#24273](https://github.com/astral-sh/ruff/pull/24273)) |
| 18 | +- \[`pyupgrade`\] Ignore strings with string-only escapes (`UP012`) ([#16058](https://github.com/astral-sh/ruff/pull/16058)) |
| 19 | +- \[`ruff`\] `RUF072`: skip formfeeds on dedent ([#24308](https://github.com/astral-sh/ruff/pull/24308)) |
| 20 | +- \[`ruff`\] Avoid re-using symbol in `RUF024` fix ([#24316](https://github.com/astral-sh/ruff/pull/24316)) |
| 21 | +- \[`ruff`\] Parenthesize expression in `RUF050` fix ([#24234](https://github.com/astral-sh/ruff/pull/24234)) |
| 22 | +- Disallow starred expressions as values of starred expressions ([#24280](https://github.com/astral-sh/ruff/pull/24280)) |
| 23 | + |
| 24 | +### Rule changes |
| 25 | + |
| 26 | +- \[`flake8-simplify`\] Suppress `SIM105` for `except*` before Python 3.12 ([#23869](https://github.com/astral-sh/ruff/pull/23869)) |
| 27 | +- \[`pyflakes`\] Extend `F507` to flag `%`-format strings with zero placeholders ([#24215](https://github.com/astral-sh/ruff/pull/24215)) |
| 28 | +- \[`pyupgrade`\] `UP018` should detect more unnecessarily wrapped literals (UP018) ([#24093](https://github.com/astral-sh/ruff/pull/24093)) |
| 29 | +- \[`pyupgrade`\] Fix `UP008` callable scope handling to support lambdas ([#24274](https://github.com/astral-sh/ruff/pull/24274)) |
| 30 | +- \[`ruff`\] `RUF010`: Mark fix as unsafe when it deletes a comment ([#24270](https://github.com/astral-sh/ruff/pull/24270)) |
| 31 | + |
| 32 | +### Formatter |
| 33 | + |
| 34 | +- Add `nested-string-quote-style` formatting option ([#24312](https://github.com/astral-sh/ruff/pull/24312)) |
| 35 | + |
| 36 | +### Documentation |
| 37 | + |
| 38 | +- \[`flake8-bugbear`\] Clarify RUF071 fix safety for non-path string comparisons ([#24149](https://github.com/astral-sh/ruff/pull/24149)) |
| 39 | +- \[`flake8-type-checking`\] Clarify import cycle wording for `TC001`/`TC002`/`TC003` ([#24322](https://github.com/astral-sh/ruff/pull/24322)) |
| 40 | + |
| 41 | +### Other changes |
| 42 | + |
| 43 | +- Avoid rendering fix lines with trailing whitespace after `|` ([#24343](https://github.com/astral-sh/ruff/pull/24343)) |
| 44 | + |
| 45 | +### Contributors |
| 46 | + |
| 47 | +- [@charliermarsh](https://github.com/charliermarsh) |
| 48 | +- [@MichaReiser](https://github.com/MichaReiser) |
| 49 | +- [@tranhoangtu-it](https://github.com/tranhoangtu-it) |
| 50 | +- [@dylwil3](https://github.com/dylwil3) |
| 51 | +- [@zsol](https://github.com/zsol) |
| 52 | +- [@renovate](https://github.com/renovate) |
| 53 | +- [@bitloi](https://github.com/bitloi) |
| 54 | +- [@danparizher](https://github.com/danparizher) |
| 55 | +- [@chinar-amrutkar](https://github.com/chinar-amrutkar) |
| 56 | +- [@second-ed](https://github.com/second-ed) |
| 57 | +- [@getehen](https://github.com/getehen) |
| 58 | +- [@Redovo1](https://github.com/Redovo1) |
| 59 | +- [@matthewlloyd](https://github.com/matthewlloyd) |
| 60 | +- [@zanieb](https://github.com/zanieb) |
| 61 | +- [@InSyncWithFoo](https://github.com/InSyncWithFoo) |
| 62 | +- [@RenzoMXD](https://github.com/RenzoMXD) |
| 63 | + |
3 | 64 | ## 0.15.8 |
4 | 65 |
|
5 | 66 | Released on 2026-03-26. |
|
0 commit comments