Skip to content

chore(deps): update python dev dependencies#356

Open
github-renovate-self-hosted wants to merge 1 commit intomasterfrom
renovate/python/dev-dependencies
Open

chore(deps): update python dev dependencies#356
github-renovate-self-hosted wants to merge 1 commit intomasterfrom
renovate/python/dev-dependencies

Conversation

@github-renovate-self-hosted
Copy link
Copy Markdown
Contributor

@github-renovate-self-hosted github-renovate-self-hosted commented Oct 10, 2025

This PR contains the following updates:

Package Type Update Change
Faker (changelog) dev minor 37.11.0 -> 37.12.0
alembic (changelog) dev minor 1.16.5 -> 1.18.4
greenlet (changelog) dev minor 3.2.4 -> 3.5.0
mypy (changelog) dev minor 1.18.2 -> 1.20.2
psycopg2 (source, changelog) dev patch 2.9.10 -> 2.9.12
pytest-asyncio (changelog) dev minor 1.2.0 -> 1.3.0
pytest-cov (changelog) dev minor 7.0.0 -> 7.1.0
ruff (source, changelog) dev minor 0.14.0 -> 0.15.12
tox (changelog) dev minor 4.30.3 -> 4.53.0

Release Notes

joke2k/faker (Faker)

v37.12.0

Compare Source

python-greenlet/greenlet (greenlet)

v3.5.0

Compare Source

==================

  • Remove the atexit callback. This callback caused greenlet APIs
    to become unavailable far too soon during interpreter shutdown. Now
    they remain available while all atexit callbacks run. Sometime
    after Py_IsFinalizing becomes true, they may begin misbehaving.
    Because the order in which C extensions are finalized is undefined,
    C extensions that are sensitive to this need to check the results of
    that function before invoking greenlet APIs. As a convenience,
    PyGreenlet_GetCurrent sets an exception and returns NULL
    when this happens (and greenlet.getcurrent begins returning
    None); other greenlet C API functions have undefined behaviour.
    Methods invoked directly on pre-existing greenlet.greenlet
    objects will continue to function at least until the greenlet C
    extension has been garbage collected and finalized.

    See PR 508 <https://github.com/python-greenlet/greenlet/pull/508>_.

v3.4.0

Compare Source

==================

  • Publish binary wheels for RiscV 64.

  • Fix multiple rare crash paths during interpreter shutdown.

    Note that this now relies on the atexit module, and introduces
    subtle API changes during interpreter shutdown (for example,
    getcurrent is no longer available once the atexit callback fires).

    See PR #&#8203;499 <https://github.com/python-greenlet/greenlet/pull/499>_ by Nicolas
    Bouvrette.

  • Address the results of an automated code audit performed by
    Daniel Diniz. This includes several minor correctness changes that
    theoretically could have been crashing bugs, but typically only in
    very rare circumstances.

    See PR 502 <https://github.com/python-greenlet/greenlet/pull/502>_.

  • Fix several race conditions that could arise in free-threaded
    builds when using greenlet objects from multiple threads, some of
    which could lead to assertion failures or interpreter crashes.

    See issue 503 <https://github.com/python-greenlet/greenlet/issues/503>_, with
    thanks to Nitay Dariel and Daniel Diniz.

v3.3.2

Compare Source

==================

  • Fix a crash on Python 3.10 if there are active greenlets during
    interpreter shutdown. See PR 495 <https://github.com/python-greenlet/greenlet/pull/495>_ by Nicolas
    Bouvrette.

v3.3.1

Compare Source

==================

  • Publish Windows ARM binary wheels, where available.
  • Fix compilation for 3.14t on Windows.
  • Publish Windows 3.14t binary wheels for Intel.
  • Switch from Appveyor for Windows to Github Actions.
  • Fix compilation on MIPS with GCC 15 and binutils 2.45. See PR 487 by Rosen Penev <https://github.com/python-greenlet/greenlet/pull/487>_. Note that
    this is not a platform tested by this project's CI.
  • Move most project metadata into the static pyproject.toml file.
    This updates licensing information to use the modern
    License-Expression field. See PR 480 by mrbean-bremen <https://github.com/python-greenlet/greenlet/pull/480/>_.

