Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Jan 8, 2026

This PR contains the following updates:

Package Change Age Confidence
ruff (source, changelog) ==0.14.10==0.15.0 age confidence

Release Notes

astral-sh/ruff (ruff)

v0.15.0

Compare Source

Released on 2026-02-03.

Check out the blog post for a migration
guide and overview of the changes!

Breaking changes
  • Ruff now formats your code according to the 2026 style guide. See the formatter section below or in the blog post for a detailed list of changes.

  • The linter now supports block suppression comments. For example, to suppress N803 for all parameters in this function:

    # ruff: disable[N803]
    def foo(
        legacyArg1,
        legacyArg2,
        legacyArg3,
        legacyArg4,
    ): ...
    # ruff: enable[N803]
    

    See the documentation for more details.

  • The ruff:alpine Docker image is now based on Alpine 3.23 (up from 3.21).

  • The ruff:debian and ruff:debian-slim Docker images are now based on Debian 13 "Trixie" instead of Debian 12 "Bookworm."

  • Binaries for the ppc64 (64-bit big-endian PowerPC) architecture are no longer included in our releases. It should still be possible to build Ruff manually for this platform, if needed.

  • Ruff now resolves all extended configuration files before falling back on a default Python version.

Stabilization

The following rules have been stabilized and are no longer in preview:

The following behaviors have been stabilized:

  • The --output-format flag is now respected when running Ruff in --watch mode, and the full output format is now used by default, matching the regular CLI output.
  • builtin-attribute-shadowing (A003) now detects the use of shadowed built-in names in additional contexts like decorators, default arguments, and other attribute definitions.
  • duplicate-union-member (PYI016) now considers typing.Optional when searching for duplicate union members.
  • split-static-string (SIM905) now offers an autofix when the maxsplit argument is provided, even without a sep argument.
  • dict-get-with-none-default (SIM910) now applies to more types of key expressions.
  • super-call-with-parameters (UP008) now has a safe fix when it will not delete comments.
  • unnecessary-default-type-args (UP043) now applies to stub (.pyi) files on Python versions before 3.13.
Formatter

