[PR #83] [CLOSED] Update all non-major dependencies - autoclosed #98

Closed
opened 2026-10-13 19:47:14 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/83
Author: @renovate[bot]
Created: 1/3/2026
Status: ❌ Closed

Base: main ← Head: renovate/all-minor-patch


📝 Commits (1)

  • f85edce Update all non-major dependencies

📊 Changes

3 files changed (+323 additions, -346 deletions)

View changed files

📝 .github/workflows/release.yaml (+1 -1)
📝 poetry.lock (+321 -344)
📝 pyproject.toml (+1 -1)

📄 Description

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence Type Update Pending
pydantic (changelog) 2.12.5 → 2.13.4 age confidence project.dependencies minor
pyright 1.1.407 → 1.1.411 age confidence dev patch
pytest-asyncio (changelog) 1.3.0 → 1.4.0 age confidence dev minor
python 3.12 → 3.14 age confidence uses-with minor 3.14.7
rich 14.0.0 → 14.3.4 age confidence project.dependencies minor
ruff (source, changelog) >=0.9.6,<0.13.0 → >=0.16.1,<0.17.0 age confidence dev minor 0.16.2
sqlalchemy (changelog) 2.0.45 → 2.0.51 age confidence project.dependencies patch
yarl 1.22.0 → 1.24.5 age confidence project.dependencies minor

Release Notes

pydantic/pydantic (pydantic)

v2.13.4: 2026-05-06

Compare Source

v2.13.4 (2026-05-06)

What's Changed
Packaging
Fixes

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4

v2.13.3

Compare Source

GitHub release

What's Changed
Fixes

v2.13.2

Compare Source

v2.13.1: 2026-04-15

Compare Source

v2.13.1 (2026-04-15)

What's Changed
Fixes

Full Changelog: https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1

v2.13.0

Compare Source

GitHub release

The highlights of the v2.13 release are available in the blog post.
Several minor changes (considered non-breaking changes according to our versioning policy)
are also included in this release. Make sure to look into them before upgrading.

This release contains the updated pydantic.v1 namespace, matching version 1.10.26 which includes support for Python 3.14.

What's Changed

See the beta releases for all changes sinces 2.12.

New Features
  • Allow default factories of private attributes to take validated model data by @​Viicos in #​13013
Changes
Fixes
  • Change type of Any when synthesizing _build_sources for BaseSettings.__init__() signature in the mypy plugin by @​Viicos in #​13049
  • Fix model equality when using runtime extra configuration by @​Viicos in #​13062
Packaging
New Contributors
RobertCraigie/pyright-python (pyright)

v1.1.411

Compare Source

v1.1.410

Compare Source

v1.1.409

Compare Source

v1.1.408

Compare Source

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

v1.4.0: pytest-asyncio v1.4.0

Compare Source

1.4.0 - 2026-05-26

Deprecated

  • Overriding the event_loop_policy fixture is deprecated. Use the pytest_asyncio_loop_factories hook instead. (#​1419)

Added

  • Added the pytest_asyncio_loop_factories hook to parametrize asyncio tests with custom event loop factories.

    The hook returns a mapping of factory names to loop factories, and pytest.mark.asyncio(loop_factories=[...]) selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.

    Synchronous @pytest_asyncio.fixture functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via asyncio.run() or asyncio.set_event_loop(None)). (#​1164)

Changed

  • Improved the readability of the warning message that is displayed when asyncio_default_fixture_loop_scope is unset (#​1298)
  • Only import asyncio.AbstractEventLoopPolicy for type checking to avoid raising
    a DeprecationWarning. (#​1394)
  • Updated minimum supported pytest version to v8.4.0. (#​1397)

Fixed

  • Fixed a ResourceWarning: unclosed event loop warning that could occur when a synchronous test called asyncio.run() or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (#​724)

Notes for Downstream Packagers

  • Added dependency on sphinx-tabs >= 3.5 to organize documentation examples into tabs. (#​1395)
actions/python-versions (python)

v3.14.6: 3.14.6

Compare Source

Python 3.14.6

v3.14.5: 3.14.5

Compare Source

Python 3.14.5

v3.14.4: 3.14.4

Compare Source

Python 3.14.4

v3.14.3: 3.14.3

Compare Source

Python 3.14.3

v3.14.2: 3.14.2

Compare Source

Python 3.14.2

v3.14.1: 3.14.1

Compare Source

Python 3.14.1

v3.14.0: 3.14.0

Compare Source

Python 3.14.0

v3.13.15: 3.13.15

Compare Source

Python 3.13.15

v3.13.14: 3.13.14

Compare Source

Python 3.13.14

v3.13.13: 3.13.13

Compare Source

Python 3.13.13

v3.13.12: 3.13.12

Compare Source

Python 3.13.12

v3.13.11: 3.13.11

Compare Source

Python 3.13.11

v3.13.10: 3.13.10

Compare Source

Python 3.13.10

v3.13.9: 3.13.9

Compare Source

Python 3.13.9

v3.13.8: 3.13.8

Compare Source

Python 3.13.8

v3.13.7: 3.13.7

Compare Source

Python 3.13.7

v3.13.6: 3.13.6

Compare Source

Python 3.13.6

v3.13.5: 3.13.5

Compare Source

Python 3.13.5

v3.13.4: 3.13.4

Compare Source

Python 3.13.4

v3.13.3: 3.13.3

Compare Source

Python 3.13.3

v3.13.2: 3.13.2

Compare Source

Python 3.13.2

v3.13.1: 3.13.1

Compare Source

Python 3.13.1

v3.13.0: 3.13.0

Compare Source

Python 3.13.0

Textualize/rich (rich)

v14.3.4

Compare Source

Changed
  • Improved import time with lazy loading #​4070
  • Changed link id generation to avoid random number generation at runtime #​3845

v14.3.3

Compare Source

Fixed
  • Fixed infinite loop with cells.split_graphemes #​4006

v14.3.2

Compare Source

Fixed
  • Fixed solo ZWJ crash #​3953
  • Fixed control codes reporting width of 1 #​3953

v14.3.1

Compare Source

Fixed
  • Fixed characters out of unicode range reporting a cell size if 0 #​3944

v14.3.0

Compare Source

Fixed
  • IPython now respects when a Console instance is passed to pretty.install #​3915
  • Fixed extraneous blank line on non-interactive disabled Progress #​3905
  • Fixed extra padding on first cell in columns #​3935
  • Fixed trailing whitespace removed when soft_wrap=True #​3937
  • Fixed style new-lines when soft_wrap = True and a print style is set #​3938
Added
  • Added support for some multi-codepopint glyphs (will fix alignment issues for these characters) #​3930
  • Added support for UNICODE_VERSION environment variable #​3930
  • Added last_render_height property to LiveRender #​3934
  • Expose locals_max_depth and locals_overflow in traceback.install #​3906/
  • Added Segment.split_lines_terminator #​3938
Changed
  • cells.cell_len now has a unicode_version parameter (that you probably should never change) #​3930
  • Live will not write a new line if there was nothing rendered #​3934
  • Changed style of Markdown headers #​3942
  • Changed style of Markdown tables, added markdown.table.header and markdown.table.border styles #​3942
  • Changed style of Markdown rules #​3942

v14.2.0

Compare Source

Changed

v14.1.0

Compare Source

Changed
  • Removed typing_extensions from runtime dependencies #​3763
  • Live objects (including Progress) may now be nested #​3768
  • Added padding property to Syntax which returns a tuple of four integers #​3782
Fixed
  • Fixed extraction of recursive exceptions #​3772
  • Fixed padding applied to Syntax #​3782
  • Fixed Panel title missing the panel background style #​3569
Added
  • Added TTY_INTERACTIVE environment variable to force interactive mode off or on #​3777
astral-sh/ruff (ruff)

v0.16.1

Compare Source

Released on 2026-07-30.

Preview features
  • Add an option to opt out of human-readable names (#​27160)
  • [flake8-pytest-style] Make fixes safe by default and unsafe only when comments are present (PT018) (#​27201)
  • [pyupgrade] Skip fix when a defaulted TypeVar precedes a non-defaulted one (UP040, UP046, UP047) (#​27133)
  • [ruff] Fix false positive with unpacked arguments (RUF065) (#​26959)
Bug fixes
  • Bump gen-lsp-types to gracefully handle unknown enumeration values in LSP messages (#​27230)
  • [flake8-bugbear] Mark range as immutable (B008) (#​27247)
  • [flake8-comprehensions] NFKC-normalize keyword names in C408 fix (#​26813)
  • [flake8-return] Fix false positive when variable is read in finally clause (RET504) (#​25441)
  • [pydocstyle] Skip section detection inside RST directive bodies (D214, D405, D413) (#​23635)
  • [refurb] Parenthesize yield arguments in the FURB192 fix (#​27192)
Rule changes
  • [flake8-pytest-style] Mark PT022 fixes as unsafe (#​26440)
  • [refurb] Mark fixes that remove unknown separators as unsafe (FURB105) (#​27200)
Server
  • Fix indexing of excluded nested Ruff workspaces (#​27303)
  • Lint TOML files in the LSP (#​26862)
Documentation
  • Cover pycon Markdown formatting (#​27153)
  • [flake8-bandit] Document TYPE_CHECKING exception (S101) (#​27004)
  • [flake8-import-conventions] Document that extend-aliases can override default aliases (#​27191)
  • [pylint] Add missing fix safety gotchas for non-augmented-assignment (PLR6104) (#​27250)
Other changes
  • Reduce syntax error noise by swallowing dedents like indents (#​27170)
  • Vendor latest annotate-snippets (#​27033)
Contributors

v0.16.0

Compare Source

Released on 2026-07-23.

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

Breaking changes
  • Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for
    more details and the new Default Rules page for a
    full listing of the enabled rules.

  • Ruff can now format Python code blocks in Markdown files and will do this by default. See the
    documentation for more details.

  • Ruff now supports ruff: ignore comments at the ends of lines, like noqa comments, or on the line preceding a diagnostic. For example, these both suppress an unused-import (F401) diagnostic:

    import math  # ruff: ignore[F401]
    
    # ruff: ignore[F401]
    import os
    
  • Fixes are now shown in check and format --check output:

    ❯ ruff format --check .
    unformatted: File would be reformatted
     --> try.md:1:1
      |
    1 | ```python
      - import   math
    2 + import math
    3 | ```
      |
    
    1 file would be reformatted
    

    This example also shows off the Markdown formatting.

  • format --check now supports the same output formats as the linter, including the github and
    gitlab outputs for rendering annotations in CI:

    ❯ ruff format --check --output-format github .
    ::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted
    

    See the CLI help or documentation for the
    full list of supported formats.

  • The filename, location, end_location, fix.edits[].location, and fix.edits[].end_location
    fields in the JSON output format may now be null rather than defaulting to the empty string and
    row 1, column 1, respectively.

Stabilization

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

The following behaviors have been stabilized:

Preview features
  • [pyupgrade] Fix false positive with TypeVar default before Python 3.13 (UP040) (#​26888)
Bug fixes
  • [ruff] Fix missing check on unrecognized early bound (RUF016) (#​26986)
Rule changes
  • Insert a space after the colon in Ruff suppression comments (#​27123)
Performance
  • [pyupgrade] Speed up unnecessary-future-import (UP010) (#​27047)
Documentation
  • [ruff] Add missing period in "Why is this bad?" section (RUF200) (#​26930)
  • [flake8-simplify] Clarify os.environ behavior on Windows (SIM112) (#​26972)
  • [pydocstyle] Document fix safety (D400) (#​26971)
Contributors

v0.15.22

Compare Source

Release Notes

Released on 2026-07-16.

Preview features
  • [pycodestyle] Add an autofix for E402 (#​22212)
  • [refurb] Allow subclassing builtins in stub files (FURB189) (#​26812)
  • [ruff] Add rule to replace noqa comments with ruff:ignore (RUF105) (#​26423)
  • [ruff] Add rule to use human-readable names in ruff:ignore comments (RUF106) (#​26682)
  • [ruff] Add rule to use human-readable names in configuration selectors (RUF201) (#​26772)
Bug fixes
  • [flake8-pyi] Fix false positive in __all__ (PYI053) (#​26872)
Rule changes
  • [pylint] Ignore mutable type updates in redefined-loop-name (PLW2901) (#​25733)
Performance
  • Avoid redundant lexer token bookkeeping (#​26765)
  • Avoid redundant pending-indentation writes (#​26774)
  • Avoid unnecessary identifier lookahead (#​26525)
  • Reuse parser scratch buffers (#​26798)
Documentation
  • Document argfile support (#​26803)
  • [flake8-datetimez] Clarify naming guidance for datetime.today (DTZ002) (#​26658)
  • [pycodestyle] Document E731 fix safety (#​26847)
  • [ruff] Clarify intentional async contexts for unused-async (RUF029) (#​26641)
Contributors

Install ruff 0.15.22

Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.ps1 | iex"

Download ruff 0.15.22

File Platform Checksum
ruff-aarch64-apple-darwin.tar.gz Apple Silicon macOS checksum
ruff-x86_64-apple-darwin.tar.gz Intel macOS checksum
ruff-aarch64-pc-windows-msvc.zip ARM64 Windows checksum
ruff-i686-pc-windows-msvc.zip x86 Windows checksum
ruff-x86_64-pc-windows-msvc.zip x64 Windows checksum
ruff-aarch64-unknown-linux-gnu.tar.gz ARM64 Linux checksum
ruff-i686-unknown-linux-gnu.tar.gz x86 Linux checksum
ruff-powerpc64-unknown-linux-gnu.tar.gz PPC64 Linux checksum
ruff-powerpc64le-unknown-linux-gnu.tar.gz PPC64LE Linux checksum
ruff-riscv64gc-unknown-linux-gnu.tar.gz RISCV Linux checksum
ruff-s390x-unknown-linux-gnu.tar.gz S390x Linux checksum
ruff-x86_64-unknown-linux-gnu.tar.gz x64 Linux checksum
ruff-armv7-unknown-linux-gnueabihf.tar.gz ARMv7 Linux checksum
ruff-aarch64-unknown-linux-musl.tar.gz ARM64 MUSL Linux checksum
ruff-i686-unknown-linux-musl.tar.gz x86 MUSL Linux checksum
ruff-x86_64-unknown-linux-musl.tar.gz x64 MUSL Linux checksum
ruff-arm-unknown-linux-musleabihf.tar.gz ARMv6 MUSL Linux (Hardfloat) checksum
ruff-armv7-unknown-linux-musleabihf.tar.gz ARMv7 MUSL Linux checksum

Verifying GitHub Artifact Attestations

The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:

gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruff

You can also download the attestation from GitHub and verify against that directly:

gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>

v0.15.21

Compare Source

Released on 2026-07-09.

Preview features
  • Add --add-ignore for adding ruff:ignore comments (#​26346)
  • [flake8-comprehensions] Drop C409 tuple comprehension preview behavior (#​25707)
  • Avoid whitespace normalization when formatting comments (#​26455)
  • [pyupgrade] Lint and fix use of deprecated abc decorators (UP051) (#​26417)
Bug fixes
  • Refine non-empty f-string detection (#​26526)
  • Detect syntax errors in individual notebook cells (#​26419)
  • [flake8-implicit-str-concat] Fix ISC003 autofix incorrectly stripping + from comments (#​26554)
Rule changes
  • [flake8-executable] Mark EXE004 fix as unsafe (#​26033)
  • [flake8-pyi] Mark PYI061 fixes as unsafe in Python files (#​26533)
  • [pydocstyle] Skip overload-with-docstring in stub files (D418) (#​26318)
Performance
  • Avoid per-token source index visitor calls (#​26506)
  • Cache parenthesized expression boundaries in the formatter (#​26344)
  • Improve performance of rendering edits in preview mode (#​26565)
  • Inline fits_element in formatter (#​26429)
  • Inline formatter printing hot paths (#​26504)
  • Lazily create builtin bindings (#​26510)
  • Skip empty trivia scans in the source indexer (#​26507)
  • Use ICF for macOS release builds (#​25780)
Formatter
  • Add --extend-exclude to ruff format (#​26372)
Documentation
  • Add "How does Ruff's import sorting compare to isort?" link to README (#​26530)
  • Fix Mozilla Firefox repository link in README (#​26537)
  • [flake8-bandit] Fix misleading docstring for mako-templates (S702) (#​26432)
  • [ruff] Fix non-triggering example for if-key-in-dict-del (RUF051) (#​26433)
Contributors

v0.15.20

Compare Source

Released on 2026-06-25.

Preview features
  • Allow human-readable names in rule selectors (#​25887)
  • Emit a warning instead of an error for unknown rule selectors (#​26113)
  • Match noqa shebang handling in ruff:ignore comments (#​26286)
  • [ruff] Remove pytest-fixture-autouse (RUF076) (#​26240, #​26371)
Documentation
  • Add versioning sections to custom crate READMEs (#​26317)
  • Update ruff_python_parser README for crates.io (#​26315)
  • [perflint] Clarify that PERF402 applies to any iterable (#​26242)
Contributors

v0.15.19

Compare Source

Released on 2026-06-23.

Preview features
  • Support human-readable names when hovering suppression comments and in code actions (#​26114)
Bug fixes
  • Fall back to default settings when editor-only settings are invalid (#​26244)
  • Fix panic when inserting text at a notebook cell boundary (#​26111)
Rule changes
  • [pylint] Update fix suggestions for __floor__, __trunc__, __length_hint__, and __matmul__ variants (PLC2801) (#​26239)
Performance
  • Avoid allocating when parsing single string literals (#​26200)
  • Avoid reallocating singleton call arguments (#​26223)
  • Lazily create source files for lint diagnostics (#​26226)
  • Optimize formatter text width and indentation (#​26236)
  • Reserve capacity for builtin bindings (#​26229)
  • Skip repeated-key checks for singleton dictionaries (#​26228)
  • Use ArrayVec for qualified name segments (#​26224)
Documentation
  • [flake8-pyi] Note that PYI051 is an opinionated stylistic rule (#​26179)
  • [pyupgrade] Clarify UP029 as a Python 2 compatibility rule (#​26243)
Other changes
  • Publish Ruff crates to crates.io (#​26271)
Contributors

v0.15.18

Compare Source

Released on 2026-06-18.

Preview features
  • Handle nested ruff:ignore comments (#​25791)
  • Stop displaying severity in output (#​26050)
  • Use human-readable names in CLI output (#​25937)
  • Use human-readable names in LSP and playground diagnostics (#​26058)
  • [pydocstyle] Prevent property docstrings starting with verbs (D421) (#​23775)
  • [flake8-pyi] Extend PYI033 to Python files (#​26129)
Bug fixes
  • Detect equivalent numeric mapping keys (#​26009)
  • Detect mapping keys equivalent to booleans (#​25982)
  • Detect repeated signed and complex dictionary keys (#​26007)
Rule changes
  • [flake8-pyi] Rename PYI033 to legacy-type-comment (#​26131)
Performance
  • Use ThinVec for call keywords (#​25999)
  • Inline parser recovery context checks (#​26038)
  • Match parser keywords as bytes (#​26037)
  • Move value parsing out of lexing (#​25360)
Server
  • Render subdiagnostics and secondary annotations as related information (#​26011)
Documentation
  • Update fix availability for always-fixable rules (#​26091)
  • [flake8-tidy-imports] Add fix safety section (TID252) (#​17491)
Parser
  • Reject __debug__ lambda parameters (#​26022)
  • Reject _ as a match-pattern target (#​25977)
  • Reject multiple starred names in sequence patterns (#​25976)
  • Reject parenthesized star imports (#​26021)
  • Reject starred comprehension targets (#​26023)
  • Reject unparenthesized generator expressions in class bases (#​25978)
  • Reject yield expressions after commas (#​26024)
  • Validate function type parameter default order (#​25981)
Playground
Contributors

v0.15.17

Compare Source

Released on 2026-06-11.

Preview features
  • Allow human-readable names in suppression comments (#​25614)
  • Fix handling of ignore comments within a disable/enable pair (#​25845)
  • Prioritize human-readable names in CLI output (#​25869)
  • Respect diagnostic start and parent ranges and trailing comments in ruff:ignore suppressions (#​25673)
  • [flake8-async] Add trio.as_safe_channel to safe decorators (ASYNC119) (#​25775)
  • [flake8-pytest-style] Also check pytest_asyncio fixtures (#​25375)
  • [ruff] Ban pytest autouse fixtures (RUF076) (#​25477)
  • [pyupgrade] Add from __future__ import annotations automatically (UP007, UP045) (#​23259)
Bug fixes
  • Fix diagnostic when ruff:enable or ruff:disable appears where ruff:ignore is expected (#​25700)
  • [pyupgrade] Preserve leading empty literals to avoid syntax errors (UP032) (#​25491)
Rule changes
  • [flake8-pytest-style] Clarify diagnostic message for single parameters (PT007) (#​25592)
  • [numpy] Drop autofix for np.in1d (NPY201) (#​25612)
  • [pylint] Exempt Python version comparisons (PLR2004) (#​25743)
Performance
  • Reserve AST Vecs w

✂ Note

PR body was truncated to here.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Glitchy-Sheep/boosty-downloader/pull/83 **Author:** [@renovate[bot]](https://github.com/apps/renovate) **Created:** 1/3/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `renovate/all-minor-patch` --- ### 📝 Commits (1) - [`f85edce`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/f85edcec0bcddc0c31cd9424d5d6ad332c9a80f1) Update all non-major dependencies ### 📊 Changes **3 files changed** (+323 additions, -346 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/release.yaml` (+1 -1) 📝 `poetry.lock` (+321 -344) 📝 `pyproject.toml` (+1 -1) </details> ### 📄 Description > ℹ️ **Note** > > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | Pending | |---|---|---|---|---|---|---| | [pydantic](https://redirect.github.com/pydantic/pydantic) ([changelog](https://docs.pydantic.dev/latest/changelog/)) | `2.12.5` → `2.13.4` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.13.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.12.5/2.13.4?slim=true) | project.dependencies | minor | | | [pyright](https://redirect.github.com/RobertCraigie/pyright-python) | `1.1.407` → `1.1.411` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pyright/1.1.411?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pyright/1.1.407/1.1.411?slim=true) | dev | patch | | | [pytest-asyncio](https://redirect.github.com/pytest-dev/pytest-asyncio) ([changelog](https://pytest-asyncio.readthedocs.io/en/stable/reference/changelog.html)) | `1.3.0` → `1.4.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pytest-asyncio/1.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pytest-asyncio/1.3.0/1.4.0?slim=true) | dev | minor | | | [python](https://redirect.github.com/actions/python-versions) | `3.12` → `3.14` | ![age](https://developer.mend.io/api/mc/badges/age/github-releases/actions%2fpython-versions/3.14.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/actions%2fpython-versions/3.12.13/3.14.6?slim=true) | uses-with | minor | `3.14.7` | | [rich](https://redirect.github.com/Textualize/rich) | `14.0.0` → `14.3.4` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/rich/14.3.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/rich/14.0.0/14.3.4?slim=true) | project.dependencies | minor | | | [ruff](https://docs.astral.sh/ruff) ([source](https://redirect.github.com/astral-sh/ruff), [changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md)) | `>=0.9.6,<0.13.0` → `>=0.16.1,<0.17.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.16.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.12.12/0.16.1?slim=true) | dev | minor | `0.16.2` | | [sqlalchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `2.0.45` → `2.0.51` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/sqlalchemy/2.0.51?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/sqlalchemy/2.0.45/2.0.51?slim=true) | project.dependencies | patch | | | [yarl](https://redirect.github.com/aio-libs/yarl) | `1.22.0` → `1.24.5` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/yarl/1.24.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/yarl/1.22.0/1.24.5?slim=true) | project.dependencies | minor | | --- ### Release Notes <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.13.4`](https://redirect.github.com/pydantic/pydantic/releases/tag/v2.13.4): 2026-05-06 [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4) #### v2.13.4 (2026-05-06) ##### What's Changed ##### Packaging - Bump libc from 0.2.155 to 0.2.185 by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13109](https://redirect.github.com/pydantic/pydantic/pull/13109) - Adapt `pydantic-core` linker flags on macOS by [@&#8203;washingtoneg](https://redirect.github.com/washingtoneg) and [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13147](https://redirect.github.com/pydantic/pydantic/pull/13147) ##### Fixes - Preserve `RootModel` core metadata by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13129](https://redirect.github.com/pydantic/pydantic/pull/13129) - **Full Changelog**: <https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4> ### [`v2.13.3`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2133-2026-04-20) [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3) [GitHub release](https://redirect.github.com/pydantic/pydantic/releases/tag/v2.13.3) ##### What's Changed ##### Fixes - Handle `AttributeError` subclasses with `from_attributes` by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13096](https://redirect.github.com/pydantic/pydantic/pull/13096) ### [`v2.13.2`](https://redirect.github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2) [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2) ### [`v2.13.1`](https://redirect.github.com/pydantic/pydantic/releases/tag/v2.13.1): 2026-04-15 [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1) #### v2.13.1 (2026-04-15) ##### What's Changed ##### Fixes - Fix `ValidationInfo.data` missing with `model_validate_json()` by [@&#8203;davidhewitt](https://redirect.github.com/davidhewitt) in [#&#8203;13079](https://redirect.github.com/pydantic/pydantic/pull/13079) **Full Changelog**: <https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1> ### [`v2.13.0`](https://redirect.github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2130-2026-04-13) [Compare Source](https://redirect.github.com/pydantic/pydantic/compare/v2.12.5...v2.13.0) [GitHub release](https://redirect.github.com/pydantic/pydantic/releases/tag/v2.13.0) The highlights of the v2.13 release are available in the [blog post](https://pydantic.dev/articles/pydantic-v2-13-release). Several minor changes (considered non-breaking changes according to our [versioning policy](https://pydantic.dev/docs/validation/2.13/get-started/version-policy/#pydantic-v2)) are also included in this release. Make sure to look into them before upgrading. This release contains the updated `pydantic.v1` namespace, matching version 1.10.26 which includes support for Python 3.14. ##### What's Changed See the beta releases for all changes sinces 2.12. ##### New Features - Allow default factories of private attributes to take validated model data by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13013](https://redirect.github.com/pydantic/pydantic/pull/13013) ##### Changes - Warn when serializing fixed length tuples with too few items by [@&#8203;arvindsaripalli](https://redirect.github.com/arvindsaripalli) in [#&#8203;13016](https://redirect.github.com/pydantic/pydantic/pull/13016) ##### Fixes - Change type of `Any` when synthesizing `_build_sources` for `BaseSettings.__init__()` signature in the mypy plugin by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13049](https://redirect.github.com/pydantic/pydantic/pull/13049) - Fix model equality when using runtime `extra` configuration by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13062](https://redirect.github.com/pydantic/pydantic/pull/13062) ##### Packaging - Add zizmor for GitHub Actions workflow linting by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13039](https://redirect.github.com/pydantic/pydantic/pull/13039) - Update jiter to v0.14.0 to fix a segmentation fault on musl Linux by [@&#8203;Viicos](https://redirect.github.com/Viicos) in [#&#8203;13064](https://redirect.github.com/pydantic/pydantic/pull/13064) ##### New Contributors - [@&#8203;arvindsaripalli](https://redirect.github.com/arvindsaripalli) made their first contribution in [#&#8203;13016](https://redirect.github.com/pydantic/pydantic/pull/13016) </details> <details> <summary>RobertCraigie/pyright-python (pyright)</summary> ### [`v1.1.411`](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.410...v1.1.411) [Compare Source](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.410...v1.1.411) ### [`v1.1.410`](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.409...v1.1.410) [Compare Source](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.409...v1.1.410) ### [`v1.1.409`](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409) [Compare Source](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409) ### [`v1.1.408`](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.407...v1.1.408) [Compare Source](https://redirect.github.com/RobertCraigie/pyright-python/compare/v1.1.407...v1.1.408) </details> <details> <summary>pytest-dev/pytest-asyncio (pytest-asyncio)</summary> ### [`v1.4.0`](https://redirect.github.com/pytest-dev/pytest-asyncio/releases/tag/v1.4.0): pytest-asyncio v1.4.0 [Compare Source](https://redirect.github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0) ### [1.4.0](https://redirect.github.com/pytest-dev/pytest-asyncio/tree/1.4.0) - 2026-05-26 #### Deprecated - Overriding the *event\_loop\_policy* fixture is deprecated. Use the `pytest_asyncio_loop_factories` hook instead. ([#&#8203;1419](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419)) #### Added - Added the `pytest_asyncio_loop_factories` hook to parametrize asyncio tests with custom event loop factories. The hook returns a mapping of factory names to loop factories, and `pytest.mark.asyncio(loop_factories=[...])` selects a subset of configured factories per test. When a single factory is configured, test names are unchanged. Synchronous `@pytest_asyncio.fixture` functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via `asyncio.run()` or `asyncio.set_event_loop(None)`). ([#&#8203;1164](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164)) #### Changed - Improved the readability of the warning message that is displayed when `asyncio_default_fixture_loop_scope` is unset ([#&#8203;1298](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298)) - Only import `asyncio.AbstractEventLoopPolicy` for type checking to avoid raising a DeprecationWarning. ([#&#8203;1394](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394)) - Updated minimum supported pytest version to v8.4.0. ([#&#8203;1397](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397)) #### Fixed - Fixed a `ResourceWarning: unclosed event loop` warning that could occur when a synchronous test called `asyncio.run()` or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. ([#&#8203;724](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724)) #### Notes for Downstream Packagers - Added dependency on `sphinx-tabs >= 3.5` to organize documentation examples into tabs. ([#&#8203;1395](https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395)) </details> <details> <summary>actions/python-versions (python)</summary> ### [`v3.14.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.6-27283001424): 3.14.6 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.5-25647354415...3.14.6-27283001424) Python 3.14.6 ### [`v3.14.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.5-25647354415): 3.14.5 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.4-25113653268...3.14.5-25647354415) Python 3.14.5 ### [`v3.14.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.4-25113653268): 3.14.4 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.3-21673711214...3.14.4-25113653268) Python 3.14.4 ### [`v3.14.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.3-21673711214): 3.14.3 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.2-20014991423...3.14.3-21673711214) Python 3.14.3 ### [`v3.14.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.2-20014991423): 3.14.2 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.1-19879739908...3.14.2-20014991423) Python 3.14.2 ### [`v3.14.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.1-19879739908): 3.14.1 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.14.0-18313368925...3.14.1-19879739908) Python 3.14.1 ### [`v3.14.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.14.0-18313368925): 3.14.0 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.15-31064747964...3.14.0-18313368925) Python 3.14.0 ### [`v3.13.15`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.15-31064747964): 3.13.15 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.14-27320626148...3.13.15-31064747964) Python 3.13.15 ### [`v3.13.14`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.14-27320626148): 3.13.14 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.13-27225391538...3.13.14-27320626148) Python 3.13.14 ### [`v3.13.13`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.13-27225391538): 3.13.13 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.12-21673645133...3.13.13-27225391538) Python 3.13.13 ### [`v3.13.12`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.12-21673645133): 3.13.12 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.11-20014977833...3.13.12-21673645133) Python 3.13.12 ### [`v3.13.11`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.11-20014977833): 3.13.11 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.10-19879712315...3.13.11-20014977833) Python 3.13.11 ### [`v3.13.10`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.10-19879712315): 3.13.10 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.9-18515951191...3.13.10-19879712315) Python 3.13.10 ### [`v3.13.9`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.9-18515951191): 3.13.9 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.8-18331000654...3.13.9-18515951191) Python 3.13.9 ### [`v3.13.8`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.8-18331000654): 3.13.8 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.7-16980743123...3.13.8-18331000654) Python 3.13.8 ### [`v3.13.7`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.7-16980743123): 3.13.7 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.6-16792117939...3.13.7-16980743123) Python 3.13.7 ### [`v3.13.6`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.6-16792117939): 3.13.6 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.5-15601068749...3.13.6-16792117939) Python 3.13.6 ### [`v3.13.5`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.5-15601068749): 3.13.5 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.4-15433317575...3.13.5-15601068749) Python 3.13.5 ### [`v3.13.4`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.4-15433317575): 3.13.4 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.3-14344076652...3.13.4-15433317575) Python 3.13.4 ### [`v3.13.3`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.3-14344076652): 3.13.3 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.2-13708744326...3.13.3-14344076652) Python 3.13.3 ### [`v3.13.2`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.2-13708744326): 3.13.2 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.1-13437882550...3.13.2-13708744326) Python 3.13.2 ### [`v3.13.1`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.1-13437882550): 3.13.1 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.13.0-13707372259...3.13.1-13437882550) Python 3.13.1 ### [`v3.13.0`](https://redirect.github.com/actions/python-versions/releases/tag/3.13.0-13707372259): 3.13.0 [Compare Source](https://redirect.github.com/actions/python-versions/compare/3.12.13-27650778726...3.13.0-13707372259) Python 3.13.0 </details> <details> <summary>Textualize/rich (rich)</summary> ### [`v14.3.4`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1434---2026-04-11) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.3.3...v14.3.4) ##### Changed - Improved import time with lazy loading [#&#8203;4070](https://redirect.github.com/Textualize/rich/pull/4070) - Changed link id generation to avoid random number generation at runtime [#&#8203;3845](https://redirect.github.com/Textualize/rich/pull/3845) ### [`v14.3.3`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1433---2026-02-19) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.3.2...v14.3.3) ##### Fixed - Fixed infinite loop with `cells.split_graphemes` [#&#8203;4006](https://redirect.github.com/Textualize/rich/pull/4006) ### [`v14.3.2`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1432---2026-02-01) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.3.1...v14.3.2) ##### Fixed - Fixed solo ZWJ crash [#&#8203;3953](https://redirect.github.com/Textualize/rich/pull/3953) - Fixed control codes reporting width of 1 [#&#8203;3953](https://redirect.github.com/Textualize/rich/pull/3953) ### [`v14.3.1`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1431---2026-01-24) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.3.0...v14.3.1) ##### Fixed - Fixed characters out of unicode range reporting a cell size if 0 [#&#8203;3944](https://redirect.github.com/Textualize/rich/pull/3944) ### [`v14.3.0`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1430---2026-01-24) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.2.0...v14.3.0) ##### Fixed - IPython now respects when a `Console` instance is passed to `pretty.install` [#&#8203;3915](https://redirect.github.com/Textualize/rich/pull/3915) - Fixed extraneous blank line on non-interactive disabled `Progress` [#&#8203;3905](https://redirect.github.com/Textualize/rich/pull/3905) - Fixed extra padding on first cell in columns [#&#8203;3935](https://redirect.github.com/Textualize/rich/pull/3935) - Fixed trailing whitespace removed when soft\_wrap=True [#&#8203;3937](https://redirect.github.com/Textualize/rich/pull/3937) - Fixed style new-lines when soft\_wrap = True and a print style is set [#&#8203;3938](https://redirect.github.com/Textualize/rich/pull/3938) ##### Added - Added support for some multi-codepopint glyphs (will fix alignment issues for these characters) [#&#8203;3930](https://redirect.github.com/Textualize/rich/pull/3930) - Added support for `UNICODE_VERSION` environment variable [#&#8203;3930](https://redirect.github.com/Textualize/rich/pull/3930) - Added `last_render_height` property to LiveRender [#&#8203;3934](https://redirect.github.com/Textualize/rich/pull/3934) - Expose locals\_max\_depth and locals\_overflow in traceback.install [#&#8203;3906/](https://redirect.github.com/Textualize/rich/pull/3906/) - Added `Segment.split_lines_terminator` [#&#8203;3938](https://redirect.github.com/Textualize/rich/pull/3938) ##### Changed - `cells.cell_len` now has a `unicode_version` parameter (that you probably should never change) [#&#8203;3930](https://redirect.github.com/Textualize/rich/pull/3930) - Live will not write a new line if there was nothing rendered [#&#8203;3934](https://redirect.github.com/Textualize/rich/pull/3934) - Changed style of Markdown headers [#&#8203;3942](https://redirect.github.com/Textualize/rich/pull/3942) - Changed style of Markdown tables, added `markdown.table.header` and `markdown.table.border` styles [#&#8203;3942](https://redirect.github.com/Textualize/rich/pull/3942) - Changed style of Markdown rules [#&#8203;3942](https://redirect.github.com/Textualize/rich/pull/3942) ### [`v14.2.0`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1420---2025-10-09) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.1.0...v14.2.0) ##### Changed - Python3.14 compatibility [#&#8203;3861](https://redirect.github.com/Textualize/rich/pull/3861) ### [`v14.1.0`](https://redirect.github.com/Textualize/rich/blob/HEAD/CHANGELOG.md#1410---2025-06-25) [Compare Source](https://redirect.github.com/Textualize/rich/compare/v14.0.0...v14.1.0) ##### Changed - Removed `typing_extensions` from runtime dependencies [#&#8203;3763](https://redirect.github.com/Textualize/rich/pull/3763) - Live objects (including Progress) may now be nested [#&#8203;3768](https://redirect.github.com/Textualize/rich/pull/3768) - Added padding property to Syntax which returns a tuple of four integers [#&#8203;3782](https://redirect.github.com/Textualize/rich/pull/3782) ##### Fixed - Fixed extraction of recursive exceptions [#&#8203;3772](https://redirect.github.com/Textualize/rich/pull/3772) - Fixed padding applied to Syntax [#&#8203;3782](https://redirect.github.com/Textualize/rich/pull/3782) - Fixed `Panel` title missing the panel background style [#&#8203;3569](https://redirect.github.com/Textualize/rich/issues/3569) ##### Added - Added `TTY_INTERACTIVE` environment variable to force interactive mode off or on [#&#8203;3777](https://redirect.github.com/Textualize/rich/pull/3777) </details> <details> <summary>astral-sh/ruff (ruff)</summary> ### [`v0.16.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0161) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.16.0...0.16.1) Released on 2026-07-30. ##### Preview features - Add an option to opt out of human-readable names ([#&#8203;27160](https://redirect.github.com/astral-sh/ruff/pull/27160)) - \[`flake8-pytest-style`] Make fixes safe by default and unsafe only when comments are present (`PT018`) ([#&#8203;27201](https://redirect.github.com/astral-sh/ruff/pull/27201)) - \[`pyupgrade`] Skip fix when a defaulted `TypeVar` precedes a non-defaulted one (`UP040`, `UP046`, `UP047`) ([#&#8203;27133](https://redirect.github.com/astral-sh/ruff/pull/27133)) - \[`ruff`] Fix false positive with unpacked arguments (`RUF065`) ([#&#8203;26959](https://redirect.github.com/astral-sh/ruff/pull/26959)) ##### Bug fixes - Bump `gen-lsp-types` to gracefully handle unknown enumeration values in LSP messages ([#&#8203;27230](https://redirect.github.com/astral-sh/ruff/pull/27230)) - \[`flake8-bugbear`] Mark `range` as immutable (`B008`) ([#&#8203;27247](https://redirect.github.com/astral-sh/ruff/pull/27247)) - \[`flake8-comprehensions`] NFKC-normalize keyword names in `C408` fix ([#&#8203;26813](https://redirect.github.com/astral-sh/ruff/pull/26813)) - \[`flake8-return`] Fix false positive when variable is read in `finally` clause (`RET504`) ([#&#8203;25441](https://redirect.github.com/astral-sh/ruff/pull/25441)) - \[`pydocstyle`] Skip section detection inside RST directive bodies (`D214`, `D405`, `D413`) ([#&#8203;23635](https://redirect.github.com/astral-sh/ruff/pull/23635)) - \[`refurb`] Parenthesize `yield` arguments in the `FURB192` fix ([#&#8203;27192](https://redirect.github.com/astral-sh/ruff/pull/27192)) ##### Rule changes - \[`flake8-pytest-style`] Mark `PT022` fixes as unsafe ([#&#8203;26440](https://redirect.github.com/astral-sh/ruff/pull/26440)) - \[`refurb`] Mark fixes that remove unknown separators as unsafe (`FURB105`) ([#&#8203;27200](https://redirect.github.com/astral-sh/ruff/pull/27200)) ##### Server - Fix indexing of excluded nested Ruff workspaces ([#&#8203;27303](https://redirect.github.com/astral-sh/ruff/pull/27303)) - Lint TOML files in the LSP ([#&#8203;26862](https://redirect.github.com/astral-sh/ruff/pull/26862)) ##### Documentation - Cover `pycon` Markdown formatting ([#&#8203;27153](https://redirect.github.com/astral-sh/ruff/pull/27153)) - \[`flake8-bandit`] Document `TYPE_CHECKING` exception (`S101`) ([#&#8203;27004](https://redirect.github.com/astral-sh/ruff/pull/27004)) - \[`flake8-import-conventions`] Document that `extend-aliases` can override default aliases ([#&#8203;27191](https://redirect.github.com/astral-sh/ruff/pull/27191)) - \[`pylint`] Add missing fix safety gotchas for `non-augmented-assignment` (`PLR6104`) ([#&#8203;27250](https://redirect.github.com/astral-sh/ruff/pull/27250)) ##### Other changes - Reduce syntax error noise by swallowing dedents like indents ([#&#8203;27170](https://redirect.github.com/astral-sh/ruff/pull/27170)) - Vendor latest annotate-snippets ([#&#8203;27033](https://redirect.github.com/astral-sh/ruff/pull/27033)) ##### Contributors - [@&#8203;bxff](https://redirect.github.com/bxff) - [@&#8203;anishgirianish](https://redirect.github.com/anishgirianish) - [@&#8203;Avasam](https://redirect.github.com/Avasam) - [@&#8203;epage](https://redirect.github.com/epage) - [@&#8203;LHMQ878](https://redirect.github.com/LHMQ878) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;HarshalPatel1972](https://redirect.github.com/HarshalPatel1972) - [@&#8203;mjpieters](https://redirect.github.com/mjpieters) - [@&#8203;joshuavetos](https://redirect.github.com/joshuavetos) - [@&#8203;jesco-absolute](https://redirect.github.com/jesco-absolut) - [@&#8203;vidigoat](https://redirect.github.com/vidigoat) - [@&#8203;baltasarblanco](https://redirect.github.com/baltasarblanco) - [@&#8203;ribru17](https://redirect.github.com/ribru17) - [@&#8203;oh-summy](https://redirect.github.com/oh-summy) - [@&#8203;Jayashanker-Padishala](https://redirect.github.com/Jayashanker-Padishala) ### [`v0.16.0`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0160) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.22...0.16.0) Released on 2026-07-23. Check out the [blog post](https://astral.sh/blog/ruff-v0.16.0) for a migration guide and overview of the changes! ##### Breaking changes - Ruff now enables a much larger set of rules by default (413, up from 59). See the blog post for more details and the new [Default Rules](https://docs.astral.sh/ruff/default-rules/) page for a full listing of the enabled rules. - Ruff can now format Python code blocks in Markdown files and will do this by default. See the [documentation](https://docs.astral.sh/ruff/formatter/#markdown-code-formatting) for more details. - Ruff now supports `ruff: ignore` comments at the ends of lines, like `noqa` comments, or on the line preceding a diagnostic. For example, these both suppress an [`unused-import`](https://docs.astral.sh/ruff/rules/unused-import/) (`F401`) diagnostic: ```py import math # ruff: ignore[F401] # ruff: ignore[F401] import os ``` - Fixes are now shown in `check` and `format --check` output: ````console ❯ ruff format --check . unformatted: File would be reformatted --> try.md:1:1 | 1 | ```python - import math 2 + import math 3 | ``` | 1 file would be reformatted ```` This example also shows off the Markdown formatting. - `format --check` now supports the same output formats as the linter, including the `github` and `gitlab` outputs for rendering annotations in CI: ```console ❯ ruff format --check --output-format github . ::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted ``` See the CLI help or [documentation](https://docs.astral.sh/ruff/settings/#output-format) for the full list of supported formats. - The `filename`, `location`, `end_location`, `fix.edits[].location`, and `fix.edits[].end_location` fields in the JSON output format may now be `null` rather than defaulting to the empty string and row 1, column 1, respectively. ##### Stabilization The following rules have been stabilized and are no longer in preview: - [`airflow3-incompatible-function-signature`](https://docs.astral.sh/ruff/rules/airflow3-incompatible-function-signature) (`AIR303`) - [`missing-copyright-notice`](https://docs.astral.sh/ruff/rules/missing-copyright-notice) (`CPY001`) - [`unnecessary-from-float`](https://docs.astral.sh/ruff/rules/unnecessary-from-float) (`FURB164`) - [`sorted-min-max`](https://docs.astral.sh/ruff/rules/sorted-min-max) (`FURB192`) - [`implicit-string-concatenation-in-collection-literal`](https://docs.astral.sh/ruff/rules/implicit-string-concatenation-in-collection-literal) (`ISC004`) - [`log-exception-outside-except-handler`](https://docs.astral.sh/ruff/rules/log-exception-outside-except-handler) (`LOG004`) - [`invalid-bool-return-type`](https://docs.astral.sh/ruff/rules/invalid-bool-return-type) (`PLE0304`) - [`too-many-positional-arguments`](https://docs.astral.sh/ruff/rules/too-many-positional-arguments) (`PLR0917`) - [`stop-iteration-return`](https://docs.astral.sh/ruff/rules/stop-iteration-return) (`PLR1708`) - [`none-not-at-end-of-union`](https://docs.astral.sh/ruff/rules/none-not-at-end-of-union) (`RUF036`) - [`access-annotations-from-class-dict`](https://docs.astral.sh/ruff/rules/access-annotations-from-class-dict) (`RUF063`) - [`duplicate-entry-in-dunder-all`](https://docs.astral.sh/ruff/rules/duplicate-entry-in-dunder-all) (`RUF068`) The following behaviors have been stabilized: - [`blind-except`](https://docs.astral.sh/ruff/rules/blind-except) (`BLE001`) is now suppressed when the exception is logged via `logging` methods other than `critical`, `error` and `exception`. - [`future-required-type-annotation`](https://docs.astral.sh/ruff/rules/future-required-type-annotation) (`FA102`) now checks for additional [PEP 585](https://peps.python.org/pep-0585/)-compatible APIs, such as those from `collections.abc`. - [`f-string-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/f-string-in-get-text-func-call) (`INT001`), [`format-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/format-in-get-text-func-call) (`INT002`), and [`printf-in-get-text-func-call`](https://docs.astral.sh/ruff/rules/printf-in-get-text-func-call) (`INT003`) now check for additional common ways of using the `gettext` module, such as assigning it to `builtins._`. - [`suspicious-url-open-usage`](https://docs.astral.sh/ruff/rules/suspicious-url-open-usage) (`S310`) now resolves local string literal bindings to avoid more false positives. - [`snmp-insecure-version`](https://docs.astral.sh/ruff/rules/snmp-insecure-version) (`S508`) and [`snmp-weak-cryptography`](https://docs.astral.sh/ruff/rules/snmp-weak-cryptography) (`S509`) now support the recommended API from newer versions of PySNMP. - [`typing-text-str-alias`](https://docs.astral.sh/ruff/rules/typing-text-str-alias) (`UP019`) now recognizes `typing_extensions.Text` in addition to `typing.Text`. ##### Preview features - \[`pyupgrade`] Fix false positive with `TypeVar` default before Python 3.13 (`UP040`) ([#&#8203;26888](https://redirect.github.com/astral-sh/ruff/pull/26888)) ##### Bug fixes - \[`ruff`] Fix missing check on unrecognized early bound (`RUF016`) ([#&#8203;26986](https://redirect.github.com/astral-sh/ruff/pull/26986)) ##### Rule changes - Insert a space after the colon in Ruff suppression comments ([#&#8203;27123](https://redirect.github.com/astral-sh/ruff/pull/27123)) ##### Performance - \[`pyupgrade`] Speed up `unnecessary-future-import` (`UP010`) ([#&#8203;27047](https://redirect.github.com/astral-sh/ruff/pull/27047)) ##### Documentation - \[`ruff`] Add missing period in "Why is this bad?" section (`RUF200`) ([#&#8203;26930](https://redirect.github.com/astral-sh/ruff/pull/26930)) - \[`flake8-simplify`] Clarify `os.environ` behavior on Windows (`SIM112`) ([#&#8203;26972](https://redirect.github.com/astral-sh/ruff/pull/26972)) - \[`pydocstyle`] Document fix safety (`D400`) ([#&#8203;26971](https://redirect.github.com/astral-sh/ruff/pull/26971)) ##### Contributors - [@&#8203;jonathandung](https://redirect.github.com/jonathandung) - [@&#8203;Joosboy](https://redirect.github.com/Joosboy) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;Andrej730](https://redirect.github.com/Andrej730) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;zaniebot](https://redirect.github.com/zaniebot) ### [`v0.15.22`](https://redirect.github.com/astral-sh/ruff/releases/tag/0.15.22) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.21...0.15.22) #### Release Notes Released on 2026-07-16. ##### Preview features - \[`pycodestyle`] Add an autofix for `E402` ([#&#8203;22212](https://redirect.github.com/astral-sh/ruff/pull/22212)) - \[`refurb`] Allow subclassing builtins in stub files (`FURB189`) ([#&#8203;26812](https://redirect.github.com/astral-sh/ruff/pull/26812)) - \[`ruff`] Add rule to replace `noqa` comments with `ruff:ignore` (`RUF105`) ([#&#8203;26423](https://redirect.github.com/astral-sh/ruff/pull/26423)) - \[`ruff`] Add rule to use human-readable names in `ruff:ignore` comments (`RUF106`) ([#&#8203;26682](https://redirect.github.com/astral-sh/ruff/pull/26682)) - \[`ruff`] Add rule to use human-readable names in configuration selectors (`RUF201`) ([#&#8203;26772](https://redirect.github.com/astral-sh/ruff/pull/26772)) ##### Bug fixes - \[`flake8-pyi`] Fix false positive in `__all__` (`PYI053`) ([#&#8203;26872](https://redirect.github.com/astral-sh/ruff/pull/26872)) ##### Rule changes - \[`pylint`] Ignore mutable type updates in `redefined-loop-name` (`PLW2901`) ([#&#8203;25733](https://redirect.github.com/astral-sh/ruff/pull/25733)) ##### Performance - Avoid redundant lexer token bookkeeping ([#&#8203;26765](https://redirect.github.com/astral-sh/ruff/pull/26765)) - Avoid redundant pending-indentation writes ([#&#8203;26774](https://redirect.github.com/astral-sh/ruff/pull/26774)) - Avoid unnecessary identifier lookahead ([#&#8203;26525](https://redirect.github.com/astral-sh/ruff/pull/26525)) - Reuse parser scratch buffers ([#&#8203;26798](https://redirect.github.com/astral-sh/ruff/pull/26798)) ##### Documentation - Document argfile support ([#&#8203;26803](https://redirect.github.com/astral-sh/ruff/pull/26803)) - \[`flake8-datetimez`] Clarify naming guidance for `datetime.today` (`DTZ002`) ([#&#8203;26658](https://redirect.github.com/astral-sh/ruff/pull/26658)) - \[`pycodestyle`] Document `E731` fix safety ([#&#8203;26847](https://redirect.github.com/astral-sh/ruff/pull/26847)) - \[`ruff`] Clarify intentional async contexts for `unused-async` (`RUF029`) ([#&#8203;26641](https://redirect.github.com/astral-sh/ruff/pull/26641)) ##### Contributors - [@&#8203;dwego](https://redirect.github.com/dwego) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;Joosboy](https://redirect.github.com/Joosboy) - [@&#8203;KaufmanDmitriy](https://redirect.github.com/KaufmanDmitriy) - [@&#8203;PeterJCLaw](https://redirect.github.com/PeterJCLaw) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;charliermarsh](https://redirect.github.com/charliermarsh) #### Install ruff 0.15.22 ##### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.sh | sh ``` ##### Install prebuilt binaries via powershell script ```sh powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-installer.ps1 | iex" ``` #### Download ruff 0.15.22 | File | Platform | Checksum | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | [ruff-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-apple-darwin.tar.gz.sha256) | | [ruff-x86\_64-apple-darwin.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-apple-darwin.tar.gz.sha256) | | [ruff-aarch64-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-pc-windows-msvc.zip.sha256) | | [ruff-i686-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-pc-windows-msvc.zip) | x86 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-pc-windows-msvc.zip.sha256) | | [ruff-x86\_64-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-pc-windows-msvc.zip.sha256) | | [ruff-aarch64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [ruff-i686-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-unknown-linux-gnu.tar.gz) | x86 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-unknown-linux-gnu.tar.gz.sha256) | | [ruff-powerpc64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-powerpc64-unknown-linux-gnu.tar.gz) | PPC64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-powerpc64-unknown-linux-gnu.tar.gz.sha256) | | [ruff-powerpc64le-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-powerpc64le-unknown-linux-gnu.tar.gz) | PPC64LE Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-powerpc64le-unknown-linux-gnu.tar.gz.sha256) | | [ruff-riscv64gc-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-riscv64gc-unknown-linux-gnu.tar.gz) | RISCV Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-riscv64gc-unknown-linux-gnu.tar.gz.sha256) | | [ruff-s390x-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-s390x-unknown-linux-gnu.tar.gz) | S390x Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-s390x-unknown-linux-gnu.tar.gz.sha256) | | [ruff-x86\_64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-unknown-linux-gnu.tar.gz.sha256) | | [ruff-armv7-unknown-linux-gnueabihf.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-armv7-unknown-linux-gnueabihf.tar.gz) | ARMv7 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-armv7-unknown-linux-gnueabihf.tar.gz.sha256) | | [ruff-aarch64-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-aarch64-unknown-linux-musl.tar.gz.sha256) | | [ruff-i686-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-unknown-linux-musl.tar.gz) | x86 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-i686-unknown-linux-musl.tar.gz.sha256) | | [ruff-x86\_64-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-x86_64-unknown-linux-musl.tar.gz.sha256) | | [ruff-arm-unknown-linux-musleabihf.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-arm-unknown-linux-musleabihf.tar.gz) | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-arm-unknown-linux-musleabihf.tar.gz.sha256) | | [ruff-armv7-unknown-linux-musleabihf.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-armv7-unknown-linux-musleabihf.tar.gz) | ARMv7 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.15.22/ruff-armv7-unknown-linux-musleabihf.tar.gz.sha256) | #### Verifying GitHub Artifact Attestations The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the [GitHub CLI](https://cli.github.com/manual/gh_attestation_verify): ```sh gh attestation verify <file-path of downloaded artifact> --repo astral-sh/ruff ``` You can also download the attestation from [GitHub](https://redirect.github.com/astral-sh/ruff/attestations) and verify against that directly: ```sh gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation> ``` ### [`v0.15.21`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01521) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.20...0.15.21) Released on 2026-07-09. ##### Preview features - Add `--add-ignore` for adding `ruff:ignore` comments ([#&#8203;26346](https://redirect.github.com/astral-sh/ruff/pull/26346)) - \[`flake8-comprehensions`] Drop `C409` tuple comprehension preview behavior ([#&#8203;25707](https://redirect.github.com/astral-sh/ruff/pull/25707)) - Avoid whitespace normalization when formatting comments ([#&#8203;26455](https://redirect.github.com/astral-sh/ruff/pull/26455)) - \[`pyupgrade`] Lint and fix use of deprecated `abc` decorators (`UP051`) ([#&#8203;26417](https://redirect.github.com/astral-sh/ruff/pull/26417)) ##### Bug fixes - Refine non-empty f-string detection ([#&#8203;26526](https://redirect.github.com/astral-sh/ruff/pull/26526)) - Detect syntax errors in individual notebook cells ([#&#8203;26419](https://redirect.github.com/astral-sh/ruff/pull/26419)) - \[`flake8-implicit-str-concat`] Fix `ISC003` autofix incorrectly stripping `+` from comments ([#&#8203;26554](https://redirect.github.com/astral-sh/ruff/pull/26554)) ##### Rule changes - \[`flake8-executable`] Mark `EXE004` fix as unsafe ([#&#8203;26033](https://redirect.github.com/astral-sh/ruff/pull/26033)) - \[`flake8-pyi`] Mark `PYI061` fixes as unsafe in Python files ([#&#8203;26533](https://redirect.github.com/astral-sh/ruff/pull/26533)) - \[`pydocstyle`] Skip `overload-with-docstring` in stub files (`D418`) ([#&#8203;26318](https://redirect.github.com/astral-sh/ruff/pull/26318)) ##### Performance - Avoid per-token source index visitor calls ([#&#8203;26506](https://redirect.github.com/astral-sh/ruff/pull/26506)) - Cache parenthesized expression boundaries in the formatter ([#&#8203;26344](https://redirect.github.com/astral-sh/ruff/pull/26344)) - Improve performance of rendering edits in preview mode ([#&#8203;26565](https://redirect.github.com/astral-sh/ruff/pull/26565)) - Inline `fits_element` in formatter ([#&#8203;26429](https://redirect.github.com/astral-sh/ruff/pull/26429)) - Inline formatter printing hot paths ([#&#8203;26504](https://redirect.github.com/astral-sh/ruff/pull/26504)) - Lazily create builtin bindings ([#&#8203;26510](https://redirect.github.com/astral-sh/ruff/pull/26510)) - Skip empty trivia scans in the source indexer ([#&#8203;26507](https://redirect.github.com/astral-sh/ruff/pull/26507)) - Use ICF for macOS release builds ([#&#8203;25780](https://redirect.github.com/astral-sh/ruff/pull/25780)) ##### Formatter - Add `--extend-exclude` to `ruff format` ([#&#8203;26372](https://redirect.github.com/astral-sh/ruff/pull/26372)) ##### Documentation - Add "How does Ruff's import sorting compare to isort?" link to README ([#&#8203;26530](https://redirect.github.com/astral-sh/ruff/pull/26530)) - Fix Mozilla Firefox repository link in README ([#&#8203;26537](https://redirect.github.com/astral-sh/ruff/pull/26537)) - \[`flake8-bandit`] Fix misleading docstring for `mako-templates` (`S702`) ([#&#8203;26432](https://redirect.github.com/astral-sh/ruff/pull/26432)) - \[`ruff`] Fix non-triggering example for `if-key-in-dict-del` (`RUF051`) ([#&#8203;26433](https://redirect.github.com/astral-sh/ruff/pull/26433)) ##### Contributors - [@&#8203;EkriirkE](https://redirect.github.com/EkriirkE) - [@&#8203;tingerrr](https://redirect.github.com/tingerrr) - [@&#8203;s-rigaud](https://redirect.github.com/s-rigaud) - [@&#8203;nikolauspschuetz](https://redirect.github.com/nikolauspschuetz) - [@&#8203;Avasam](https://redirect.github.com/Avasam) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;omar-y-abdi](https://redirect.github.com/omar-y-abdi) - [@&#8203;AlexWaygood](https://redirect.github.com/AlexWaygood) - [@&#8203;sylvestre](https://redirect.github.com/sylvestre) - [@&#8203;shaanmajid](https://redirect.github.com/shaanmajid) - [@&#8203;lerebear](https://redirect.github.com/lerebear) - [@&#8203;baltasarblanco](https://redirect.github.com/baltasarblanco) - [@&#8203;Sanjays2402](https://redirect.github.com/Sanjays2402) - [@&#8203;ZedThree](https://redirect.github.com/ZedThree) - [@&#8203;servusdei2018](https://redirect.github.com/servusdei2018) - [@&#8203;charliermarsh](https://redirect.github.com/charliermarsh) - [@&#8203;jesco-absolute](https://redirect.github.com/jesco-absolut) - [@&#8203;velikodniy](https://redirect.github.com/velikodniy) - [@&#8203;zaniebot](https://redirect.github.com/zaniebot) - [@&#8203;epage](https://redirect.github.com/epage) ### [`v0.15.20`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01520) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.19...0.15.20) Released on 2026-06-25. ##### Preview features - Allow human-readable names in rule selectors ([#&#8203;25887](https://redirect.github.com/astral-sh/ruff/pull/25887)) - Emit a warning instead of an error for unknown rule selectors ([#&#8203;26113](https://redirect.github.com/astral-sh/ruff/pull/26113)) - Match `noqa` shebang handling in `ruff:ignore` comments ([#&#8203;26286](https://redirect.github.com/astral-sh/ruff/pull/26286)) - \[`ruff`] Remove `pytest-fixture-autouse` (`RUF076`) ([#&#8203;26240](https://redirect.github.com/astral-sh/ruff/pull/26240), [#&#8203;26371](https://redirect.github.com/astral-sh/ruff/pull/26371)) ##### Documentation - Add versioning sections to custom crate READMEs ([#&#8203;26317](https://redirect.github.com/astral-sh/ruff/pull/26317)) - Update `ruff_python_parser` README for crates.io ([#&#8203;26315](https://redirect.github.com/astral-sh/ruff/pull/26315)) - \[`perflint`] Clarify that `PERF402` applies to any iterable ([#&#8203;26242](https://redirect.github.com/astral-sh/ruff/pull/26242)) ##### Contributors - [@&#8203;dhruvmanila](https://redirect.github.com/dhruvmanila) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;trilamsr](https://redirect.github.com/trilamsr) ### [`v0.15.19`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01519) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.18...0.15.19) Released on 2026-06-23. ##### Preview features - Support human-readable names when hovering suppression comments and in code actions ([#&#8203;26114](https://redirect.github.com/astral-sh/ruff/pull/26114)) ##### Bug fixes - Fall back to default settings when editor-only settings are invalid ([#&#8203;26244](https://redirect.github.com/astral-sh/ruff/pull/26244)) - Fix panic when inserting text at a notebook cell boundary ([#&#8203;26111](https://redirect.github.com/astral-sh/ruff/pull/26111)) ##### Rule changes - \[`pylint`] Update fix suggestions for `__floor__`, `__trunc__`, `__length_hint__`, and `__matmul__` variants (`PLC2801`) ([#&#8203;26239](https://redirect.github.com/astral-sh/ruff/pull/26239)) ##### Performance - Avoid allocating when parsing single string literals ([#&#8203;26200](https://redirect.github.com/astral-sh/ruff/pull/26200)) - Avoid reallocating singleton call arguments ([#&#8203;26223](https://redirect.github.com/astral-sh/ruff/pull/26223)) - Lazily create source files for lint diagnostics ([#&#8203;26226](https://redirect.github.com/astral-sh/ruff/pull/26226)) - Optimize formatter text width and indentation ([#&#8203;26236](https://redirect.github.com/astral-sh/ruff/pull/26236)) - Reserve capacity for builtin bindings ([#&#8203;26229](https://redirect.github.com/astral-sh/ruff/pull/26229)) - Skip repeated-key checks for singleton dictionaries ([#&#8203;26228](https://redirect.github.com/astral-sh/ruff/pull/26228)) - Use ArrayVec for qualified name segments ([#&#8203;26224](https://redirect.github.com/astral-sh/ruff/pull/26224)) ##### Documentation - \[`flake8-pyi`] Note that `PYI051` is an opinionated stylistic rule ([#&#8203;26179](https://redirect.github.com/astral-sh/ruff/pull/26179)) - \[`pyupgrade`] Clarify `UP029` as a Python 2 compatibility rule ([#&#8203;26243](https://redirect.github.com/astral-sh/ruff/pull/26243)) ##### Other changes - Publish Ruff crates to crates.io ([#&#8203;26271](https://redirect.github.com/astral-sh/ruff/pull/26271)) ##### Contributors - [@&#8203;MakenRosa](https://redirect.github.com/MakenRosa) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;trilamsr](https://redirect.github.com/trilamsr) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;sanjibani](https://redirect.github.com/sanjibani) - [@&#8203;charliermarsh](https://redirect.github.com/charliermarsh) ### [`v0.15.18`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01518) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.17...0.15.18) Released on 2026-06-18. ##### Preview features - Handle nested `ruff:ignore` comments ([#&#8203;25791](https://redirect.github.com/astral-sh/ruff/pull/25791)) - Stop displaying severity in output ([#&#8203;26050](https://redirect.github.com/astral-sh/ruff/pull/26050)) - Use human-readable names in CLI output ([#&#8203;25937](https://redirect.github.com/astral-sh/ruff/pull/25937)) - Use human-readable names in LSP and playground diagnostics ([#&#8203;26058](https://redirect.github.com/astral-sh/ruff/pull/26058)) - \[`pydocstyle`] Prevent property docstrings starting with verbs (`D421`) ([#&#8203;23775](https://redirect.github.com/astral-sh/ruff/pull/23775)) - \[`flake8-pyi`] Extend `PYI033` to Python files ([#&#8203;26129](https://redirect.github.com/astral-sh/ruff/pull/26129)) ##### Bug fixes - Detect equivalent numeric mapping keys ([#&#8203;26009](https://redirect.github.com/astral-sh/ruff/pull/26009)) - Detect mapping keys equivalent to booleans ([#&#8203;25982](https://redirect.github.com/astral-sh/ruff/pull/25982)) - Detect repeated signed and complex dictionary keys ([#&#8203;26007](https://redirect.github.com/astral-sh/ruff/pull/26007)) ##### Rule changes - \[`flake8-pyi`] Rename `PYI033` to `legacy-type-comment` ([#&#8203;26131](https://redirect.github.com/astral-sh/ruff/pull/26131)) ##### Performance - Use `ThinVec` for call keywords ([#&#8203;25999](https://redirect.github.com/astral-sh/ruff/pull/25999)) - Inline parser recovery context checks ([#&#8203;26038](https://redirect.github.com/astral-sh/ruff/pull/26038)) - Match parser keywords as bytes ([#&#8203;26037](https://redirect.github.com/astral-sh/ruff/pull/26037)) - Move value parsing out of lexing ([#&#8203;25360](https://redirect.github.com/astral-sh/ruff/pull/25360)) ##### Server - Render subdiagnostics and secondary annotations as related information ([#&#8203;26011](https://redirect.github.com/astral-sh/ruff/pull/26011)) ##### Documentation - Update fix availability for always-fixable rules ([#&#8203;26091](https://redirect.github.com/astral-sh/ruff/pull/26091)) - \[`flake8-tidy-imports`] Add fix safety section (`TID252`) ([#&#8203;17491](https://redirect.github.com/astral-sh/ruff/pull/17491)) ##### Parser - Reject `__debug__` lambda parameters ([#&#8203;26022](https://redirect.github.com/astral-sh/ruff/pull/26022)) - Reject `_` as a match-pattern target ([#&#8203;25977](https://redirect.github.com/astral-sh/ruff/pull/25977)) - Reject multiple starred names in sequence patterns ([#&#8203;25976](https://redirect.github.com/astral-sh/ruff/pull/25976)) - Reject parenthesized star imports ([#&#8203;26021](https://redirect.github.com/astral-sh/ruff/pull/26021)) - Reject starred comprehension targets ([#&#8203;26023](https://redirect.github.com/astral-sh/ruff/pull/26023)) - Reject unparenthesized generator expressions in class bases ([#&#8203;25978](https://redirect.github.com/astral-sh/ruff/pull/25978)) - Reject `yield` expressions after commas ([#&#8203;26024](https://redirect.github.com/astral-sh/ruff/pull/26024)) - Validate function type parameter default order ([#&#8203;25981](https://redirect.github.com/astral-sh/ruff/pull/25981)) ##### Playground - Make diagnostic links clickable ([#&#8203;26104](https://redirect.github.com/astral-sh/ruff/pull/26104)) - Use diagnostic tags ([#&#8203;26105](https://redirect.github.com/astral-sh/ruff/pull/26105)) ##### Contributors - [@&#8203;AlexWaygood](https://redirect.github.com/AlexWaygood) - [@&#8203;ntBre](https://redirect.github.com/ntBre) - [@&#8203;gtkacz](https://redirect.github.com/gtkacz) - [@&#8203;MichaReiser](https://redirect.github.com/MichaReiser) - [@&#8203;charliermarsh](https://redirect.github.com/charliermarsh) - [@&#8203;Kalmaegi](https://redirect.github.com/Kalmaegi) ### [`v0.15.17`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#01517) [Compare Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.16...0.15.17) Released on 2026-06-11. ##### Preview features - Allow human-readable names in suppression comments ([#&#8203;25614](https://redirect.github.com/astral-sh/ruff/pull/25614)) - Fix handling of `ignore` comments within a `disable`/`enable` pair ([#&#8203;25845](https://redirect.github.com/astral-sh/ruff/pull/25845)) - Prioritize human-readable names in CLI output ([#&#8203;25869](https://redirect.github.com/astral-sh/ruff/pull/25869)) - Respect diagnostic start and parent ranges and trailing comments in `ruff:ignore` suppressions ([#&#8203;25673](https://redirect.github.com/astral-sh/ruff/pull/25673)) - \[`flake8-async`] Add `trio.as_safe_channel` to safe decorators (`ASYNC119`) ([#&#8203;25775](https://redirect.github.com/astral-sh/ruff/pull/25775)) - \[`flake8-pytest-style`] Also check `pytest_asyncio` fixtures ([#&#8203;25375](https://redirect.github.com/astral-sh/ruff/pull/25375)) - \[`ruff`] Ban `pytest` autouse fixtures (`RUF076`) ([#&#8203;25477](https://redirect.github.com/astral-sh/ruff/pull/25477)) - \[`pyupgrade`] Add `from __future__ import annotations` automatically (`UP007`, `UP045`) ([#&#8203;23259](https://redirect.github.com/astral-sh/ruff/pull/23259)) ##### Bug fixes - Fix diagnostic when `ruff:enable` or `ruff:disable` appears where `ruff:ignore` is expected ([#&#8203;25700](https://redirect.github.com/astral-sh/ruff/pull/25700)) - \[`pyupgrade`] Preserve leading empty literals to avoid syntax errors (`UP032`) ([#&#8203;25491](https://redirect.github.com/astral-sh/ruff/pull/25491)) ##### Rule changes - \[`flake8-pytest-style`] Clarify diagnostic message for single parameters (`PT007`) ([#&#8203;25592](https://redirect.github.com/astral-sh/ruff/pull/25592)) - \[`numpy`] Drop autofix for `np.in1d` (`NPY201`) ([#&#8203;25612](https://redirect.github.com/astral-sh/ruff/pull/25612)) - \[`pylint`] Exempt Python version comparisons (`PLR2004`) ([#&#8203;25743](https://redirect.github.com/astral-sh/ruff/pull/25743)) ##### Performance - Reserve AST `Vec`s w > ✂ **Note** > > PR body was truncated to here. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-13 19:47:14 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Glitchy-Sheep/boosty-downloader#98
No description provided.