Release Notes
Preview features
- Formatter: Avoid invalid syntax for format-spec with quotes for all Python versions (#14625)
- Formatter: Consider quotes inside format-specs when choosing the quotes for an f-string (#14493)
- Formatter: Do not consider f-strings with escaped newlines as multiline (#14624)
- Formatter: Fix f-string formatting in assignment statement (#14454)
- Formatter: Fix unnecessary space around power operator (
**
) in overlong f-string expressions (#14489) - [
airflow
] Avoid implicitschedule
argument toDAG
and@dag
(AIR301
) (#14581) - [
flake8-builtins
] Exempt private built-in modules (A005
) (#14505) - [
flake8-pytest-style
] Fixpytest.mark.parametrize
rules to check calls instead of decorators (#14515) - [
flake8-type-checking
] Implementruntime-cast-value
(TC006
) (#14511) - [
flake8-type-checking
] Implementunquoted-type-alias
(TC007
) andquoted-type-alias
(TC008
) (#12927) - [
flake8-use-pathlib
] RecommendPath.iterdir()
overos.listdir()
(PTH208
) (#14509) - [
pylint
] Extendinvalid-envvar-default
to detectos.environ.get
(PLW1508
) (#14512) - [
pylint
] Implementlen-test
(PLC1802
) (#14309) - [
refurb
] Fix bug where methods defined using lambdas were flagged byFURB118
(#14639) - [
ruff
] Auto-addr
prefix when string has no backslashes forunraw-re-pattern
(RUF039
) (#14536) - [
ruff
] Implementinvalid-assert-message-literal-argument
(RUF040
) (#14488) - [
ruff
] Implementunnecessary-nested-literal
(RUF041
) (#14323) - [
ruff
] Implementunnecessary-regular-expression
(RUF055
) (#14659)
Rule changes
- Ignore more rules for stub files (#14541)
- [
pep8-naming
] Eliminate false positives for single-letter names (N811
,N814
) (#14584) - [
pyflakes
] Avoid false positives in@no_type_check
contexts (F821
,F722
) (#14615) - [
ruff
] Detect redirected-noqa in file-level comments (RUF101
) (#14635) - [
ruff
] Mark fixes forunsorted-dunder-all
andunsorted-dunder-slots
as unsafe when there are complex comments in the sequence (RUF022
,RUF023
) (#14560)
Bug fixes
- Avoid fixing code to
None | None
forredundant-none-literal
(PYI061
) andnever-union
(RUF020
) (#14583, #14589) - [
flake8-bugbear
] Fixmutable-contextvar-default
to resolve annotated function calls properly (B039
) (#14532) - [
flake8-pyi
,ruff
] Fix traversal of nested literals and unions (PYI016
,PYI051
,PYI055
,PYI062
,RUF041
) (#14641) - [
flake8-pyi
] Avoid rewriting invalid type expressions inunnecessary-type-union
(PYI055
) (#14660) - [
flake8-type-checking
] Avoid syntax errors and type checking problem for quoted annotations autofix (TC003
,TC006
) (#14634) - [
pylint
] Do not wrap function calls in parentheses in the fix for unnecessary-dunder-call (PLC2801
) (#14601) - [
ruff
] Handleattrs
'sauto_attribs
correctly (RUF009
) (#14520)
Contributors
- @AlexWaygood
- @Daverball
- @Glyphack
- @InSyncWithFoo
- @Lokejoke
- @MichaReiser
- @cake-monotone
- @carljm
- @charliermarsh
- @connorskees
- @dhruvmanila
- @dylwil3
- @harupy
- @njhearp
- @ntBre
- @renovate
- @sbrugman
- @sharkdp
- @snowdrop4
- @sransara
- @uranusjr
Install ruff 0.8.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.8.1/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.8.1/ruff-installer.ps1 | iex"