Releases: astral-sh/ruff
Releases · astral-sh/ruff
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"Download ruff 0.14.3
0.14.2
Release Notes
Released on 2025-10-23.
Preview features
- [
flake8-gettext] Resolve qualified names and built-in bindings (INT001,INT002,INT003) (#19045)
Bug fixes
- Avoid reusing nested, interpolated quotes before Python 3.12 (#20930)
- Catch syntax errors in nested interpolations before Python 3.12 (#20949)
- [
fastapi] Handle ellipsis defaults inFAST002autofix (#20810) - [
flake8-simplify] SkipSIM911when unknown arguments are present (#20697) - [
pyupgrade] Always parenthesize assignment expressions in fix forf-string(UP032) (#21003) - [
pyupgrade] FixUP032conversion for decimal ints with underscores (#21022) - [
fastapi] Skip autofix for keyword and__debug__path params (FAST003) (#20960)
Rule changes
- [
flake8-bugbear] SkipB905andB912for fewer than two iterables and no starred arguments (#20998) - [
ruff] UseDiagnosticTagfor morepyflakesandpandasrules (#20801)
CLI
- Improve JSON output from
ruff rule(#20168)
Documentation
Other changes
- [syntax-errors] Name is parameter and global (#20426)
- [syntax-errors] Alternative
matchpatterns bind different names (#20682)
Contributors
Install ruff 0.14.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.2/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.2/ruff-installer.ps1 | iex"Download ruff 0.14.2
0.14.1
Release Notes
Released on 2025-10-16.
Preview features
- [formatter] Remove parentheses around multiple exception types on Python 3.14+ (#20768)
- [
flake8-bugbear] Omit annotation in preview fix forB006(#20877) - [
flake8-logging-format] Avoid dropping implicitly concatenated pieces in theG004fix (#20793) - [
pydoclint] Implementdocstring-extraneous-parameter(DOC102) (#20376) - [
pyupgrade] ExtendUP019to detecttyping_extensions.Text(UP019) (#20825) - [
pyupgrade] Fix false negative forTypeVarwith default argument innon-pep695-generic-class(UP046) (#20660)
Bug fixes
- Fix false negatives in
Truthiness::from_exprfor lambdas, generators, and f-strings (#20704) - Fix syntax error false positives for escapes and quotes in f-strings (#20867)
- Fix syntax error false positives on parenthesized context managers (#20846)
- [
fastapi] Fix false positives for path parameters that FastAPI doesn't recognize (FAST003) (#20687) - [
flake8-pyi] Fix operator precedence by adding parentheses when needed (PYI061) (#20508) - [
ruff] Suppress diagnostic for f-string interpolations with debug text (RUF010) (#20525)
Rule changes
- [
airflow] Add warning toairflow.datasets.DatasetEventusage (AIR301) (#20551) - [
flake8-bugbear] MarkB905andB912fixes as unsafe (#20695) - Use
DiagnosticTagfor more rules - changes display in editors (#20758,#20734)
Documentation
- Update Python compatibility from 3.13 to 3.14 in README.md (#20852)
- Update
lint.flake8-type-checking.quoted-annotationsdocs (#20765) - Update setup instructions for Zed 0.208.0+ (#20902)
- [
flake8-datetimez] Clarify docs for several rules (#20778) - Fix typo in
RUF015description (#20873)
Other changes
- Reduce binary size (#20863)
- Improved error recovery for unclosed strings (including f- and t-strings) (#20848)
Contributors
- @ntBre
- @Paillat-dev
- @terror
- @pieterh-oai
- @MichaReiser
- @TaKO8Ki
- @ageorgou
- @danparizher
- @mgaitan
- @augustelalande
- @dylwil3
- @Lee-W
- @injust
- @CarrotManMatt
Install ruff 0.14.1
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.1/ruff-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/astral-sh/ruff/releases/download/0.14.1/ruff-installer.ps1 | iex"