Releases: astral-sh/ruff
Releases · astral-sh/ruff
0.7.3
Release Notes
Preview features
- Formatter: Disallow single-line implicit concatenated strings (#13928)
- [
flake8-pyi
] Include all Python file types forPYI006
andPYI066
(#14059) - [
flake8-simplify
] Implementsplit-of-static-string
(SIM905
) (#14008) - [
refurb
] Implementsubclass-builtin
(FURB189
) (#14105) - [
ruff
] Improve diagnostic messages and docs (RUF031
,RUF032
,RUF034
) (#14068)
Rule changes
- Detect items that hash to same value in duplicate sets (
B033
,PLC0208
) (#14064) - [
eradicate
] Better detection of IntelliJ language injection comments (ERA001
) (#14094) - [
flake8-pyi
] Add autofix fordocstring-in-stub
(PYI021
) (#14150) - [
flake8-pyi
] Updateduplicate-literal-member
(PYI062
) to alawys provide an autofix (#14188) - [
pyflakes
] Detect items that hash to same value in duplicate dictionaries (F601
) (#14065) - [
ruff
] Fix false positive for decorators (RUF028
) (#14061)
Bug fixes
- Avoid parsing joint rule codes as distinct codes in
# noqa
(#12809) - [
eradicate
] ignore# language=
in commented-out-code rule (ERA001) (#14069) - [
flake8-bugbear
] - do not runmutable-argument-default
on stubs (B006
) (#14058) - [
flake8-builtins
] Skip lambda expressions inbuiltin-argument-shadowing (A002)
(#14144) - [
flake8-comprehension
] Also remove trailing comma while fixingC409
andC419
(#14097) - [
flake8-simplify
] Allowopen
without context manager inreturn
statement (SIM115
) (#14066) - [
pylint
] Respect hash-equivalent literals initeration-over-set
(PLC0208
) (#14063) - [
pylint
] Update known dunder methods for Python 3.13 (PLW3201
) (#14146) - [
pyupgrade
] - ignore kwarg unpacking forUP044
(#14053) - [
refurb
] Parse more exotic decimal strings inverbose-decimal-constructor
(FURB157
) (#14098)
Documentation
- Add links to missing related options within rule documentations (#13971)
- Add rule short code to mkdocs tags to allow searching via rule codes (#14040)
Install ruff 0.7.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.7.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.7.3/ruff-installer.ps1 | iex"
Download ruff 0.7.3
0.7.2
Release Notes
Preview features
- Fix formatting of single with-item with trailing comment (#14005)
- [
pyupgrade
] Add PEP 646Unpack
conversion to*
with fix (UP044
) (#13988)
Rule changes
- Regenerate
known_stdlibs.rs
with stdlibs 2024.10.25 (#13963) - [
flake8-no-pep420
] Skip namespace package enforcement for PEP 723 scripts (INP001
) (#13974)
Server
- Fix server panic when undoing an edit (#14010)
Bug fixes
- Fix issues in discovering ruff in pip build environments (#13881)
- [
flake8-type-checking
] Fix false positive forsingledispatchmethod
(TCH003
) (#13941) - [
flake8-type-checking
] Treat return type ofsingledispatch
as runtime-required (TCH003
) (#13957)
Documentation
- [
flake8-simplify
] Include caveats of enablingif-else-block-instead-of-if-exp
(SIM108
) (#14019)
Install ruff 0.7.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.7.2/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.7.2/ruff-installer.ps1 | iex"
Download ruff 0.7.2
0.7.1
Release Notes
Preview features
- Fix
E221
andE222
to flag missing or extra whitespace around==
operator (#13890) - Formatter: Alternate quotes for strings inside f-strings in preview (#13860)
- Formatter: Join implicit concatenated strings when they fit on a line (#13663)
- [
pylint
] Restrictiteration-over-set
to only work on sets of literals (PLC0208
) (#13731)
Rule changes
- [
flake8-type-checking
] Support auto-quoting when annotations contain quotes (#11811)
Server
- Avoid indexing the workspace for single-file mode (#13770)
Bug fixes
- Make
ARG002
compatible withEM101
when raisingNotImplementedError
(#13714)
Other changes
- Introduce more Docker tags for Ruff (similar to uv) (#13274)
Contributors
- @Aditya-PS-05
- @AlexWaygood
- @Glyphack
- @Lexxxzy
- @MichaReiser
- @TomerBin
- @Watercycle
- @cake-monotone
- @carljm
- @dhruvmanila
- @diceroll123
- @mihaic
- @ndmitchell
- @pilleye
- @renovate
- @rtpg
- @samypr100
- @sharkdp
Install ruff 0.7.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.7.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.7.1/ruff-installer.ps1 | iex"
Download ruff 0.7.1
0.7.0
Release Notes
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
- The pytest rules
PT001
andPT023
now default to omitting the decorator parentheses when there are no arguments
(#12838, #13292).
This was a change that we attempted to make in Ruff v0.6.0, but only partially made due to an error on our part.
See the blog post for more details. - The
useless-try-except
rule (in ourtryceratops
category) has been recoded fromTRY302
to
TRY203
(#13502). This ensures Ruff's code is consistent with
the same rule in thetryceratops
linter. - The
lint.allow-unused-imports
setting has been removed (#13677). Use
lint.pyflakes.allow-unused-imports
instead.
Formatter preview style
- Normalize implicit concatenated f-string quotes per part (#13539)
Preview linter features
- [
refurb
] implementhardcoded-string-charset
(FURB156) (#13530) - [
refurb
] Count codepoints not bytes forslice-to-remove-prefix-or-suffix (FURB188)
(#13631)
Rule changes
- [
pylint
] MarkPLE1141
fix as unsafe (#13629) - [
flake8-async
] Consider async generators to be "checkpoints" forcancel-scope-no-checkpoint
(ASYNC100
) (#13639) - [
flake8-bugbear
] Do not suggest setting parameterstrict=
toFalse
inB905
diagnostic message (#13656) - [
flake8-todos
] Only flag the word "TODO", not words starting with "todo" (TD006
) (#13640) - [
pycodestyle
] Fix whitespace-related false positives and false negatives inside type-parameter lists (E231
,E251
) (#13704) - [
flake8-simplify
] Stabilize preview behavior forSIM115
so that the rule can detect files
being opened from a wider range of standard-library functions (#12959).
CLI
- Add explanation of fixable in
--statistics
command (#13774)
Bug fixes
- [
pyflakes
] Allowipytest
cell magic (F401
) (#13745) - [
flake8-use-pathlib
] FixPTH123
false positive whenopen
is passed a file descriptor (#13616) - [
flake8-bandit
] Detect patterns from multi line SQL statements (S608
) (#13574) - [
flake8-pyi
] - Fix dropped expressions inPYI030
autofix (#13727)
Contributors
- @AlexWaygood
- @DataEnggNerd
- @Lexxxzy
- @MichaReiser
- @Slyces
- @alex-700
- @autinerd
- @cake-monotone
- @carljm
- @dhruvmanila
- @diceroll123
- @dylwil3
- @github-actions
- @pilleye
- @qdegraaf
- @renovate
- @rtpg
- @sbrugman
- @sharkdp
- @zanieb
Install ruff 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.7.0/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.7.0/ruff-installer.ps1 | iex"
Download ruff 0.7.0
0.6.9
Release Notes
Preview features
- Fix codeblock dynamic line length calculation for indented docstring examples (#13523)
- [
refurb
] MarkFURB118
fix as unsafe (#13613)
Rule changes
- [
pydocstyle
] Don't raiseD208
when last line is non-empty (#13372) - [
pylint
] Preserve trivia (i.e. comments) inPLR5501
autofix (#13573)
Configuration
- [
pyflakes
] Addallow-unused-imports
setting forunused-import
rule (F401
) (#13601)
Bug fixes
- Support ruff discovery in pip build environments (#13591)
- [
flake8-bugbear
] Avoid short circuitingB017
for multiple context managers (#13609) - [
pylint
] Do not offer an invalid fix forPLR1716
when the comparisons contain parenthesis (#13527) - [
pyupgrade
] FixUP043
to apply tocollections.abc.Generator
andcollections.abc.AsyncGenerator
(#13611) - [
refurb
] Fix handling of slices in tuples forFURB118
, e.g.,x[:, 1]
(#13518)
Documentation
- Update GitHub Action link to
astral-sh/ruff-action
(#13551)
Install ruff 0.6.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.9/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.9/ruff-installer.ps1 | iex"
Download ruff 0.6.9
0.6.8
Release Notes
Preview features
- Remove unnecessary parentheses around
match case
clauses (#13510) - Parenthesize overlong
if
guards inmatch..case
clauses (#13513) - Detect basic wildcard imports in
ruff analyze graph
(#13486) - [
pylint
] Implementboolean-chained-comparison
(R1716
) (#13435)
Rule changes
- [
lake8-simplify
] DetectSIM910
when using variadic keyword arguments, i.e.,**kwargs
(#13503) - [
pyupgrade
] Avoid false negatives with non-reference shadowed bindings of loop variables (UP028
) (#13504)
Bug fixes
- Detect tuples bound to variadic positional arguments i.e.
*args
(#13512) - Exit gracefully on broken pipe errors (#13485)
- Avoid panic when analyze graph hits broken pipe (#13484)
Performance
Contributors
- @MichaReiser
- @TomerBin
- @charliermarsh
- @diceroll123
- @dylwil3
- @haarisr
- @renovate
- @sbrugman
- @vincevannoort
- @zanieb
Install ruff 0.6.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.8/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.8/ruff-installer.ps1 | iex"
Download ruff 0.6.8
0.6.7
Release Notes
Preview features
- Add Python version support to ruff analyze CLI (#13426)
- Add
exclude
support toruff analyze
(#13425) - Fix parentheses around return type annotations (#13381)
Rule changes
- [
pycodestyle
] Fix: Don't autofix if the first line ends in a question mark? (D400) (#13399)
Bug fixes
- Respect
lint.exclude
in ruff check--add-noqa
(#13427)
Performance
- Avoid tracking module resolver files in Salsa (#13437)
- Use
forget
for module resolver database (#13438)
Install ruff 0.6.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.7/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy ByPass -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.7/ruff-installer.ps1 | iex"
Download ruff 0.6.7
0.6.6
Release Notes
Preview features
- [
refurb
] Skipslice-to-remove-prefix-or-suffix
(FURB188
) when non-trivial slice steps are present (#13405) - Add a subcommand to generate dependency graphs (#13402)
Formatter
- Fix placement of inline parameter comments (#13379)
Server
- Fix off-by one error in the
LineIndex::offset
calculation (#13407)
Bug fixes
- [
fastapi
] Respect FastAPI aliases in route definitions (#13394) - [
pydocstyle
] Respect word boundaries when detecting function signature in docs (#13388)
Documentation
- Add backlinks to rule overview linter (#13368)
- Fix documentation for editor vim plugin ALE (#13348)
- Fix rendering of
FURB188
docs (#13406)
Install ruff 0.6.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.6/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.6/ruff-installer.ps1 | iex"
Download ruff 0.6.6
0.6.5
Release Notes
Preview features
- [
pydoclint
] IgnoreDOC201
when function name is "new" (#13300) - [
refurb
] Implementslice-to-remove-prefix-or-suffix
(FURB188
) (#13256)
Rule changes
- [
eradicate
] Ignore script-comments with multiple end-tags (ERA001
) (#13283) - [
pyflakes
] Improve error message forUndefinedName
when a builtin was added in a newer version than specified in Ruff config (F821
) (#13293)
Server
- Add support for extensionless Python files for server (#13326)
- Fix configuration inheritance for configurations specified in the LSP settings (#13285)
Bug fixes
- [
ruff
] Handle unary operators indecimal-from-float-literal
(RUF032
) (#13275)
CLI
- Only include rules with diagnostics in SARIF metadata (#13268)
Playground
- Add "Copy as pyproject.toml/ruff.toml" and "Paste from TOML" (#13328)
- Fix errors not shown for restored snippet on page load (#13262)
Contributors
- @AlexWaygood
- @MichaReiser
- @RussellLuo
- @Slyces
- @augustelalande
- @calumy
- @carljm
- @dhruvmanila
- @dizzy57
- @dylwil3
- @renovate
Install ruff 0.6.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.5/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.5/ruff-installer.ps1 | iex"
Download ruff 0.6.5
0.6.4
Release Notes
Preview features
- [
flake8-builtins
] Use dynamic builtins list based on Python version (#13172) - [
pydoclint
] Permit yieldingNone
inDOC402
andDOC403
(#13148) - [
pylint
] Update diagnostic message forPLW3201
(#13194) - [
ruff
] Implementpost-init-default
(RUF033
) (#13192) - [
ruff
] Implement useless if-else (RUF034
) (#13218)
Rule changes
- [
flake8-pyi
] Respectpep8_naming.classmethod-decorators
settings when determining if a method is a classmethod incustom-type-var-return-type
(PYI019
) (#13162) - [
flake8-pyi
] Teach various rules that annotations might be stringized (#12951) - [
pylint
] Avoidno-self-use
forattrs
-style validators (#13166) - [
pylint
] Recurse into subscript subexpressions when searching for list/dict lookups (PLR1733
,PLR1736
) (#13186) - [
pyupgrade
] Detectaiofiles.open
calls inUP015
(#13173) - [
pyupgrade
] Marksys.version_info[0] < 3
and similar comparisons as outdated (UP036
) (#13175)
CLI
- Enrich messages of SARIF results (#13180)
- Handle singular case for incompatible rules warning in
ruff format
output (#13212)
Bug fixes
- [
pydocstyle
] Improve heuristics for detecting Google-style docstrings (#13142) - [
refurb
] Treatsep
arguments with effects as unsafe removals (FURB105
) (#13165)
Contributors
- @AlexWaygood
- @Jinior
- @MichaReiser
- @RubenVanEldik
- @RussellLuo
- @Slyces
- @carljm
- @charliermarsh
- @chriskrycho
- @dhruvmanila
- @dylwil3
- @github-actions
- @iamlucasvieira
- @jamesbraza
- @renovate
- @tjkuson
- @zhoufanjin
Install ruff 0.6.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.4/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.4/ruff-installer.ps1 | iex"