Releases: astral-sh/ruff
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... |
0.5.7
Release Notes
Preview features
- [
flake8-comprehensions
] Account for list and set comprehensions inunnecessary-literal-within-tuple-call
(C409
) (#12657) - [
flake8-pyi
] Add autofix forfuture-annotations-in-stub
(PYI044
) (#12676) - [
flake8-return
] Avoid syntax error when auto-fixingRET505
with mixed indentation (space and tabs) (#12740) - [
pydoclint
] Adddocstring-missing-yields
(DOC402
) anddocstring-extraneous-yields
(DOC403
) (#12538) - [
pydoclint
] AvoidDOC201
if docstring begins with "Return", "Returns", "Yield", or "Yields" (#12675) - [
pydoclint
] Deduplicate collected exceptions after traversing function bodies (DOC501
) (#12642) - [
pydoclint
] IgnoreDOC
errors for stub functions (#12651) - [
pydoclint
] Teach rules to understand reraised exceptions as being explicitly raised (DOC501
,DOC502
) (#12639) - [
ruff
] Implementincorrectly-parenthesized-tuple-in-subscript
(RUF031
) (#12480) - [
ruff
] MarkRUF023
fix as unsafe if__slots__
is not a set and the binding is used elsewhere (#12692)
Rule changes
- [
refurb
] Add autofix forimplicit-cwd
(FURB177
) (#12708) - [
ruff
] Add autofix forzip-instead-of-pairwise
(RUF007
) (#12663) - [
tryceratops
] AddBaseException
toraise-vanilla-class
rule (TRY002
) (#12620)
Server
- Ignore non-file workspace URL; Ruff will display a warning notification in this case (#12725)
CLI
- Fix cache invalidation for nested
pyproject.toml
files (#12727)
Bug fixes
- [
flake8-async
] Fix false positives with multipleasync with
items (ASYNC100
) (#12643) - [
flake8-bandit
] Avoid false-positives for list concatenations in SQL construction (S608
) (#12720) - [
flake8-bugbear
] Treatreturn
as equivalent tobreak
(B909
) (#12646) - [
flake8-comprehensions
] Set comprehensions not a violation forsum
inunnecessary-comprehension-in-call
(C419
) (#12691) - [
flake8-simplify
] Parenthesize conditions based on precedence when merging if arms (SIM114
) (#12737) - [
pydoclint
] Try both 'Raises' section styles when convention is unspecified (DOC501
) (#12649)
Contributors
- @AlexWaygood
- @DavideRagazzon
- @InSyncWithFoo
- @MichaReiser
- @augustelalande
- @bluetech
- @carljm
- @cclauss
- @charliermarsh
- @dhruvmanila
- @diceroll123
- @dylwil3
- @ember91
- @epenet
- @renovate
Install ruff 0.5.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.5.7/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.5.7/ruff-installer.ps1 | iex"
Download ruff 0.5.7
0.5.6
Release Notes
Ruff 0.5.6 automatically enables linting and formatting of notebooks in preview mode.
You can opt-out of this behavior by adding *.ipynb
to the extend-exclude
setting.
[tool.ruff]
extend-exclude = ["*.ipynb"]
Preview features
- Enable notebooks by default in preview mode (#12621)
- [
flake8-builtins
] Implement import, lambda, and module shadowing (#12546) - [
pydoclint
] Adddocstring-missing-returns
(DOC201
) anddocstring-extraneous-returns
(DOC202
) (#12485)
Rule changes
- [
flake8-return
] Exempt cached properties and other property-like decorators from explicit return rule (RET501
) (#12563)
Server
- Make server panic hook more error resilient (#12610)
- Use
$/logTrace
for server trace logs in Zed and VS Code (#12564) - Keep track of deleted cells for reorder change request (#12575)
Configuration
- [
flake8-implicit-str-concat
] Always allow explicit multi-line concatenations when implicit concatenations are banned (#12532)
Bug fixes
- [
flake8-async
] Avoid flaggingasyncio.timeout
s as unused when the context manager includesasyncio.TaskGroup
(#12605) - [
flake8-slots
] Avoid recommending__slots__
for classes that inherit from more thannamedtuple
(#12531) - [
isort
] Avoid marking required imports as unused (#12537) - [
isort
] Preserve trailing inline comments on import-from statements (#12498) - [
pycodestyle
] Add newlines before comments (E305
) (#12606) - [
pycodestyle
] Don't attach comments with mismatched indents (#12604) - [
pyflakes
] Fix preview-mode bugs inF401
when attempting to autofix unused first-party submodule imports in an__init__.py
file (#12569) - [
pylint
] Respect start index inunnecessary-list-index-lookup
(#12603) - [
pyupgrade
] Avoid recommending no-argument super inslots=True
dataclasses (#12530) - [
pyupgrade
] Use colon rather than dot formatting for integer-only types (#12534) - Fix NFKC normalization bug when removing unused imports (#12571)
Other changes
- Consider more stdlib decorators to be property-like (#12583)
- Improve handling of metaclasses in various linter rules (#12579)
- Improve consistency between linter rules in determining whether a function is property (#12581)
Install ruff 0.5.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.5.6/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.5.6/ruff-installer.ps1 | iex"
Download ruff 0.5.6
0.5.5
Release Notes
Preview features
- [
fastapi
] Implementfastapi-redundant-response-model
(FAST001
) andfastapi-non-annotated-dependency
(FAST002
) (#11579) - [
pydoclint
] Implementdocstring-missing-exception
(DOC501
) anddocstring-extraneous-exception
(DOC502
) (#11471)
Rule changes
- [
numpy
] Fix NumPy 2.0 rule fornp.alltrue
andnp.sometrue
(#12473) - [
numpy
] IgnoreNPY201
insideexcept
blocks for compatibility with older numpy versions (#12490) - [
pep8-naming
] Avoid applyingignore-names
toself
andcls
function names (N804
,N805
) (#12497)
Formatter
- Fix incorrect placement of leading function comment with type params (#12447)
Server
- Do not bail code action resolution when a quick fix is requested (#12462)
Bug fixes
- Fix
Ord
implementation ofcmp_fix
(#12471) - Raise syntax error for unparenthesized generator expression in multi-argument call (#12445)
- [
pydoclint
] Fix panic inDOC501
reported in #12428 (#12435) - [
flake8-bugbear
] Allow singleton tuples with starred expressions inB013
(#12484)
Documentation
- Add Eglot setup guide for Emacs editor (#12426)
- Add note about the breaking change in
nvim-lspconfig
(#12507) - Add note to include notebook files for native server (#12449)
- Add setup docs for Zed editor (#12501)
Contributors
- @AlexWaygood
- @IvanIsCoding
- @MichaReiser
- @TomerBin
- @UriyaHarpeness
- @augustelalande
- @carljm
- @charliermarsh
- @dhruvmanila
- @dylwil3
- @foxmean
- @mtsokol
- @osiewicz
- @renovate
- @thejcannon
Install ruff 0.5.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.5.5/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.5.5/ruff-installer.ps1 | iex"
Download ruff 0.5.5
0.5.4
Release Notes
Rule changes
- [
ruff
] RenameRUF007
tozip-instead-of-pairwise
(#12399)
Bug fixes
- [
flake8-builtins
] Avoid shadowing diagnostics for@override
methods (#12415) - [
flake8-comprehensions
] Insert parentheses for multi-argument generators (#12422) - [
pydocstyle
] Handle escaped docstrings within docstring (D301
) (#12192)
Documentation
Install ruff 0.5.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.5.4/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -c "irm https://github.com/astral-sh/ruff/releases/download/0.5.4/ruff-installer.ps1 | iex"