Releases: astral-sh/ruff
Releases · astral-sh/ruff
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"
Download ruff 0.6.4
0.6.3
Release Notes
Preview features
- [
flake8-simplify
] Extendopen-file-with-context-handler
to work withdbm.sqlite3
(SIM115
) (#13104) - [
pycodestyle
] DisableE741
in stub files (.pyi
) (#13119) - [
pydoclint
] AvoidDOC201
on explicit returns in functions that only returnNone
(#13064)
Rule changes
- [
flake8-async
] Disable check forasyncio
before Python 3.11 (ASYNC109
) (#13023)
Bug fixes
- [
FastAPI
] Avoid introducing invalid syntax in fix forfast-api-non-annotated-dependency
(FAST002
) (#13133) - [
flake8-implicit-str-concat
] Normalize octals before merging concatenated strings insingle-line-implicit-string-concatenation
(ISC001
) (#13118) - [
flake8-pytest-style
] Improve help message forpytest-incorrect-mark-parentheses-style
(PT023
) (#13092) - [
pylint
] Avoid autofix for calls that aren'tmin
ormax
as starred expression (PLW3301
) (#13089) - [
ruff
] Adddatetime.time
,datetime.tzinfo
, anddatetime.timezone
as immutable function calls (RUF009
) (#13109) - [
ruff
] Extend comment deletion forRUF100
to include trailing text fromnoqa
directives while preserving any following comments on the same line, if any (#13105) - Fix dark theme on initial page load for the Ruff playground (#13077)
Contributors
- @AlexWaygood
- @JonathanPlasse
- @MichaReiser
- @N-Wouda
- @PalAditya
- @arkuhn
- @calumy
- @carljm
- @chriskrycho
- @dhruvmanila
- @diceroll123
- @dylwil3
- @renovate
- @teofr
- @tjkuson
- @vdwees
Install ruff 0.6.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.3/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.3/ruff-installer.ps1 | iex"
Download ruff 0.6.3
0.6.2
Release Notes
Preview features
- [
flake8-simplify
] Extendopen-file-with-context-handler
to work with other standard-library IO modules (SIM115
) (#12959) - [
ruff
] Avoidunused-async
for functions with FastAPI route decorator (RUF029
) (#12938) - [
ruff
] Ignorefstring-missing-syntax
(RUF027
) forfastAPI
paths (#12939) - [
ruff
] Implement check for Decimal called with a float literal (RUF032) (#12909)
Rule changes
- [
flake8-bugbear
] Update diagnostic message when expression is at the end of function (B015
) (#12944) - [
flake8-pyi
] Skip type annotations instring-or-bytes-too-long
(PYI053
) (#13002) - [
flake8-type-checking
] Always recognise relative imports as first-party (#12994) - [
flake8-unused-arguments
] Ignore unused arguments on stub functions (ARG001
) (#12966) - [
pylint
] Ignore augmented assignment forself-cls-assignment
(PLW0642
) (#12957)
Server
- Show full context in error log messages (#13029)
Bug fixes
- [
pep8-naming
] Don't flagfrom
imports following conventional import names (N817
) (#12946) - [
pylint
] - Allow__new__
methods to havecls
as their first argument even if decorated with@staticmethod
forbad-staticmethod-argument
(PLW0211
) (#12958)
Documentation
- Add
hyperfine
installation instructions; updatehyperfine
code samples (#13034) - Expand note to use Ruff with other language server in Kate (#12806)
- Update example for
PT001
as per the new default behavior (#13019) - [
perflint
] Improve docs fortry-except-in-loop
(PERF203
) (#12947) - [
pydocstyle
] Add reference tolint.pydocstyle.ignore-decorators
setting to rule docs (#12996)
Contributors
- @AlexWaygood
- @FinchPowers
- @InSyncWithFoo
- @MichaReiser
- @Skylion007
- @TomerBin
- @carljm
- @charliermarsh
- @dhruvmanila
- @diceroll123
- @dsal3389
- @dylwil3
- @kbaskett248
- @lengau
- @mkniewallner
- @olp-cs
- @renovate
- @tfardet
Install ruff 0.6.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.2/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.2/ruff-installer.ps1 | iex"
Download ruff 0.6.2
0.6.1
Release Notes
This is a hotfix release to address an issue with ruff-pre-commit
. In v0.6, Ruff changed its behavior to lint and format Jupyter notebooks by default; however, due to an oversight, these files were still excluded by default if Ruff was run via pre-commit, leading to inconsistent behavior. This has now been fixed.
Preview features
- [
fastapi
] Implementfast-api-unused-path-parameter
(FAST003
) (#12638)
Rule changes
- [
pylint
] Renametoo-many-positional
totoo-many-positional-arguments
(R0917
) (#12905)
Server
- Fix crash when applying "fix-all" code-action to notebook cells (#12929)
Other changes
- [
flake8-naming
]: Respect import conventions (N817
) (#12922)
Contributors
Install ruff 0.6.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.1/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.1/ruff-installer.ps1 | iex"
Download ruff 0.6.1
0.6.0
Release Notes
Check out the blog post for a migration guide and overview of the changes!
Breaking changes
See also, the "Remapped rules" section which may result in disabled rules.
- Lint and format Jupyter Notebook by default (#12878).
- Detect imports in
src
layouts by default forisort
rules (#12848) - The pytest rules
PT001
andPT023
now default to omitting the decorator parentheses when there are no arguments (#12838).
Deprecations
The following rules are now deprecated:
pytest-missing-fixture-name-underscore
(PT004
)pytest-incorrect-fixture-name-underscore
(PT005
)unpacked-list-comprehension
(UP027
)
Remapped rules
The following rules have been remapped to new rule codes:
unnecessary-dict-comprehension-for-iterable
:RUF025
toC420
Stabilization
The following rules have been stabilized and are no longer in preview:
singledispatch-method
(PLE1519
)singledispatchmethod-function
(PLE1520
)bad-staticmethod-argument
(PLW0211
)if-stmt-min-max
(PLR1730
)invalid-bytes-return-type
(PLE0308
)invalid-hash-return-type
(PLE0309
)invalid-index-return-type
(PLE0305
)invalid-length-return-type
(E303
)self-or-cls-assignment
(PLW0642
)byte-string-usage
(PYI057
)duplicate-literal-member
(PYI062
)redirected-noqa
(RUF101
)
The following behaviors have been stabilized:
cancel-scope-no-checkpoint
(ASYNC100
): Supportasyncio
andanyio
context mangers.async-function-with-timeout
(ASYNC109
): Supportasyncio
andanyio
context mangers.async-busy-wait
(ASYNC110
): Supportasyncio
andanyio
context mangers.async-zero-sleep
(ASYNC115
): Supportanyio
context mangers.long-sleep-not-forever
(ASYNC116
): Supportanyio
context mangers.
The following fixes have been stabilized:
superfluous-else-return
(RET505
)superfluous-else-raise
(RET506
)superfluous-else-continue
(RET507
)superfluous-else-break
(RET508
)
Preview features
- [
flake8-simplify
] Further simplify to binary in preview for (SIM108
) (#12796) - [
pyupgrade
] Show violations without auto-fix (UP031
) (#11229)
Rule changes
- [
flake8-import-conventions
] Addxml.etree.ElementTree
to default conventions (#12455) - [
flake8-pytest-style
] Add a space after comma in CSV output (PT006
) (#12853)
Server
- Show a message for incorrect settings (#12781)
Bug fixes
- [
flake8-async
] Do not lint yield in context manager (ASYNC100
) (#12896) - [
flake8-comprehensions
] Do not lintasync for
comprehensions (C419
) (#12895) - [
flake8-return
] Only add returnNone
at end of a function (RET503
) (#11074) - [
flake8-type-checking
] Avoid treatingdataclasses.KW_ONLY
as typing-only (TCH003
) (#12863) - [
pep8-naming
] Treattype(Protocol)
et al as metaclass base (N805
) (#12770) - [
pydoclint
] Don't enforce returns and yields in abstract methods (DOC201
,DOC202
) (#12771) - [
ruff
] Skip tuples with slice expressions in (RUF031
) (#12768) - [
ruff
] Ignore unparenthesized tuples in subscripts when the subscript is a type annotation or type alias (RUF031
) (#12762) - [
ruff
] Ignore template strings passed to logging andbuiltins._()
calls (RUF027
) (#12889) - [
ruff
] Do not remove parens for tuples with starred expressions in Python <=3.10 (RUF031
) (#12784) - Evaluate default parameter values for a function in that function's enclosing scope (#12852)
Other changes
- Respect VS Code cell metadata when detecting the language of Jupyter Notebook cells (#12864)
- Respect
kernelspec
notebook metadata when detecting the preferred language for a Jupyter Notebook (#12875)
Install ruff 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.6.0/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.6.0/ruff-installer.ps1 | iex"
Download ruff 0.6.0
File | Platform | Checksum |
---|---|---|
ruff-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
ruff-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
ruff-aarch64-pc-windows-msvc.zip | ARM64 Windows | checksum |
ruff-i686-pc-windows-msvc.zip | x86 Windows | checksum |
ruff-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
ruff-aarch64-unknown-linux-gnu.tar.gz | ARM64 Linux | checksum |
ruff-i686-unknown-linux-gnu.tar.gz | x86 Linux | checksum |
ruff-powerpc64-unknown-linux-gnu.tar.gz | PPC64 Linux | checksum |
ruff-powerpc64le-unknown-linux-gnu.tar.gz | PPC64LE Linux | checksum |
ruff-s390x-unknown-linux-gnu.tar.gz | S390x Linux | checksum |
ruff-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
ruff-armv7-unknown-linux-gnueabihf.tar.gz | ARMv7 Linux | [checksum](https://github.com/astral-sh/ruff/releases/download/0.6.0/ruff-armv7-unkno... |