Repository navigation
v0.3.0
·
11646 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
This release introduces the new Ruff formatter 2024.2 style and adds a new lint rule to
detect invalid formatter suppression comments.
Changes
Preview features
- [
flake8-bandit] Remove suspicious-lxml-import (S410) (#10154) - [
pycodestyle] Allowos.environmodifications between imports (E402) (#10066) - [
pycodestyle] Don't warn about a single whitespace character before a comma in a tuple (E203) (#10094)
Rule changes
- [
eradicate] Detect commented outcasestatements (ERA001) (#10055) - [
eradicate] Detect single-line code fortry:,except:, etc. (ERA001) (#10057) - [
flake8-boolean-trap] Allow boolean positionals in__post_init__(#10027) - [
flake8-copyright] Allow Β© in copyright notices (#10065) - [
isort]: Use one blank line after imports in typing stub files (#9971) - [
pylint] New Ruledict-iter-missing-items(PLE1141) (#9845) - [
pylint] Ignoresys.versionandsys.platform(PLR1714) (#10054) - [
pyupgrade] Detect literals with unary operators (UP018) (#10060) - [
ruff] Expand rule forlist(iterable).pop(0)idiom (RUF015) (#10148)
Formatter
This release introduces the Ruff 2024.2 style, stabilizing the following changes:
- Prefer splitting the assignment's value over the target or type annotation (#8943)
- Remove blank lines before class docstrings (#9154)
- Wrap multiple context managers in
withparentheses when targeting Python 3.9 or newer (#9222) - Add a blank line after nested classes with a dummy body (
...) in typing stub files (#9155) - Reduce vertical spacing for classes and functions with a dummy (
...) body (#7440, #9240) - Add a blank line after the module docstring (#8283)
- Parenthesize long type hints in assignments (#9210)
- Preserve indent for single multiline-string call-expressions (#9673)
- Normalize hex escape and unicode escape sequences (#9280)
- Format module docstrings (#9725)
CLI
- Explicitly disallow
extendas part of a--configflag (#10135) - Remove
buildfrom the default exclusion list (#10093) - Deprecate
ruff <path>,ruff --explain,ruff --clean, andruff --generate-shell-completionin favor ofruff check <path>,ruff rule,ruff clean, andruff generate-shell-completion(#10169) - Remove the deprecated CLI option
--formatfromruff ruleandruff linter(#10170)
Bug fixes
- [
flake8-bugbear] Avoid adding default initializers to stubs (B006) (#10152) - [
flake8-type-checking] Respect runtime-required decorators for function signatures (#10091) - [
pycodestyle] Mark fixes overlapping with a multiline string as unsafe (W293) (#10049) - [
pydocstyle] Trim whitespace when removing blank lines after section (D413) (#10162) - [
pylint] Delete entire statement, including semicolons (PLR0203) (#10074) - [
ruff] Avoid f-string false positives ingettextcalls (RUF027) (#10118) - Fix
ruffcrashing on PowerPC systems because of too small page size (#10080)
Performance
- Add cold attribute to less likely printer queue branches in the formatter (#10121)
- Skip unnecessary string normalization in the formatter (#10116)
Documentation
- Remove "Beta" Label from formatter documentation (#10144)
line-lengthoption: fix link topycodestyle.max-line-length(#10136)