v3.3.0

Compare Source

==================

  • Drop support for Python 3.9.

  • Switch to distributing manylinux_2_28 wheels instead of
    manylinux2014 wheels. Likewise, switch from musllinux_1_1 to 1_2.

  • Add initial support for free-threaded builds of CPython 3.14. Due to
    limitations, we do not distribute binary wheels for free-threaded
    CPython on Windows. (Free-threaded CPython 3.13 may work, but is
    untested and unsupported.)

    .. caution::

    Under some rare scenarios with free-threaded 3.14, the
    interpreter may crash on accessing a variable or attribute or
    when shutting down. If this happens, try disabling the
    thread-local bytecode cache. See the greenlet documentation for
    more details. See PR 472 by T. Wouters <https://github.com/python-greenlet/greenlet/pull/472>_ for the
    initial free-threaded support and a discussion of the current
    known issues.

v3.2.5

Compare Source

==================

.. note::

The 3.2.x series will be the last to support Python 3.9.

  • Backport the changes from PR 495 in release 3.3.2 for Python 3.9.

.. note::

No Windows wheels will be published for this version.

python/mypy (mypy)

v1.20.2

Compare Source

  • Use WAL with SQLite cache and fix close (Shantanu, PR 21154)
  • Adjust SQLite journal mode (Ivan Levkivskyi, PR 21217)
  • Correctly aggregate narrowing information on parent expressions (Shantanu, PR 21206)
  • Fix regression related to generic callables (Shantanu, PR 21208)
  • Fix regression by avoiding widening types in some contexts (Shantanu, PR 21242)
  • Fix slicing in non-strict optional mode (Shantanu, PR 21282)
  • mypyc: Fix match statement semantics for "or" pattern (Shantanu, PR 21156)
  • mypyc: Fix issue with module dunder attributes (Piotr Sawicki, PR 21275)
  • Initial support for Python 3.15.0a8 (Marc Mueller, PR 21255)

v1.20.1

Compare Source

  • Always disable sync in SQLite cache (Ivan Levkivskyi, PR 21184)
  • Temporarily skip few base64 tests (Ivan Levkivskyi, PR 21193)
  • Revert dict.__or__ typeshed change (Ivan Levkivskyi, PR 21186)
  • Fix narrowing for match case with variadic tuples (Shantanu, PR 21192)
  • Avoid narrowing type[T] in type calls (Shantanu, PR 21174)
  • Fix regression for catching empty tuple in except (Shantanu, PR 21153)
  • Fix reachability for frozenset and dict view narrowing (Shantanu, PR 21151)
  • Fix narrowing with chained comparison (Shantanu, PR 21150)
  • Avoid narrowing to unreachable at module level (Shantanu, PR 21144)
  • Allow dangerous identity comparisons to Any typed variables (Shantanu, PR 21142)
  • --warn-unused-config should not be a strict flag (Ivan Levkivskyi, PR 21139)

v1.20.0

Compare Source

v1.19.1

Compare Source

  • Fix noncommutative joins with bounded TypeVars (Shantanu, PR 20345)
  • Respect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR 20372)
  • Allow types.NoneType in match cases (A5rocks, PR 20383)
  • Fix mypyc generator regression with empty tuple (BobTheBuidler, PR 20371)
  • Fix crash involving Unpack-ed TypeVarTuple (Shantanu, PR 20323)
  • Fix crash on star import of redefinition (Ivan Levkivskyi, PR 20333)
  • Fix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR 20334)
  • Fail with an explicit error on PyPy (Ivan Levkivskyi, PR 20389)

v1.19.0

Compare Source

psycopg/psycopg2 (psycopg2)

v2.9.12

Compare Source

v2.9.11

Compare Source

pytest-dev/pytest-asyncio (pytest-asyncio)

v1.3.0: pytest-asyncio 1.3.0

Compare Source

1.3.0 - 2025-11-10

Removed

Added

