Release Notes
Preview features
- [
airflow
] Argumentfail_stop
in DAG has been renamed asfail_fast
(AIR302
) (#15633) - [
airflow
] ExtendAIR303
with more symbols (#15611) - [
flake8-bandit
] Report all references to suspicious functions (S3
) (#15541) - [
flake8-pytest-style
] Do not emit diagnostics for emptyfor
loops (PT012
,PT031
) (#15542) - [
flake8-simplify
] Avoid double negations (SIM103
) (#15562) - [
pyflakes
] Fix infinite loop with unused local import in__init__.py
(F401
) (#15517) - [
pylint
] Do not report methods with only oneEM101
-compatibleraise
(PLR6301
) (#15507) - [
pylint
] Implementredefined-slots-in-subclass
(W0244
) (#9640) - [
pyupgrade
] Add rules to use PEP 695 generics in classes and functions (UP046
,UP047
) (#15565, #15659) - [
refurb
] Implementfor-loop-writes
(FURB122
) (#10630) - [
ruff
] Implementneedless-else
clause (RUF047
) (#15051) - [
ruff
] Implementstarmap-zip
(RUF058
) (#15483)
Rule changes
- [
flake8-bugbear
] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (B903
) (#15549) - [
flake8-comprehensions
] strip parentheses around generators inunnecessary-generator-set
(C401
) (#15553) - [
flake8-simplify
] Mark fixes as unsafe (SIM201
,SIM202
) (#15626) - [
flake8-type-checking
] Fix some safe fixes being labeled unsafe (TC006
,TC008
) (#15638) - [
isort
] Omit trailing whitespace inunsorted-imports
(I001
) (#15518) - [
pydoclint
] Allow ignoring one line docstrings forDOC
rules (#13302) - [
pyflakes
] Apply redefinition fixes by source code order (F811
) (#15575) - [
pyflakes
] Avoid removing too many imports inredefined-while-unused
(F811
) (#15585) - [
pyflakes
] Group redefinition fixes by source statement (F811
) (#15574) - [
pylint
] Include name of base class in message forredefined-slots-in-subclass
(W0244
) (#15559) - [
ruff
] Update fix forRUF055
to usevar == value
(#15605)
Formatter
- Fix bracket spacing for single-element tuples in f-string expressions (#15537)
- Fix unstable f-string formatting for expressions containing a trailing comma (#15545)
Performance
- Avoid quadratic membership check in import fixes (#15576)
Server
- Allow
unsafe-fixes
settings for code actions (#15666)
Bug fixes
- [
flake8-bandit
] Add missing single-line/dotall regex flag (S608
) (#15654) - [
flake8-simplify
] Do not emit diagnostics for expressions inside string type annotations (SIM222
,SIM223
) (#15405) - [
pyflakes
] Treat arguments passed to thedefault=
parameter ofTypeVar
as type expressions (F821
) (#15679) - [
pyupgrade
] Avoid syntax error when the iterable is a non-parenthesized tuple (UP028
) (#15543) - [
ruff
] ExemptNewType
calls where the original type is immutable (RUF009
) (#15588) - [
unconventional-import-alias
] Fix infinite loop betweenICN001
andI002
(ICN001
) (#15480)
Documentation
- Generate documentation redirects for lowercase rule codes (#15564)
TRY300
: Add some extra notes on not catching exceptions you didn't expect (#15036)
Install ruff 0.9.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.9.3/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.9.3/ruff-installer.ps1 | iex"