Changes
Preview features
- Formatter: Hug multiline-strings in preview style (#9243)
- [
flake8-bandit
] Addssl-with-no-version
(S504
) (#9384) - [
flake8-bandit
] Implementssl-insecure-version
(S502
) (#9390) - [
flake8-bandit
] Implementssl-with-bad-defaults
(S503
) (#9391) - [
flake8-bandit
] Implement suspicious import rules (S4XX
) (#8831) - [
flake8-simplify
] Implementzip-dict-keys-and-values
(SIM911
) (#9460) - [
pyflakes
] Add a fix forredefined-while-unused
(F811
) (#9419) - [
pylint
] Implementunnecessary-dunder-call
(C2801
) (#9166) - [
ruff
] Addparenthesize-chained-operators
(RUF021
) to enforce parentheses ina or b and c
(#9440)
Rule changes
- [
flake8-boolean-trap
] Allow Boolean positional arguments in setters (#9429) - [
flake8-builtins
] Restrictbuiltin-attribute-shadowing
(A003
) to actual shadowed references (#9462) - [
flake8-pyi
] Add fix forgenerator-return-from-iter-method
(PYI058
) (#9355) - [
pyflakes
] Don't flagredefined-while-unused
(F811
) inif
branches (#9418) - [
pyupgrade
] Add some additional Python 3.12 typing members todeprecated-import
(#9445) - [
ruff
] Add fix forparenthesize-chained-operators
(RUF021
) (#9449) - [
ruff
] Include subscripts and attributes in static key rule (RUF011
) (#9416) - [
ruff
] Support variable keys in static dictionary key rule (RUF011
) (#9411)
Formatter
- Generate deterministic IDs when formatting notebooks (#9359)
- Allow
# fmt: skip
with interspersed same-line comments (#9395) - Parenthesize breaking named expressions in match guards (#9396)
Bug fixes
- Add cell indexes to all diagnostics (#9387)
- Avoid infinite loop in constant vs.
None
comparisons (#9376) - Handle raises with implicit alternate branches (#9377)
- Ignore trailing quotes for unclosed l-brace errors (#9388)
- Respect multi-segment submodule imports when resolving qualified names (#9382)
- Use
DisplayParseError
for stdin parser errors (#9409) - Use
comment_ranges
for isort directive extraction (#9414) - Use transformed source code for diagnostic locations (#9408)
- [
flake8-pyi
] Excludewarnings.deprecated
andtyping_extensions.deprecated
arguments (#9423) - [
flake8-pyi
] Fix false negative forunused-private-protocol
(PYI046
) with unused generic protocols (#9405) - [
pydocstyle
] Disambiguate argument descriptors from section headers (#9427) - [
pylint
] HomogenizePLR0914
message to match otherPLR09XX
rules (#9399) - [
ruff
] AllowHashable = None
in type annotations (RUF013
) (#9442)