Notes for Downstream Packagers

  • Tested Python versions include free threaded Python 3.14t (#​1274)
  • Tests are run in the same pytest process, instead of spawning a subprocess with pytest.Pytester.runpytest_subprocess. This prevents the test suite from accidentally using a system installation of pytest-asyncio, which could result in test errors. (#​1275)
pytest-dev/pytest-cov (pytest-cov)

v7.1.0

Compare Source

  • Fixed total coverage computation to always be consistent, regardless of reporting settings.
    Previously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on
    reporting options.
    See #&#8203;641 <https://github.com/pytest-dev/pytest-cov/issues/641>_.

  • Improve handling of ResourceWarning from sqlite3.

    The plugin adds warning filter for sqlite3 ResourceWarning unclosed database (since 6.2.0).
    It checks if there is already existing plugin for this message by comparing filter regular expression.
    When filter is specified on command line the message is escaped and does not match an expected message.
    A check for an escaped regular expression is added to handle this case.

    With this fix one can suppress ResourceWarning from sqlite3 from command line::

    pytest -W "ignore:unclosed database in <sqlite3.Connection object at:ResourceWarning" ...

  • Various improvements to documentation.
    Contributed by Art Pelling in #&#8203;718 <https://github.com/pytest-dev/pytest-cov/pull/718>_ and
    "vivodi" in #&#8203;738 <https://github.com/pytest-dev/pytest-cov/pull/738>.
    Also closed #&#8203;736 <https://github.com/pytest-dev/pytest-cov/issues/736>
    .

  • Fixed some assertions in tests.
    Contributed by in Markéta Machová in #&#8203;722 <https://github.com/pytest-dev/pytest-cov/pull/722>_.

  • Removed unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).

astral-sh/ruff (ruff)

v0.15.12

Compare Source

Released on 2026-04-24.

Preview features
  • Implement #ruff:file-ignore file-level suppressions (#​23599)
  • Implement #ruff:ignore logical-line suppressions (#​23404)
  • Revert preview changes to displayed diagnostic severity in LSP (#​24789)
  • [airflow] Implement task-branch-as-short-circuit (AIR004) (#​23579)
  • [flake8-bugbear] Fix break/continue handling in loop-iterator-mutation (B909) (#​24440)
  • [pylint] Fix PLC2701 for type parameter scopes (#​24576)
Rule changes
  • [pandas-vet] Suggest .array as well in PD011 (#​24805)
CLI
  • Respect default Unix permissions for cache files (#​24794)
Documentation
  • [pylint] Fix PLR0124 description not to claim self-comparison always returns the same value (#​24749)
  • [pyupgrade] Expand docs on reusable TypeVars and scoping (UP046) (#​24153)
  • Improve rules table accessibility (#​24711)
Contributors

v0.15.11

Compare Source

Released on 2026-04-16.

Preview features
  • [ruff] Ignore RUF029 when function is decorated with asynccontextmanager (#​24642)
  • [airflow] Implement airflow-xcom-pull-in-template-string (AIR201) (#​23583)
  • [flake8-bandit] Fix S103 false positives and negatives in mask analysis (#​24424)
Bug fixes
  • [flake8-async] Omit overridden methods for ASYNC109 (#​24648)
Documentation
  • [flake8-async] Add override mention to ASYNC109 docs (#​24666)
  • Update Neovim config examples to use vim.lsp.config (#​24577)
Contributors

v0.15.10

Compare Source

Released on 2026-04-09.

Preview features
  • [flake8-logging] Allow closures in except handlers (LOG004) (#​24464)
  • [flake8-self] Make SLF diagnostics robust to non-self-named variables (#​24281)
  • [flake8-simplify] Make the fix for collapsible-if safe in preview (SIM102) (#​24371)
Bug fixes
  • Avoid emitting multi-line f-string elements before Python 3.12 (#​24377)
  • Avoid syntax error from E502 fixes in f-strings and t-strings (#​24410)
  • Strip form feeds from indent passed to dedent_to (#​24381)
  • [pyupgrade] Fix panic caused by handling of octals (UP012) (#​24390)
  • Reject multi-line f-string elements before Python 3.12 (#​24355)
Rule changes
  • [ruff] Treat f-string interpolation as potential side effect (RUF019) (#​24426)
Server
  • Add support for custom file extensions (#​24463)
Documentation
  • Document adding fixes in CONTRIBUTING.md (#​24393)
  • Fix JSON typo in settings example (#​24517)
Contributors

v0.15.9

Compare Source

Released on 2026-04-02.

Preview features
  • [pyflakes] Flag annotated variable redeclarations as F811 in preview mode (#​24244)
  • [ruff] Allow dunder-named assignments in non-strict mode for RUF067 (#​24089)
Bug fixes
  • [flake8-errmsg] Avoid shadowing existing msg in fix for EM101 (#​24363)
  • [flake8-simplify] Ignore pre-initialization references in SIM113 (#​24235)
  • [pycodestyle] Fix W391 fixes for consecutive empty notebook cells (#​24236)
  • [pyupgrade] Fix UP008 nested class matching (#​24273)
  • [pyupgrade] Ignore strings with string-only escapes (UP012) (#​16058)
  • [ruff] RUF072: skip formfeeds on dedent (#​24308)
  • [ruff] Avoid re-using symbol in RUF024 fix (#​24316)
  • [ruff] Parenthesize expression in RUF050 fix (#​24234)
  • Disallow starred expressions as values of starred expressions (#​24280)
Rule changes
  • [flake8-simplify] Suppress SIM105 for except* before Python 3.12 (#​23869)
  • [pyflakes] Extend F507 to flag %-format strings with zero placeholders (#​24215)
  • [pyupgrade] UP018 should detect more unnecessarily wrapped literals (UP018) (#​24093)
  • [pyupgrade] Fix UP008 callable scope handling to support lambdas (#​24274)
  • [ruff] RUF010: Mark fix as unsafe when it deletes a comment (#​24270)
Formatter
  • Add nested-string-quote-style formatting option (#​24312)
Documentation
  • [flake8-bugbear] Clarify RUF071 fix safety for non-path string comparisons (#​24149)
  • [flake8-type-checking] Clarify import cycle wording for TC001/TC002/TC003 (#​24322)
Other changes
  • Avoid rendering fix lines with trailing whitespace after | (#​24343)
Contributors

v0.15.8

Compare Source

Released on 2026-03-26.

Preview features
  • [ruff] New rule unnecessary-if (RUF050) (#​24114)
  • [ruff] New rule useless-finally (RUF072) (#​24165)
  • [ruff] New rule f-string-percent-format (RUF073): warn when using % operator on an f-string (#​24162)
  • [pyflakes] Recognize frozendict as a builtin for Python 3.15+ (#​24100)
Bug fixes
  • [flake8-async] Use fully-qualified anyio.lowlevel import in autofix (ASYNC115) (#​24166)
  • [flake8-bandit] Check tuple arguments for partial paths in S607 (#​24080)
  • [pyflakes] Skip undefined-name (F821) for conditionally deleted variables (#​24088)
  • E501/W505/formatter: Exclude nested pragma comments from line width calculation (#​24071)
  • Fix %foo? parsing in IPython assignment expressions (#​24152)
  • analyze graph: resolve string imports that reference attributes, not just modules (#​24058)
Rule changes
  • [eradicate] ignore ty: ignore comments in ERA001 (#​24192)
  • [flake8-bandit] Treat sys.executable as trusted input in S603 (#​24106)
  • [flake8-self] Recognize Self annotation and self assignment in SLF001 (#​24144)
  • [pyflakes] F507: Fix false negative for non-tuple RHS in %-formatting (#​24142)
  • [refurb] Parenthesize generator arguments in FURB142 fixer (#​24200)
Performance
Server
  • Warn when Markdown files are skipped due to preview being disabled (#​24150)
Documentation
  • Clarify extend-ignore and extend-select settings documentation (#​24064)
  • Mention AI policy in PR template (#​24198)
Other changes
  • Use trusted publishing for NPM packages (#​24171)
Contributors

v0.15.7

Compare Source

Released on 2026-03-19.

Preview features
  • Display output severity in preview (#​23845)
  • Don't show noqa hover for non-Python documents (#​24040)
Rule changes
  • [pycodestyle] Recognize pyrefly: as a pragma comment (E501) (#​24019)
Server
  • Don't return code actions for non-Python documents (#​23905)
Documentation
  • Add company AI policy to contributing guide (#​24021)
  • Document editor features for Markdown code formatting (#​23924)
  • [pylint] Improve phrasing (PLC0208) (#​24033)
Other changes
  • Use PEP 639 license information (#​19661)
Contributors

v0.15.6

Compare Source

Released on 2026-03-12.

Preview features
  • Add support for lazy import parsing (#​23755)
  • Add support for star-unpacking of comprehensions (PEP 798) (#​23788)
  • Reject semantic syntax errors for lazy imports (#​23757)
  • Drop a few rules from the preview default set (#​23879)
  • [airflow] Flag Variable.get() calls outside of task execution context (AIR003) (#​23584)
  • [airflow] Flag runtime-varying values in DAG/task constructor arguments (AIR304) (#​23631)
  • [flake8-bugbear] Implement delattr-with-constant (B043) (#​23737)
  • [flake8-tidy-imports] Add TID254 to enforce lazy imports (#​23777)
  • [flake8-tidy-imports] Allow users to ban lazy imports with TID254 (#​23847)
  • [isort] Retain lazy keyword when sorting imports (#​23762)
  • [pyupgrade] Add from __future__ import annotations automatically (UP006) (#​23260)
  • [refurb] Support newline parameter in FURB101 for Python 3.13+ (#​23754)
  • [ruff] Add os-path-commonprefix (RUF071) (#​23814)
  • [ruff] Add unsafe fix for os-path-commonprefix (RUF071) (#​23852)
  • [ruff] Limit RUF036 to typing contexts; make it unsafe for non-typing-only (#​23765)
  • [ruff] Use starred unpacking for RUF017 in Python 3.15+ (#​23789)
Bug fixes
  • Fix --add-noqa creating unwanted leading whitespace (#​23773)
  • Fix --add-noqa breaking shebangs (#​23577)
  • [formatter] Fix lambda body formatting for multiline calls and subscripts (#​23866)
  • [formatter] Preserve required annotation parentheses in annotated assignments (#​23865)
  • [formatter] Preserve type-expression parentheses in the formatter (#​23867)
  • [flake8-annotations] Fix stack overflow in ANN401 on quoted annotations with escape sequences (#​23912)
  • [pep8-naming] Check naming conventions in match pattern bindings (N806, N815, N816) (#​23899)
  • [perflint] Fix comment duplication in fixes (PERF401, PERF403) (#​23729)
  • [pyupgrade] Properly trigger super change in nested class (UP008) (#​22677)
  • [ruff] Avoid syntax errors in RUF036 fixes (#​23764)
Rule changes
  • [flake8-bandit] Flag S501 with requests.request (#​23873)
  • [flake8-executable] Fix WSL detection in non-Docker containers (#​22879)
  • [flake8-print] Ignore pprint calls with stream= (#​23787)
Documentation
  • Update docs for Markdown code block formatting (#​23871)
  • [flake8-bugbear] Fix misleading description for B904 (#​23731)
Contributors

v0.15.5

Compare Source

Released on 2026-03-05.

Preview features
  • Discover Markdown files by default in preview mode (#​23434)
  • [perflint] Extend PERF102 to comprehensions and generators (#​23473)
  • [refurb] Fix FURB101 and FURB103 false positives when I/O variable is used later (#​23542)
  • [ruff] Add fix for none-not-at-end-of-union (RUF036) (#​22829)
  • [ruff] Fix false positive for re.split with empty string pattern (RUF055) (#​23634)
Bug fixes
  • [fastapi] Handle callable class dependencies with __call__ method (FAST003) (#​23553)
  • [pydocstyle] Fix numpy section ordering (D420) (#​23685)
  • [pyflakes] Fix false positive for names shadowing re-exports (F811) (#​23356)
  • [pyupgrade] Avoid inserting redundant None elements in UP045 (#​23459)
Documentation
  • Document extension mapping for Markdown code formatting (#​23574)
  • Update default Python version examples (#​23605)
Other changes
  • Publish releases to Astral mirror (#​23616)
Contributors

v0.15.4

Compare Source

Released on 2026-02-26.

This is a follow-up release to 0.15.3 that resolves a panic when the new rule PLR1712 was enabled with any rule that analyzes definitions, such as many of the ANN or D rules.

Bug fixes
  • Fix panic on access to definitions after analyzing definitions (#​23588)
  • [pyflakes] Suppress false positive in F821 for names used before del in stub files (#​23550)
Documentation
  • Clarify first-party import detection in Ruff (#​23591)
  • Fix incorrect import-heading example (#​23568)
Contributors

v0.15.3

Compare Source

Released on 2026-02-26.

Preview features
  • Drop explicit support for .qmd file extension (#​23572)

    This can now be enabled instead by setting the extension option:

ruff.toml

extension = { qmd = "markdown" }

pyproject.toml

[tool.ruff]
extension = { qmd = "markdown" }
```
  • Include configured extensions in file discovery (#​23400)

  • [flake8-bandit] Allow suspicious imports in TYPE_CHECKING blocks (S401-S415) (#​23441)

  • [flake8-bugbear] Allow B901 in pytest hook wrappers (#​21931)

  • [flake8-import-conventions] Add missing conventions from upstream (ICN001, ICN002) (#​21373)

  • [pydocstyle] Add rule to enforce docstring section ordering (D420) (#​23537)

  • [pylint] Implement swap-with-temporary-variable (PLR1712) (#​22205)

  • [ruff] Add unnecessary-assign-before-yield (RUF070) (#​23300)

  • [ruff] Support file-level noqa in RUF102 (#​23535)

  • [ruff] Suppress diagnostic for invalid f-strings before Python 3.12 (RUF027) (#​23480)

  • [flake8-bandit] Don't flag BaseLoader/CBaseLoader as unsafe (S506) (#​23510)

Bug fixes
  • Avoid infinite loop between I002 and PYI025 (#​23352)
  • [pyflakes] Fix false positive for @overload from lint.typing-modules (F811) (#​23357)
  • [pyupgrade] Fix false positive for TypeVar default before Python 3.12 (UP046) (#​23540)
  • [pyupgrade] Fix handling of \N in raw strings (UP032) (#​22149)
Rule changes
  • Render sub-diagnostics in the GitHub output format (#​23455)

  • [flake8-bugbear] Tag certain B007 diagnostics as unnecessary (#​23453)

  • [ruff] Ignore unknown rule codes in RUF100 (#​23531)

    These are now flagged by RUF102 instead.

Documentation
  • Fix missing settings links for several linters (#​23519)
  • Update isort action comments heading (#​23515)
  • [pydocstyle] Fix double comma in description of D404 (#​23440)
Other changes
  • Update the Python module (notably find_ruff_bin) for parity with uv (#​23406)
Contributors

v0.15.2

Compare Source

Released on 2026-02-19.

Preview features

ruff.toml

[lint]
select = ["E4", "E7", "E9", "F"]

pyproject.toml

[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]
```

If you do give them a try, feel free to share your feedback in the [GitHub
discussion](https://redirect.github.com/astral-sh/ruff/discussions/23203)!
  • [flake8-pyi] Also check string annotations (PYI041) (#​19023)
Bug fixes
  • [flake8-async] Fix in_async_context logic (#​23426)
  • [ruff] Fix for RUF102 should delete entire comment (#​23380)
  • [ruff] Suppress diagnostic for strings with backslashes in interpolations before Python 3.12 (RUF027) (#​21069)
  • [flake8-bugbear] Fix B023 false positive for immediately-invoked lambdas (#​23294)
  • [parser] Fix false syntax error for match-like annotated assignments (#​23297)
  • [parser] Fix indentation tracking after line continuations (#​23417)
Rule changes
  • [flake8-executable] Allow global flags in uv shebangs (EXE003) (#​22582)
  • [pyupgrade] Fix handling of typing.{io,re} (UP035) (#​23131)
  • [ruff] Detect PLC0207 on chained str.split() calls (#​23275)
CLI
  • Remove invalid inline noqa warning (#​23270)
Configuration
  • Add extension mapping to configuration file options (#​23384)
Documentation
  • Add Q004 to the list of conflicting rules (#​23340)
  • [ruff] Expand lint.external docs and add sub-diagnostic (RUF100, RUF102) (#​23268)
Contributors

v0.15.1

Compare Source

Released on 2026-04-24.

Preview features
  • Implement #ruff:file-ignore file-level suppressions (#​23599)
  • Implement #ruff:ignore logical-line suppressions (#​23404)
  • Revert preview changes to displayed diagnostic severity in LSP (#​24789)
  • [airflow] Implement task-branch-as-short-circuit (AIR004) (#​23579)
  • [flake8-bugbear] Fix break/continue handling in loop-iterator-mutation (B909) (#​24440)
  • [pylint] Fix PLC2701 for type parameter scopes (#​24576)
Rule changes
  • [pandas-vet] Suggest .array as well in PD011 (#​24805)
CLI
  • Respect default Unix permissions for cache files (#​24794)
Documentation
  • [pylint] Fix PLR0124 description not to claim self-comparison always returns the same value (#​24749)
  • [pyupgrade] Expand docs on reusable TypeVars and scoping (UP046) (#​24153)
  • Improve rules table accessibility (#​24711)
Contributors

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](https://docs.astral.sh/ruff/linter/#block-level) 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

@github-renovate-self-hosted
Copy link
Copy Markdown
Contributor Author

github-renovate-self-hosted commented Oct 10, 2025

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: poetry.lock
Updating dependencies
Resolving dependencies...

Creating virtualenv fastapi-sqla-fwdLN1xT-py3.13 in /root/.cache/pypoetry/virtualenvs

The current project's supported Python range (>=3.9,<3.14) is not compatible with some of the required packages Python requirement:
  - tox requires Python >=3.10, so it will not be satisfied for Python >=3.9,<3.10

Because fastapi-sqla depends on tox (4.53.0) which requires Python >=3.10, version solving failed.

  • Check your dependencies Python requirement: The Python requirement can be specified via the `python` or `markers` properties
    
    For tox, a possible solution would be to set the `python` property to ">=3.10,<3.14"

    https://python-poetry.org/docs/dependency-specification/#python-restricted-dependencies,
    https://python-poetry.org/docs/dependency-specification/#using-environment-markers

@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch from 8a60908 to 03ff4b8 Compare October 10, 2025 11:17
@github-renovate-self-hosted github-renovate-self-hosted changed the title chore(deps): update dependency tox to v4.31.0 chore(deps): update python dev dependencies Oct 10, 2025
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch from 03ff4b8 to 40da5e8 Compare October 11, 2025 20:04
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch from 40da5e8 to f2ebed8 Compare October 14, 2025 15:02
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 2 times, most recently from 6546d86 to 6fa8118 Compare October 16, 2025 18:32
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from 92b17f9 to d95d870 Compare October 24, 2025 18:17
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from 77dd280 to f94e290 Compare October 29, 2025 00:47
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 4 times, most recently from 7134933 to e2f2685 Compare November 6, 2025 22:47
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from e2f25eb to a63ef4e Compare November 13, 2025 20:32
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from 0bfd081 to fd3689a Compare December 23, 2025 06:07
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 2 times, most recently from 6d3730b to 12ee41c Compare January 2, 2026 14:18
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 6 times, most recently from 1b8deb5 to 0336b61 Compare January 9, 2026 21:32
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 4 times, most recently from 84fade3 to 2160bab Compare January 15, 2026 20:47
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from f2f619a to 987ea11 Compare January 23, 2026 15:33
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 6 times, most recently from 5f0a470 to 8c00382 Compare February 2, 2026 13:48
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 3 times, most recently from 544470f to caade65 Compare February 9, 2026 12:33
@github-renovate-self-hosted github-renovate-self-hosted force-pushed the renovate/python/dev-dependencies branch 2 times, most recently from c5ac21e to ce8d143 Compare February 11, 2026 18:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

3 participants