Skip to content

chore(deps): update dependency ruff to v0.15.0#532

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/ruff-0.x
Open

chore(deps): update dependency ruff to v0.15.0#532
renovate[bot] wants to merge 1 commit intomainfrom
renovate/ruff-0.x

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Feb 6, 2026

This PR contains the following updates:

Package Change Age Confidence
ruff (source, changelog) ==0.14.5==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

v0.14.10

Compare Source

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 for Path.open (FURB101, FURB103) (#​21080)
Bug fixes
  • [pyupgrade] Fix parsing named Unicode escape sequences (UP032) (#​21901)
Rule changes
  • [eradicate] Ignore ruff:disable and ruff:enable comments in ERA001 (#​22038)
  • [flake8-pytest-style] Allow match and check keyword arguments without an expected exception type (PT010) (#​21964)
  • [syntax-errors] Annotated name cannot be global (#​20868)
Documentation
  • Add uv and ty to 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

v0.14.9

Compare Source

Released on 2025-12-11.

Preview features
  • [ruff] New RUF100 diagnostics 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-standard CSafeLoader path (S506). (#​21830)
  • [flake8-bugbear] Accept immutable slice default arguments (B008) (#​21823)
Rule changes
  • [pydocstyle] Suppress D417 for parameters with Unpack annotations (#​21816)
Performance
  • Use memchr for computing line indexes (#​21838)
Documentation
  • Document *.pyw is 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

v0.14.8

Compare Source

Released on 2025-12-04.

Preview features
  • [flake8-bugbear] Catch yield expressions 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 await outside functions (#​21763)
  • [flake8-simplify] Fix truthiness assumption for non-iterable arguments in tuple/list/set calls (SIM222, SIM223) (#​21479)
Documentation
  • Suggest using --output-file option in GitLab integration (#​21706)
Other changes
  • [syntax-error] Default type parameter followed by non-default type parameter (#​21657)
Contributors

v0.14.7

Compare Source

Released on 2025-11-28.

Preview features
  • [flake8-bandit] Handle string literal bindings in suspicious-url-open-usage (S310) (#​21469)
  • [pylint] Fix PLR1708 false positives on nested functions (#​21177)
  • [pylint] Fix suppression for empty dict without tuple key annotation (PLE1141) (#​21290)
  • [ruff] Add rule RUF066 to 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

v0.14.6

Compare Source

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: skip for compound statements on a single line (#​20633)
  • [refurb] Fix FURB103 autofix (#​21454)
  • [ruff] Fix false positive for complex conversion specifiers in logging-eager-conversion (RUF065) (#​21464)
Rule changes
  • [ruff] Avoid false positive on ClassVar reassignment (RUF012) (#​21478)
CLI
  • Render hyperlinks for lint errors (#​21514)
  • Add a ruff analyze option to skip over imports in TYPE_CHECKING blocks (#​21472)
Documentation
  • Limit eglot-format hook to eglot-managed Python buffers (#​21459)
  • Mention force-exclude in "Configuration > Python file discovery" (#​21500)
Contributors

Configuration

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

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

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 requested a review from a team as a code owner February 6, 2026 04:07
@renovate renovate bot requested a review from faroceann February 6, 2026 04:07
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 6, 2026

Greptile Overview

Greptile Summary

This PR updates the ruff linting and formatting tool from version 0.14.5 to 0.15.0, a major version update that introduces the new 2026 style guide.

Key changes in ruff 0.15.0:

  • 2026 Style Guide: The formatter now follows new formatting conventions including lambda parameter preservation, simplified exception tuple handling on Python 3.14+, and improved formatting for empty lines in function bodies
  • Block Suppression Comments: New support for # ruff: disable[RULE] and # ruff: enable[RULE] comment blocks to suppress rules across multiple lines
  • Rule Stabilization: 15 rules moved from preview to stable, including async function checks, unnecessary lambda detection, and various code quality rules
  • Docker Image Updates: Base images updated to Alpine 3.23 and Debian 13
  • Breaking Change: The ppc64 architecture is no longer supported in prebuilt binaries

Impact on this codebase:

The repository has minimal ruff configuration (pyproject.toml lines 56-60) with only per-file ignores for __init__.py files and a McCabe complexity limit. The codebase contains lambda expressions in src/workos/audit_logs.py that may be reformatted according to the new style guide. No exception handling patterns that would be affected by the Python 3.14+ changes were found.

Confidence Score: 4/5

  • This PR is safe to merge with minimal risk, though testing is recommended due to formatter changes
  • The update is from a trusted automated dependency bot (Renovate) upgrading a development-only linting tool. While ruff 0.15.0 introduces a new style guide that may reformat code, this only affects formatting consistency, not runtime behavior. The codebase has minimal ruff configuration and limited patterns affected by the changes. Score is 4 rather than 5 because the new formatter may produce unexpected formatting changes that should be verified before merging.
  • No files require special attention - both changes are automated dependency updates

Important Files Changed

Filename Overview
pyproject.toml Updated ruff linting tool from 0.14.5 to 0.15.0
uv.lock Lockfile updated with new ruff 0.15.0 checksums and wheel URLs

Sequence Diagram

sequenceDiagram
    participant Renovate
    participant PyProject as pyproject.toml
    participant UVLock as uv.lock
    participant Ruff as Ruff 0.15.0

    Renovate->>PyProject: Update ruff dependency from 0.14.5 to 0.15.0
    Renovate->>UVLock: Regenerate lock file with new version
    UVLock->>Ruff: Reference new checksums and wheel URLs
    Note over Ruff: New 2026 style guide formatting<br/>Block suppression comments<br/>Stabilized rules
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

0 participants