Releases: astral-sh/ruff
Releases · astral-sh/ruff
0.14.13
Release Notes
Released on 2026-01-15.
This is a follow-up release to 0.14.12. Because of an issue publishing the WASM packages, there is no GitHub release or Git tag for 0.14.12, although the package was published to PyPI. The contents of the 0.14.13 release are identical to 0.14.12.
0.14.12
Preview features
- [
flake8-blind-except] Allow more logging methods (BLE001) (#22057) - [
ruff] Respectlint.pydocstyle.property-decoratorsinRUF066(#22515)
Bug fixes
- Fix configuration path in
--show-settings(#22478) - Respect
fmt: skipfor multiple statements on the same logical line (#22119)
Rule changes
- [
pydocstyle] Update Rust crate imperative to v1.0.7 (D401) (#22519) - [
isort] Insert imports in alphabetical order (I002) (#22493)
Documentation
- Add llms.txt support for documentation (#22463)
- Use prek in documentation and CI (#22505)
- [
flake8-pytest-style] Addcheckparameter example toPT017docs (#22546) - [
ruff] Make example error out-of-the-box (RUF103) (#22558) - [
ruff] documentRUF100trailing comment fix behavior (#22479)
Other changes
- wasm: Require explicit logging initialization (#22587)
Contributors
- @terror
- @harupy
- @Jkhall81
- @dhruvmanila
- @lubaskinc0de
- @zanieb
- @MeGaGiGaGon
- @charliermarsh
- @renovate
- @dylwil3
- @MichaReiser
- @11happy
Install ruff 0.14.13
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.13/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.13/ruff-installer.ps1 | iex"Download ruff 0.14.13
0.14.11
Release Notes
Released on 2026-01-08.
Preview features
- Consolidate diagnostics for matched disable/enable suppression comments (#22099)
- Report diagnostics for invalid/unmatched range suppression comments (#21908)
- [
airflow] Passing positional argument intoairflow.lineage.hook.HookLineageCollector.create_assetis not allowed (AIR303) (#22046) - [
refurb] MarkFURB192fix as always unsafe (#22210) - [
ruff] Addnon-empty-init-module(RUF067) (#22143)
Bug fixes
- Fix GitHub format for multi-line diagnostics (#22108)
- [
flake8-unused-arguments] Mark**kwargsinTypeVaras used (ARG001) (#22214)
Rule changes
- Add
help:subdiagnostics for several Ruff rules that can sometimes appear to disagree withty(#22331) - [
pylint] DemotePLW1510fix to display-only (#22318) - [
pylint] Ignore identical members (PLR1714) (#22220) - [
pylint] Improve diagnostic range forPLC0206(#22312) - [
ruff] Improve fix title forRUF102invalid rule code (#22100) - [
flake8-simplify]: Avoid unnecessary builtins import forSIM105(#22358)
Configuration
- Allow Python 3.15 as valid
target-versionvalue in preview (#22419) - Check
required-versionbefore parsing rules (#22410) - Include configured
srcdirectories when resolving graphs (#22451)
Documentation
- Update
T201suggestion to not use root logger to satisfyLOG015(#22059) - Fix
iterexample in unsafe fixes doc (#22118) - [
flake8_print] better suggestion forbasicConfiginT201docs (#22101) - [
pylint] Restore the fix safety docs forPLW0133(#22211) - Fix Jupyter notebook discovery info for editors (#22447)
Contributors
- @charliermarsh
- @ntBre
- @cenviity
- @njhearp
- @cbachhuber
- @jelle-openai
- @AlexWaygood
- @ValdonVitija
- @BurntSushi
- @Jkhall81
- @PeterJCLaw
- @harupy
- @amyreese
- @sjyangkevin
- @woodruffw
Install ruff 0.14.11
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.11/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.11/ruff-installer.ps1 | iex"Download ruff 0.14.11
0.14.10
Release Notes
Released on 2025-12-18.
Preview features
- [formatter] Fluent formatting of method chains (#21369)
- [formatter] Keep lambda parameters on one line and parenthesize the body if it expands (#21385)
- [
flake8-implicit-str-concat] New rule to prevent implicit string concatenation in collections (ISC004) (#21972) - [
flake8-use-pathlib] Make fixes unsafe when types change in compound statements (PTH104,PTH105,PTH109,PTH115) (#22009) - [
refurb] Extend support forPath.open(FURB101,FURB103) (#21080)
Bug fixes
- [
pyupgrade] Fix parsing named Unicode escape sequences (UP032) (#21901)
Rule changes
- [
eradicate] Ignoreruff:disableandruff:enablecomments inERA001(#22038) - [
flake8-pytest-style] Allowmatchandcheckkeyword arguments without an expected exception type (PT010) (#21964) - [syntax-errors] Annotated name cannot be global (#20868)
Documentation
- Add
uvandtyto the Ruff README (#21996) - Document known lambda formatting deviations from Black (#21954)
- Update
setup.md(#22024) - [
flake8-bandit] Fix broken link (S704) (#22039)
Other changes
- Fix playground Share button showing "Copied!" before clipboard copy completes (#21942)
Contributors
- @dylwil3
- @charliecloudberry
- @charliermarsh
- @chirizxc
- @ntBre
- @zanieb
- @amyreese
- @hauntsaninja
- @11happy
- @mahiro72
- @MichaReiser
- @phongddo
- @PeterJCLaw
Install ruff 0.14.10
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.10/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.10/ruff-installer.ps1 | iex"Download ruff 0.14.10
0.14.9
Release Notes
Released on 2025-12-11.
Preview features
- [
ruff] NewRUF100diagnostics for unused range suppressions (#21783) - [
pylint] Detect subclasses of builtin exceptions (PLW0133) (#21382)
Bug fixes
- Fix comment placement in lambda parameters (#21868)
- Skip over trivia tokens after re-lexing (#21895)
- [
flake8-bandit] Fix false positive when using non-standardCSafeLoaderpath (S506). (#21830) - [
flake8-bugbear] Accept immutable slice default arguments (B008) (#21823)
Rule changes
- [
pydocstyle] SuppressD417for parameters withUnpackannotations (#21816)
Performance
- Use
memchrfor computing line indexes (#21838)
Documentation
- Document
*.pywis included by default in preview (#21885) - Document range suppressions, reorganize suppression docs (#21884)
- Update mkdocs-material to 9.7.0 (Insiders now free) (#21797)
Contributors
Install ruff 0.14.9
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.9/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.9/ruff-installer.ps1 | iex"Download ruff 0.14.9
0.14.8
Release Notes
Released on 2025-12-04.
Preview features
- [
flake8-bugbear] Catchyieldexpressions within other statements (B901) (#21200) - [
flake8-use-pathlib] Mark fixes unsafe for return type changes (PTH104,PTH105,PTH109,PTH115) (#21440)
Bug fixes
- Fix syntax error false positives for
awaitoutside functions (#21763) - [
flake8-simplify] Fix truthiness assumption for non-iterable arguments in tuple/list/set calls (SIM222,SIM223) (#21479)
Documentation
- Suggest using
--output-fileoption in GitLab integration (#21706)
Other changes
- [syntax-error] Default type parameter followed by non-default type parameter (#21657)
Contributors
Install ruff 0.14.8
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.8/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.8/ruff-installer.ps1 | iex"Download ruff 0.14.8
0.14.7
Release Notes
Released on 2025-11-28.
Preview features
- [
flake8-bandit] Handle string literal bindings in suspicious-url-open-usage (S310) (#21469) - [
pylint] FixPLR1708false positives on nested functions (#21177) - [
pylint] Fix suppression for empty dict without tuple key annotation (PLE1141) (#21290) - [
ruff] Add ruleRUF066to detect unnecessary class properties (#21535) - [
ruff] Catch more dummy variable uses (RUF052) (#19799)
Bug fixes
- [server] Set severity for non-rule diagnostics (#21559)
- [
flake8-implicit-str-concat] Avoid invalid fix in (ISC003) (#21517) - [
parser] Fix panic when parsing IPython escape command expressions (#21480)
CLI
- Show partial fixability indicator in statistics output (#21513)
Contributors
- @mikeleppane
- @senekor
- @ShaharNaveh
- @JumboBear
- @prakhar1144
- @tsvikas
- @danparizher
- @chirizxc
- @AlexWaygood
- @MichaReiser
Install ruff 0.14.7
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.7/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.7/ruff-installer.ps1 | iex"Download ruff 0.14.7
0.14.6
Release Notes
Released on 2025-11-21.
Preview features
- [
flake8-bandit] Support new PySNMP API paths (S508,S509) (#21374)
Bug fixes
- Adjust own-line comment placement between branches (#21185)
- Avoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (#20418)
- Fix panic when formatting comments in unary expressions (#21501)
- Respect
fmt: skipfor compound statements on a single line (#20633) - [
refurb] FixFURB103autofix (#21454) - [
ruff] Fix false positive for complex conversion specifiers inlogging-eager-conversion(RUF065) (#21464)
Rule changes
- [
ruff] Avoid false positive onClassVarreassignment (RUF012) (#21478)
CLI
- Render hyperlinks for lint errors (#21514)
- Add a
ruff analyzeoption to skip over imports inTYPE_CHECKINGblocks (#21472)
Documentation
- Limit
eglot-formathook to eglot-managed Python buffers (#21459) - Mention
force-excludein "Configuration > Python file discovery" (#21500)
Contributors
Install ruff 0.14.6
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.6/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.6/ruff-installer.ps1 | iex"Download ruff 0.14.6
0.14.5
Release Notes
Released on 2025-11-13.
Preview features
- [
flake8-simplify] ApplySIM113when index variable is of typeint(#21395) - [
pydoclint] Fix false positive when Sphinx directives follow a "Raises" section (DOC502) (#20535) - [
pydoclint] Support NumPy-style comma-separated parameters (DOC102) (#20972) - [
refurb] Auto-fix annotated assignments (FURB101) (#21278) - [
ruff] Ignorestr()when not used for simple conversion (RUF065) (#21330)
Bug fixes
- Fix syntax error false positive on alternative
matchpatterns (#21362) - [
flake8-simplify] Fix false positive for iterable initializers with generator arguments (SIM222) (#21187) - [
pyupgrade] Fix false positive on relative imports from local.builtinsmodule (UP029) (#21309) - [
pyupgrade] Consistently set the deprecated tag (UP035) (#21396)
Rule changes
- [
refurb] Detect empty f-strings (FURB105) (#21348)
CLI
- Add option to provide a reason to
--add-noqa(#21294) - Add upstream linter URL to
ruff linter --output-format=json(#21316) - Add color to
--help(#21337)
Documentation
- Add a new "Opening a PR" section to the contribution guide (#21298)
- Added the PyScripter IDE to the list of "Who is using Ruff?" (#21402)
- Update PyCharm setup instructions (#21409)
- [
flake8-annotations] Add link toallow-star-arg-anyoption (ANN401) (#21326)
Other changes
- [
configuration] Improve error message whenline-lengthexceedsu16::MAX(#21329)
Contributors
- @njhearp
- @11happy
- @hugovk
- @Gankra
- @ntBre
- @pyscripter
- @danparizher
- @MichaReiser
- @henryiii
- @charliecloudberry
Install ruff 0.14.5
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.5/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.5/ruff-installer.ps1 | iex"Download ruff 0.14.5
0.14.4
Release Notes
Released on 2025-11-06.
Preview features
- [formatter] Allow newlines after function headers without docstrings (#21110)
- [formatter] Avoid extra parentheses for long
matchpatterns withascaptures (#21176) - [
refurb] Expand fix safety for keyword arguments andDecimals (FURB164) (#21259) - [
refurb] Preserve argument ordering in autofix (FURB103) (#20790)
Bug fixes
- [server] Fix missing diagnostics for notebooks (#21156)
- [
flake8-bugbear] Ignore non-NFKC attribute names inB009andB010(#21131) - [
refurb] Fix false negative for underscores before sign inDecimalconstructor (FURB157) (#21190) - [
ruff] Fix false positives on starred arguments (RUF057) (#21256)
Rule changes
- [
airflow] extend deprecated argumentconcurrencyinairflow..DAG(AIR301) (#21220)
Documentation
- Improve
extenddocs (#21135) - [
flake8-comprehensions] Fix typo inC416documentation (#21184) - Revise Ruff setup instructions for Zed editor (#20935)
Other changes
- Make
ruff analyze graphwork with jupyter notebooks (#21161)
Contributors
- @chirizxc
- @Lee-W
- @musicinmybrain
- @MichaReiser
- @tjkuson
- @danparizher
- @renovate
- @ntBre
- @gauthsvenkat
- @LoicRiegel
Install ruff 0.14.4
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.4/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.4/ruff-installer.ps1 | iex"Download ruff 0.14.4
0.14.3
Release Notes
Released on 2025-10-30.
Preview features
- Respect
--output-formatwith--watch(#21097) - [
pydoclint] Fix false positive on explicit exception re-raising (DOC501,DOC502) (#21011) - [
pyflakes] Revert to stable behavior if imports for module lie in alternate branches forF401(#20878) - [
pylint] Implementstop-iteration-return(PLR1708) (#20733) - [
ruff] Add support for additional eager conversion patterns (RUF065) (#20657)
Bug fixes
- Fix finding keyword range for clause header after statement ending with semicolon (#21067)
- Fix syntax error false positive on nested alternative patterns (#21104)
- [
ISC001] Fix panic when string literals are unclosed (#21034) - [
flake8-django] ApplyDJ001to annotated fields (#20907) - [
flake8-pyi] FixPYI034to not trigger on metaclasses (PYI034) (#20881) - [
flake8-type-checking] FixTC003false positive withfuture-annotations(#21125) - [
pyflakes] Fix false positive for__class__in lambda expressions within class definitions (F821) (#20564) - [
pyupgrade] Fix false positive forTypeVarwith default on Python <3.13 (UP046,UP047) (#21045)
Rule changes
- Add missing docstring sections to the numpy list (#20931)
- [
airflow] Extendairflow.models..Paramcheck (AIR311) (#21043) - [
airflow] Warn thatairflow....DAG.create_dagrunhas been removed (AIR301) (#21093) - [
refurb] Preserve digit separators inDecimalconstructor (FURB157) (#20588)
Server
- Avoid sending an unnecessary "clear diagnostics" message for clients supporting pull diagnostics (#21105)
Documentation
- [
flake8-bandit] Fix correct example forS308(#21128)
Other changes
- Clearer error message when
line-lengthgoes beyond threshold (#21072)
Contributors
- @danparizher
- @jvacek
- @ntBre
- @augustelalande
- @prakhar1144
- @TaKO8Ki
- @dylwil3
- @fatelei
- @ShaharNaveh
- @Lee-W
Install ruff 0.14.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.3/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.3/ruff-installer.ps1 | iex"