This release introduces the new 2026 style guide, with the following changes:

  • Lambda parameters are now kept on the same line and lambda bodies will be parenthesized to let
    them break across multiple lines (#​21385)
  • Parentheses around tuples of exceptions in except clauses will now be removed on Python 3.14 and
    later (#​20768)
  • A single empty line is now permitted at the beginning of function bodies (#​21110)
  • Parentheses are avoided for long as captures in match statements (#​21176)
  • Extra spaces between escaped quotes and ending triple quotes can now be omitted (#​17216)
  • Blank lines are now enforced before classes with decorators in stub files (#​18888)
Preview features
Bug fixes
  • Fix suppression indentation matching (#​22903)
Rule changes
  • Customize where the fix_title sub-diagnostic appears (#​23044)
  • [FastAPI] Add sub-diagnostic explaining why a fix was unavailable (FAST002) (#​22565)
  • [flake8-annotations] Don't suggest NoReturn for functions raising NotImplementedError (ANN201, ANN202, ANN205, ANN206) (#​21311)
  • [pyupgrade] Make fix unsafe if it deletes comments (UP017) (#​22873)
  • [pyupgrade] Make fix unsafe if it deletes comments (UP020) (#​22872)
  • [pyupgrade] Make fix unsafe if it deletes comments (UP033) (#​22871)
  • [refurb] Do not add abc.ABC if already present (FURB180) (#​22234)
  • [refurb] Make fix unsafe if it deletes comments (FURB110) (#​22768)
  • [ruff] Add sub-diagnostics with permissions (RUF064) (#​22972)
Server
  • Identify notebooks by LSP didOpen instead of .ipynb file extension (#​22810)
CLI
  • Add --color CLI option to force colored output (#​22806)
Documentation
  • Document - stdin convention in CLI help text (#​22817)
  • [refurb] Change example to re.search with ^ anchor (FURB167) (#​22984)
  • Fix link to Sphinx code block directives (#​23041)
  • [pydocstyle] Clarify which quote styles are allowed (D300) (#​22825)
  • [flake8-bugbear] Improve docs for no-explicit-stacklevel (B028) (#​22538)
Other changes
Contributors

v0.14.14

Compare Source

Released on 2026-01-22.

Preview features
  • Preserve required parentheses in lambda bodies (#​22747)
  • Combine range suppression code diagnostics (#​22613)
  • [airflow] Second positional argument to Asset/Dataset should not be a dictionary (AIR303) (#​22453)
  • [ruff] Detect duplicate entries in __all__ (RUF068) (#​22114)
Bug fixes
  • [pyupgrade] Allow shadowing non-builtin bindings (UP029) (#​22749)
  • [pyupgrade] Apply UP045 to string arguments of typing.cast (#​22320)
  • [flake8-pie] Detect duplicated declared class fields in PIE794 (#​22717)
Rule changes
Documentation
  • Add --exit-non-zero-on-format to formatter exit codes section (#​22761)
  • Update contributing guide for adding a new rule (#​22779)
  • [FastAPI] Document fix safety for FAST001 (#​22655)
  • [flake8-async] Tweak explanation to focus on latency/efficiency tradeoff (ASYNC110) (#​22715)
  • [pandas-vet] Make example error out-of-the-box (PD002) (#​22561)
  • [refurb] Make the example work out of box (FURB101) (#​22770)
  • [refurb] Make the example work out of box (FURB103) (#​22769)
Contributors

v0.14.13

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.

v0.14.12

Released on 2026-01-15.

Preview features
  • [flake8-blind-except] Allow more logging methods (BLE001) (#​22057)
  • [ruff] Respect lint.pydocstyle.property-decorators in RUF066 (#​22515)
Bug fixes
  • Fix configuration path in --show-settings (#​22478)
  • Respect fmt: skip for 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] Add check parameter example to PT017 docs (#​22546)
  • [ruff] Make example error out-of-the-box (RUF103) (#​22558)
  • [ruff] document RUF100 trailing comment fix behavior (#​22479)
Other changes
  • wasm: Require explicit logging initialization (#​22587)
Contributors

v0.14.11

Compare Source

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 into airflow.lineage.hook.HookLineageCollector.create_asset is not allowed (AIR303) (#​22046)
  • [refurb] Mark FURB192 fix as always unsafe (#​22210)
  • [ruff] Add non-empty-init-module (RUF067) (#​22143)
Bug fixes
  • Fix GitHub format for multi-line diagnostics (#​22108)
  • [flake8-unused-arguments] Mark **kwargs in TypeVar as used (ARG001) (#​22214)
Rule changes
  • Add help: subdiagnostics for several Ruff rules that can sometimes appear to disagree with ty (#​22331)
  • [pylint] Demote PLW1510 fix to display-only (#​22318)
  • [pylint] Ignore identical members (PLR1714) (#​22220)
  • [pylint] Improve diagnostic range for PLC0206 (#​22312)
  • [ruff] Improve fix title for RUF102 invalid rule code (#​22100)
  • [flake8-simplify]: Avoid unnecessary builtins import for SIM105 (#​22358)
Configuration
  • Allow Python 3.15 as valid target-version value in preview (#​22419)
  • Check required-version before parsing rules (#​22410)
  • Include configured src directories when resolving graphs (#​22451)
Documentation
  • Update T201 suggestion to not use root logger to satisfy LOG015 (#​22059)
  • Fix iter example in unsafe fixes doc (#​22118)
  • [flake8_print] better suggestion for basicConfig in T201 docs (#​22101)
  • [pylint] Restore the fix safety docs for PLW0133 (#​22211)
  • Fix Jupyter notebook discovery info for editors (#​22447)
Contributors

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot enabled auto-merge (squash) January 8, 2026 22:01
@github-actions
Copy link
Contributor

This PR is stale because it has been open 1+ days with no activity. Feel free to either 1) remove the stale label or 2) comment. If nothing happens, this will be closed in 7 days.

@github-actions github-actions bot added the Stale label Jan 13, 2026
@renovate renovate bot force-pushed the renovate/ruff-0.x branch from 2d67e29 to 8fcc1f6 Compare January 15, 2026 18:33
@renovate renovate bot changed the title chore(deps): update dependency ruff to v0.14.11 chore(deps): update dependency ruff to v0.14.12 Jan 15, 2026
@renovate renovate bot changed the title chore(deps): update dependency ruff to v0.14.12 chore(deps): update dependency ruff to v0.14.13 Jan 15, 2026
@renovate renovate bot force-pushed the renovate/ruff-0.x branch from 8fcc1f6 to 78bfd59 Compare January 15, 2026 22:14
@github-actions github-actions bot removed the Stale label Jan 16, 2026
@github-actions
Copy link
Contributor

This PR is stale because it has been open 1+ days with no activity. Feel free to either 1) remove the stale label or 2) comment. If nothing happens, this will be closed in 7 days.

@github-actions github-actions bot added the Stale label Jan 21, 2026
@renovate renovate bot force-pushed the renovate/ruff-0.x branch from 78bfd59 to 56959a4 Compare January 23, 2026 01:28
@renovate renovate bot changed the title chore(deps): update dependency ruff to v0.14.13 chore(deps): update dependency ruff to v0.14.14 Jan 23, 2026
@github-actions github-actions bot removed the Stale label Jan 23, 2026
@github-actions
Copy link
Contributor

This PR is stale because it has been open 1+ days with no activity. Feel free to either 1) remove the stale label or 2) comment. If nothing happens, this will be closed in 7 days.

@github-actions github-actions bot added the Stale label Jan 27, 2026
@github-actions github-actions bot removed the Stale label Feb 3, 2026
@renovate renovate bot force-pushed the renovate/ruff-0.x branch from 56959a4 to 51b0a91 Compare February 3, 2026 18:26
@renovate renovate bot changed the title chore(deps): update dependency ruff to v0.14.14 chore(deps): update dependency ruff to v0.15.0 Feb 3, 2026
@renovate renovate bot force-pushed the renovate/ruff-0.x branch from 51b0a91 to 742de33 Compare February 4, 2026 10:10
@github-actions
Copy link
Contributor

github-actions bot commented Feb 6, 2026

This PR is stale because it has been open 1+ days with no activity. Feel free to either 1) remove the stale label or 2) comment. If nothing happens, this will be closed in 7 days.

@github-actions github-actions bot added the Stale label Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants