Update Python dependencies #474

Open
robbertbos wants to merge 1 commit from renovate/python into main
Owner

This PR contains the following updates:

Package Change Age Confidence Type Update
asyncpg >=0.31.0 → >=0.32.0 age confidence project.dependencies minor
authlib >=1.8.0 → >=1.9.1 age confidence project.dependencies minor
cachetools (changelog) >=7.2.0,<7.3 → >=7.2.4,<7.3 age confidence project.dependencies patch
cryptography (changelog) >=50.0.1 → >=50.0.2 age confidence project.dependencies patch
fastapi (changelog) >=0.141.1 → >=0.159.1 age confidence project.dependencies minor
httptools >=0.8.0 → >=0.9.0 age confidence project.dependencies minor
pip (changelog) >=26.2.1 → >=26.2.2 age confidence dependency-groups patch
pydantic (changelog) >=2.13.5 → >=2.14.1 age confidence project.dependencies minor
pydantic-settings (changelog) >=2.15.0 → >=2.16.1 age confidence project.dependencies minor
python (source) >=3.14.7 → >=3.15.1 age confidence requires-python minor
ruff (source, changelog) >=0.16.9 → >=0.17.1 age confidence dependency-groups minor
sqlalchemy (changelog) >=2.1.1 → >=2.1.6 age confidence project.dependencies patch
ty (changelog) >=0.0.84 → >=0.0.90 age confidence dependency-groups patch
uvloop >=0.22.1 → >=0.23.0 age confidence project.dependencies minor

Release Notes

MagicStack/asyncpg (asyncpg)

v0.32.0

Compare Source

Improvements

Fixes

  • Clean up connections rejected by target_session_attrs immediately so an
    unresponsive rejected host cannot delay the selected connection, and cleanup
    tasks cannot outlive the event loop. Rejected connections are aborted without
    waiting for a graceful disconnect; servers may log "unexpected EOF on client
    connection" if the Terminate message is not delivered before the transport
    closes.

  • Fix a connection pool deadlock when releasing a connection after a protocol
    abort (#​1324)
    (by @​pchaseh in 4a83cc2)

  • Honor Connection.close(timeout=...) while waiting for a pending
    cancellation (#​1361)
    (by @​gyanu2507 in c06bcb4)

  • Prevent stuck cancellation from blocking connection teardown or pool release
    by bounding cancellation with the command or release timeout (#​1370)
    (by @​elprans in 4cf0220)

  • Preserve the server error when the connection closes mid-operation (#​1369)
    (by @​RitiGrover in 6c8f1a7)

  • Fix COPY cleanup when a records generator raises, preserving the original
    exception and avoiding protocol desynchronization and stalled rollback (#​1358)
    (by @​CodingCossack in fdc6bc8)

  • Reparse unnamed statements before cursor binding when the statement cache
    is disabled (#​1364)
    (by @​elprans in 302ba49)

  • Allow cursors in transactions started outside Connection.transaction(),
    such as with an explicit BEGIN (#​1350)
    (by @​aryansk in 25aaaf5)

  • Remove the query logger when the query_logger() block raises (#​1373)
    (by @​kratos0718 in 6a7fbd3)

  • Fix a segfault in Record.get() with an invalid number of positional
    arguments (#​1333)
    (by @​apoorvdarshan in 40a3832)

  • Align SSL startup retries with libpq and improve SSL rejection diagnostics
    (#​1366). Retry alternative transports only before authentication succeeds.
    Direct TLS now requires sslmode=require, verify-ca, or verify-full,
    or an explicit SSLContext.
    (by @​elprans in 78752c9)

  • Preserve password errors during SSL fallback when the fallback fails with
    a less specific authorization error (#​1331)
    (by @​Mauricio0129 in 2d97947)

  • Handle cleartext password authentication when no password is supplied
    without raising an AttributeError (#​1351)
    (by @​aryansk in 6be5915)

  • Set the postgresql ALPN protocol on SSL contexts created by asyncpg so
    direct TLS connections work with PostgreSQL 17 and later (#​1372).
    User-provided contexts must set this protocol for direct TLS connections.
    (by @​DurandA in b21325d)

  • Link explicitly against libm on non-Windows platforms to fix undefined
    math symbol errors when loading the extensions (#​1305)
    (by @​veeceey in db8ecc2)

  • Fix builds on FreeBSD 15 by linking against libstdthreads (#​1368)
    (by @​elprans in 87bcaf9)

Other

authlib/authlib (authlib)

v1.9.1

Compare Source

Changelog: https://docs.authlib.org/en/stable/upgrades/changelog.html#changelog-1-9-1

What's Changed

Full Changelog: https://github.com/authlib/authlib/compare/v1.9.0...v1.9.1

v1.9.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/authlib/authlib/compare/v1.8.0...v1.9.0

tkem/cachetools (cachetools)

v7.2.4

Compare Source

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

  • Restore autospec calls to @cachedmethod decorated methods.

  • Improve branch coverage of unit tests.

  • Minor type stub improvements.

v7.2.3

Compare Source

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

  • Fix @cached decorator stacking behavior.

  • Minor type stub improvements.

v7.2.2

Compare Source

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

  • Fix @cachedmethod for subclasses that override a decorated
    method and call the base class implementation via super().

  • Restore class access to instance methods decorated with
    @cachedmethod.

  • Improve TTLCache robustness when calculating expiration time
    fails.

  • Various unit test improvements.

v7.2.1

Compare Source

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

  • Improve error handling for RRCache.popitem() when the cache is
    empty.

  • Minor style and documentation improvements.

  • Update CI environment.

pyca/cryptography (cryptography)

v50.0.2

Compare Source

fastapi/fastapi (fastapi)

v0.159.1

Compare Source

Features

v0.159.0

Compare Source

Features

v0.158.2

Compare Source

Features

v0.158.1

Compare Source

Fixes

v0.158.0

Compare Source

Features

v0.157.0

Compare Source

Features
  • ✨ Add support for combining query, header, and cookie parameter models. PR #​16573 by @​tiangolo.
Docs
Internal

v0.156.8

Compare Source

Fixes

v0.156.7

Compare Source

Fixes

v0.156.6

Compare Source

Fixes
  • 🐛 Respect model alias settings for query, header, and cookie parameters. PR #​16562 by @​tiangolo.

v0.156.5

Compare Source

Fixes

v0.156.4

Compare Source

Fixes

v0.156.3

Compare Source

Fixes

v0.156.2

Compare Source

Fixes

v0.156.1

Compare Source

Fixes

v0.156.0

Compare Source

Fixes

v0.155.0

Compare Source

The deprecated **extra keyword arguments have been removed from Path, Query, Header, Cookie, Body, Form, and File. Unknown keyword arguments now raise TypeError. For additional JSON Schema properties, replace, for example, Query(custom="value") with Query(json_schema_extra={"custom": "value"}).

Breaking Changes

v0.154.0

Compare Source

Features

v0.153.0

Compare Source

Unions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become False, and unselected files are treated as missing. JSON request bodies are unchanged.

Fixes

v0.152.0

Compare Source

Validation errors for header parameter models now report the HTTP header name, such as int-val, instead of the Python field name, int_val. Explicit aliases, Header(convert_underscores=False), and Pydantic models with loc_by_alias=False keep their existing behavior.

Fixes

v0.151.0

Compare Source

JSON request bodies now distinguish an explicit null from an omitted value. For individual Body parameters, null is validated as None: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used null to request a default should omit the value instead.

When a JSON object is expected because of Body(embed=True) or multiple body parameters, sending null as the entire body now returns a validation error.

Breaking Changes

v0.150.0

Compare Source

When no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted.

Breaking Changes

v0.149.0

Compare Source

Browsers submit empty text inputs as empty strings (""). FastAPI now treats empty scalar form values as missing in form models, matching individual Form parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in model_dump(exclude_unset=True).

Empty strings inside lists are preserved. Omitted boolean form fields still become False. JSON requests and direct Pydantic validation are unchanged.

Breaking Changes

v0.148.0

Compare Source

Defaults for omitted Query, Header, Cookie, and Form parameters and model fields are no longer treated as user input. Defaults are not validated unless validate_default=True is enabled. If you rely on validators running for omitted values, enable default validation with Field(validate_default=True) for model fields or, for example, Query(validate_default=True) for individual parameters. Body(validate_default=True) is now honored too.

For parameter models, applying a default no longer marks a field as explicitly set, so model_dump(exclude_unset=True) excludes it. Default factories run once, and validation errors no longer include injected defaults in input.

Omitted boolean form fields still become False and count as explicitly set.

Breaking Changes

v0.147.0

Compare Source

Omitted bool and bool | None form fields are now interpreted as False, matching unchecked HTML checkboxes. This applies to individual Form parameters and form models, including required fields and fields with defaults of True or None. The inferred value is considered explicitly set, including in model_dump(exclude_unset=True).

JSON requests and direct Pydantic validation are unchanged. See Boolean Form Fields.

Breaking Changes
Internal

v0.146.0

Compare Source

The root_path parameter in FastAPI() is deprecated. Configure the server with fastapi run --root-path /api/v1 instead.

Breaking Changes

v0.145.0

Compare Source

Breaking Changes
Docs

v0.144.0

Compare Source

Features

v0.143.5

Compare Source

Fixes
  • 🐛 Fix handling of empty value for byte file list parameter. PR #​9383 by @​Viicos.

v0.143.4

Compare Source

Upgrades

v0.143.3

Compare Source

Fixes
Docs

v0.143.2

Compare Source

Fixes
Translations
Internal

v0.143.1

Compare Source

Fixes

v0.143.0

Compare Source

Automatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from OTEL_* environment variables, set FASTAPI_OTEL_AUTO_CONFIGURE=true or use FastAPI(telemetry={"auto_configure": True}) to retain the previous behavior.

Applications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you.

Breaking Changes

v0.142.4

Compare Source

Fixes

v0.142.3

Compare Source

Fixes
Docs
Translations
Internal

v0.142.2

Compare Source

Fixes

v0.142.1

Compare Source

Fixes

v0.142.0

Compare Source

Features
Refactors
Docs
Translations
Internal
MagicStack/httptools (httptools)

v0.9.0

Compare Source

pypa/pip (pip)

v26.2.2

Compare Source

pydantic/pydantic (pydantic)

v2.14.1

Compare Source

GitHub release

The code released in v2.5.0 is functionally identical to that of v2.5.0b1.

What's Changed
Packaging
  • Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog here
  • Update to pyright==1.1.335 by @​Viicos in #​8075
New Features
Changes
  • Significant Change: replace ultra_strict with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by @​davidhewitt in pydantic/pydantic-core#867
  • Add support for instance method reassignment when extra='allow' by @​sydney-runkle in #​7683
  • Support JSON schema generation for Enum types with no cases by @​sydney-runkle in #​7927
  • Warn if a class inherits from Generic before BaseModel by @​alexmojaki in #​7891
Performance
Fixes
New Contributors
pydantic
pydantic-core

v2.14.0

Compare Source

GitHub release

What's Changed

The highlights of the v2.14 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 drops support for Python 3.9 and adds support for Python 3.15.

New Features
Changes
Fixes
New Contributors
pydantic/pydantic-settings (pydantic-settings)

v2.16.1

Compare Source

Highlights

This patch release fixes two CLI regressions introduced in 2.16.0.

Bug fixes

CLI

  • Fixed-length tuple positionals such as CliPositionalArg[tuple[int, int]] and NamedTuples are single-valued again (#​1069). Since 2.16.0 they were treated as variadic, so a CLI either refused to start with a SettingsError or put the wrong argument into the tuple. Variable-length tuples (tuple[int, ...] and bare Tuple) are still variadic.
  • A field typed as an alias of a list of dicts, e.g. type ListOfDict = list[dict[str, int]], accepts a JSON list again (#​1049). Since 2.16.0, --xx '[{"a":1},{"b":2}]' was merged into the single dict {"a": 1, "b": 2} and failed validation.
All changes (including dependency bumps and internal maintenance)

What's Changed

Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.16.0...v2.16.1

v2.16.0

Compare Source

Highlights

Breaking changes and behavior changes
  • Python 3.10 is no longer supported (#​1003). pydantic-settings now requires Python 3.11+, since 3.10 reaches end of life this month. The tomli fallback is gone in favor of stdlib tomllib; the toml extra is kept as an empty extra so pip install pydantic-settings[toml] keeps working.
  • python-dotenv>=1.2.2 is now required (#​971) to pick up the fix for CVE-2026-28684.
  • Aliases are ignored in every source when validate_by_alias=False (#​1033). Env vars, secrets, CLI flags and defaults now use only field names, matching pydantic. An env var named after the alias is now ignored instead of raising extra_forbidden, and the CLI exposes --apple rather than --pomo.
  • validation_alias takes precedence over alias (#​1038). When the two differ, values from JSON/YAML/TOML files and the CLI were silently ignored; they now load. CLI help lists the validation_alias flag first, and CliApp.serialize emits it.
  • CLI case-insensitivity only lowercases registered options (#​1036). With case_sensitive=False, args after -- and those captured by CliUnknownArgs keep their case (-Xmx4G no longer becomes -xmx4g). Unrecognized options are now reported as typed (--NOPE instead of --nope).
  • JSON and YAML config files are read as UTF-8 by default (#​955) instead of the locale encoding, completing the secrets-file fix from 2.15.0. json_file_encoding/yaml_file_encoding still override it.
  • Discriminated union defaults are partially updated again (#​997). This reverts the 2.15.0 regression with nested_model_default_partial_update=True: the default is only dropped when the incoming value selects a different union member.
New features
  • Python 3.15 and pydantic 2.14 support (#​1026, #​1029, #​1022). pydantic 2.14 broke CliApp.run and validate_by_alias=False handling; both are fixed.
  • Cached settings instances via Settings.settings_cached() and Settings.settings_clear_cache() (#​952). These give you a process-local singleton per settings class without hand-rolling lru_cache wrappers. Calling the class directly still builds a fresh instance.
  • AWS Systems Manager Parameter Store source — AWSSystemsManagerSettingsSource (#​941). It recursively reads every parameter under an ssm_path, with / mapping onto nested models. Install it with the new aws-systems-manager extra.
  • env_file_depth (#​940) lets a relative env_file be found in parent directories, mirroring pyproject_toml_depth. This is useful when scripts run from a subdirectory of a monorepo. It defaults to 0, which keeps the current behavior.
  • CliVariadicArg for named variadic options (#​949, #​958). It accepts --param a b c in addition to repeated --param a --param b. Required fields need at least one value.
Bug fixes

CLI

  • CliApp.serialize output now round-trips through CliApp.run for enums, tuples, dates and Decimals (#​988), explicit None values (#​981), empty containers (#​1008), CliVariadicArg values (#​976) and populated CliUnknownArgs fields, which previously raised IndexError (#​992).
  • Empty JSON arrays (--items []) now give an empty list instead of [''] (#​994).
  • Tuples, frozenset, MutableSequence and other collection subtypes are now treated as repeatable/variadic options (#​972), and so are named collection type aliases such as TypeAliasType('Addrs', list[IPvAnyAddress]) (#​1032).
  • cli_exit_on_error=False is now honored in CliSubCommand parsers, which raise SettingsError instead of exiting (#​977).
  • CliSubCommand aliases keep their case with case_sensitive=False (#​989).
  • Each CliUnknownArgs field now receives only its own subcommand's leftover args (#​1004).
  • CliApp.format_help no longer crashes when cli_prefix is set in model_config (#​945).

Type aliases and parsing

  • Named union type aliases (TypeAliasType('V', list[int] | str)) now decode like their inline equivalents in env and dotenv sources, including under Optional, Annotated and custom validation aliases (#​1006, #​1030, #​1041).
  • Resolving a named Annotated type alias no longer mutates shared FieldInfo metadata, which made validators run twice on subclasses or after model_rebuild() (#​979).
  • A bare single-segment AliasPath('SOME_KEY') no longer tries to JSON-decode plain string values (#​980).
  • collections.abc.Set/MutableSet/typing.AbstractSet fields now JSON-decode env values (#​973).
  • A bare typing.Dict field with env_nested_delimiter no longer raises IndexError, which was a regression in 2.13.0 (#​1009).
  • Case-insensitive matching now works for nested pydantic dataclasses (#​1010).

Dotenv, secrets and config files

  • With extra='allow', a non-lowercase env_prefix is now stripped from dotenv extras (#​959, #​968).
  • secrets_case_sensitive=True is now honored on Windows (#​1001).
  • An empty JSON config file is treated as an empty mapping instead of crashing (#​947), matching YAML and TOML.
  • TOML table headers: ~ paths are now expanded when checking that the file exists (#​1034), and an explicit toml_table_header=() now overrides the model config to read the file root (#​1027).

Cloud sources

  • Azure Key Vault and GCP Secret Manager now honor env_parse_none_str (#​1019, #​1040).
  • Azure Key Vault: dash_to_underscore=True now works for nested model fields (#​1025).
  • NestedSecretsSettingsSource now validates its specific constructor arguments (#​975).
  • DotenvFiltering is exported from pydantic_settings.sources.types (#​944).
Documentation
  • Document that runtime validation arguments (strict, extra, context) passed to model_validate() are not applied to BaseSettings, and give a workaround (#​1017).
  • Explain why extra='forbid' doesn't reject misspelled top-level env vars (#​986).
  • Clarify alias plus nested model env lookup with populate_by_name (#​933), and add a nested model example for env_prefix_target (#​953).
  • Fix assorted typos (#​942, #​964).
All changes (including dependency bumps and internal maintenance)

What's Changed

New Contributors

Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0

python/cpython (python)

v3.15.1

Compare Source

v3.15.0

Compare Source

v3.14.9

Compare Source

v3.14.8

Compare Source

astral-sh/ruff (ruff)

v0.17.1

Compare Source

Released on 2026-10-15.

Preview features
  • [pycodestyle] Don't treat None, True, or False as keywords (E271-E274) (#​29322)
Bug fixes
  • Fix dedent with multiple leading comments (#​29382)
  • [flake8-pyi] Detect legacy positional-only parameters in __new__ methods (PYI063) (#​28502)
  • [flake8-pyi] Fix false positives on quoted annotations (PYI036) (#​29274)
  • [perflint] Avoid invalid comprehension suggestions (PERF401, PERF403) (#​29366)
Rule changes
  • Treat more collections and weakref containers as mutable (#​29213)
Documentation
  • [flake8-import-conventions] Update default and example aliases (#​29333)
Contributors

v0.17.0

Compare Source

Released on 2026-10-09.

The executables in our macOS and Windows release archives and ruff wheels are now code-signed.
macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows
executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables
verification of the release publisher and binary integrity, supports publisher-based allowlisting,
and should reduce security warnings and antivirus false positives.

Breaking changes
  • Update the default and latest Python versions for 3.15 (#​28792)

    Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through
    target-version or
    requires-python. When
    checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15
    instead of 3.14.

  • Update the default rule set (#​28786)

    Several of the flake8-datetimez rules
    (DTZ001,
    DTZ005,
    DTZ006,
    DTZ007,
    DTZ011,
    DTZ012, and
    DTZ901) are no longer enabled by default,
    while undefined-local-with-nested-import-star-usage
    (F406), which corresponds to a syntax error, is now enabled by default.

  • Update Rust crate quick-junit to 0.8.0 (#​27295)

    JUnit output now uses a skipped attribute instead of disabled on <testsuite> elements and
    includes a skipped attribute on the root <testsuites> element.

  • [flake8-import-conventions] Add datetime as dt as a conventional alias (ICN001) (#​28790)

  • Support Unicode dummy variable names (#​28722)

    The default lint.dummy-variable-rgx
    now recognizes underscore-prefixed Unicode names, such as _次, as dummy variables.

  • Update to Unicode 17 (#​21229, #​28784)

    Ruff now uses Unicode 17 data for identifier normalization and named character escapes ("\N{...}").

  • Always show unsafe and display-only fixes in the CLI (#​27810)

    The default full output format now shows unsafe fixes and suggestions requiring manual review,
    regardless of the unsafe-fixes setting.
    Actually applying unsafe fixes still requires explicit opt-in.

  • Remove the Python dependency from conda-forge builds (conda-forge/ruff-feedstock#361)

    The conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and
    linux-ppc64le platforms, and now includes shell completions. However, no longer depending on
    Python means that python -m ruff and import ruff will no longer work. Use ruff directly from
    PATH instead. PyPI installations and those from the standalone installer are unaffected.

  • Remove support for ruff-lsp (#​28750)

    Support for ruff-lsp, the legacy Python language server deprecated in Ruff
    v0.9.5
    , has been removed. The Ruff VS Code
    extension now always uses the native language server; ruff.nativeServer is deprecated and
    ignored. See the migration guide.

Stabilization

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

The following behaviors have been stabilized:

  • The formatter, unsorted-imports (I001),
    line-too-long (E501), and
    doc-line-too-long (W505) now
    consistently ignore trailing pragma comments when computing line length. This resolved several
    bugs involving interactions between these rules
    (#​27313) but may also cause existing imports to be
    reformatted and was thus classified as a breaking change.
Preview features
  • [flake8-bugbear] Report the method name and a more precise range (B005) (#​27050)
  • [refurb] Mark fix unsafe and move to suspicious (FURB152) (#​28405)
  • [ruff] Allow docstrings in strict mode (RUF067) (#​28679)
Bug fixes
  • [flake8-builtins] Expand checks in class scopes (A001) (#​29076)
  • [flake8-self] Allow private access on object.__new__(cls) instances (SLF001) (#​29001)
  • [flake8-tidy-imports] Skip lazy-import-mismatch in stubs (TID254) (#​29095)
  • [flake8-type-checking] Add the notion of runtime-ambiguous references (#​26508)
  • [flake8-type-checking] Never flag annotations in function scopes (#​29183)
  • [pyflakes] Mark the fix as unsafe when it creates a docstring (F541) (#​28258)
  • [pylint] Preserve trailing comments in useless-return fix (PLR1711) (#​29180)
  • [ruff] Avoid false positive when pytest.raises is used in a with statement (RUF061) (#​28186)
Rule changes
  • [pyupgrade] Suggest typing.TypeForm on Python 3.15 (UP035) (#​29084)
Contributors

v0.16.10

Compare Source

Release Notes

Released on 2026-10-01.

Preview features
  • Add a migration guide for categories (#​28087)
  • [pyupgrade] Add rule for context manager iterator annotations (UP052) (#​29000)
Performance
  • Reduce memory used by diagnostics (#​28951)
Server
  • Avoid running uv format in untrusted workspaces (#​28873)
Documentation
  • Fix links to moved changelog sections and renamed mdtests (#​28941)
  • Add Python 3.15 as a supported version (#​28907)
  • Add ty as a type checker example (#​28906)
Other changes
  • Update Rust toolchain to 1.99 and MSRV to 1.97 (#​29047)
Contributors

Install ruff 0.16.10

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

Download ruff 0.16.10

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>
astral-sh/ty (ty)

v0.0.90

Compare Source

Released on 2026-10-20.

Bug fixes
  • Allow subclasses to restore hashability (#​29471)
  • Avoid crashes when negating recursive aliases (#​29429)
  • Avoid stack overflow for recursive descriptor setter checks (#​29467)
  • Defer constructor type variable defaults (#​29469)
  • Preserve bound receivers for strict signature checks (#​29396)
  • Preserve read types for dynamic attributes (#​29461)
  • Reject runtime_checkable on non-protocol classes (#​29460)
  • Validate TypeAliasType keyword arguments (#​29466)
LSP server
Other changes
  • Adopt stable macOS signing identifiers (#​4743)
  • Avoid inserting inlay hints containing stub-only types (#​29477)
  • Filter incompatible union members during union inference (#​29344)
  • Infer ParamSpecs from call-wide constraints (#​28828)
  • Mitigate pauses from clearing cached ASTs in more language server operations (#​29232)
  • Report read-only keys when deleting, popping, or defaulting TypedDict items (#​29441)
  • Support uv's nested module ownership metadata (#​29436)
Contributors

v0.0.89

Compare Source

Released on 2026-10-16.

Core type checking
Bug fixes
  • Avoid a panic when negating dynamic type aliases (#​29427)
  • Widen tuple literal lengths when other collection elements contain nested tuple types (#​29147)
  • Report invalid Generic and Protocol arguments containing nested variadic type variables (#​29146)
Performance
  • Speed up generic class-pattern narrowing by skipping impossible intersection comparisons (#​29240)
Contributors

v0.0.88

Compare Source

Released on 2026-10-15.

Bug fixes
  • Avoid panics and hangs involving recursive type aliases and intersections (#​29057)
  • Fix false invalid-mutable-override errors when overriding object attributes (#​29373)
  • Fix attribute assignment and deletion checks through bounded or constrained type variables (#​29345)
  • Detect instance layout conflicts hidden by additional base classes (#​29372)
  • Fix false missing-argument errors when Pydantic models override inherited attributes with ClassVar (#​29367)
  • Preserve known module owners when uv reports owners outside the resolution (#​29296)
Diagnostic improvements
  • Report assignments to individually frozen Pydantic fields (#​29305)
Core type checking
  • Improve type inference for intersection arguments to generic functions (#​28677)
  • Preserve inherited annotations for unannotated subclass attributes when a base has type Any or Unknown (#​28973)
  • Preserve common return-type structure when gradual arguments match multiple overloads (#​29342)
  • Check upper bounds when inferring type variables from caller type variables (#​29014)
Contributors

v0.0.87

Compare Source

Released on 2026-10-13.

LSP server
  • Clamp notebook cell positions to the end of the cell (#​29307)
  • Fix deadlock when requests arrive before workspace configuration (#​29303)
  • Fix notebook cell lookups after cells with cell magics (#​29308)
  • Fix panic on completions past the end of a notebook's last cell (#​29306)
Diagnostic improvements
  • Add opt-in mismatched-sentinel-name rule (#​27206)
  • Deduplicate identical argument type diagnostics (#​29337)
  • Enable invalid-mutable-override by default (#​29335)
  • Improve display of distinct string literal types (#​29206)
  • Respect suppression of attribute override diagnostics (#​29327)
Core type checking
  • Check overrides of receiver attribute declarations (#​28557)
  • Infer the default for definitely absent keys in closed TypedDict.get calls (#​29136)
  • Leave room for later positional arguments when unpacking a variable-length argument (#​29293)
  • Preserve minimum lengths of unpacked tuple unions (#​29331)
  • Specialize bare generic class name with type[...] type context (#​29248)
Performance
  • Avoid constructing nominal complements (#​29292)
  • Optimize system path equality (#​29340)
Contributors

v0.0.86

Compare Source

Released on 2026-10-09.

The executables in our macOS and Windows release archives and ty wheels are now code-signed.
macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows
executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables
verification of the release publisher and binary integrity, supports publisher-based allowlisting,
and should reduce security warnings and antivirus false positives.

Bug fixes
  • Infer empty collection branches from nonempty literals (#​29131)
  • Invalidate dependency metadata when environments change (#​29126)
  • Preserve final attribute restrictions on composite types (#​29135)
  • Preserve recursive structure in Annotated values (#​29058)
  • Specialize inherited dataclass field converters (#​29192)
LSP server
  • Show documentation for annotation operators on hover (#​29185)
Core type checking
  • Check attribute and property override types (#​28556)
  • Narrow tuple unions through truthiness and type checks (#​29125)
  • Preserve literal types when consuming dictionary literals (#​29145)
  • Preserve non-boolean comparison results for intersections (#​28045)
  • Preserve receiver specializations when calling unions of bound methods (#​29015)
  • Represent uninhabited truthiness explicitly (#​28843)
  • Solve validity type context through constraint sets (#​28909)
Performance
  • Avoid recursion guards for non-generic nominal targets (#​29202)
  • Check exact exclusions before intersection positives (#​29195)
Memory usage improvements
  • Share constraints in retained sequent maps (#​28966)
Other changes
Contributors

v0.0.85

Compare Source

Released on 2026-10-06.

Preview features
  • Refresh uv project metadata when uv files change (#​28529)
Bug fixes
  • Avoid recursive lambda class decorator panics (#​28984)
  • Compare observable notebook state for equality (#​28874)
  • Detect recursive alias cycles through intersections (#​28916)
  • Fix anchoring of include and exclude patterns after the project's root changed (#​28995)
  • Fix stack overflow when inferring dynamic class metaclasses (#​28917)
  • Normalize recursive dataclass transform metadata (#​28920)
  • Normalize recursive TypedDicts during cycle recovery (#​28918)
  • Preserve cycle markers in ParamSpec specialization (#​29024)
CLI
  • Prefer existing @​ paths over response files in Ruff and ty (#​28877)
LSP server
  • Add namespace package support to import completions. (#​28202)
  • Avoid stale I/O diagnostics when closing deleted files (#​28988)
  • Contain rendered code within Markdown fences (#​28869)
  • Refresh Python settings when virtual environments change (#​28650)
Diagnostic improvements
  • Add opt-in truthiness-test-of-none-union rule (#​28889)
  • Avoid disjoint-cast diagnostics in situations where the value could have been inferred as being compatible with the casted type if it had only been inferred with the right type context (#​28851)
  • Bound nested callable signature display (#​29049)
  • Explain outdated uv versions in metadata errors (#​28959)
  • Improve display of string literal types that include unicode characters or double quotes (#​29089)
  • Improve uv metadata diagnostics (#​28990)
  • Preserve constrained type-variable failure diagnostics (#​28768)
  • Preserve generic inference errors during diagnostic recovery (#​28811)
  • Report deprecated overloads in decorator applications (#​28999)
Core type checking
  • Bound methods without a receiver are not callable (#​28981)
  • Fix member lookup on union-bounded type variables (#​29018)
  • Fix type variable inference for final class objects (#​29097)
  • Freshen ParamSpec identities consistently (#​28826)
  • Honor generic property setters in protocol compatibility (#​28562)
  • Infer nominal generic specializations from bounded type variables (#​28812)
  • Inherit annotations for unannotated subclass defaults (#​28575)
  • Keep unresolved TypeIs targets provisional (#​29066)
  • Limit wildcard exports using literal __all__ (#​28972)
  • Narrow later match cases after always-true guards (#​28960)
  • Pass generic context to call inference solver (#​29065)
  • Preserve captured variables in ParamSpec comparisons (#​28827)
  • Preserve intersection receivers in implicit dunder calls (#​28833)
  • Preserve literal unpacking during call analysis (#​28821)
  • Preserve recursive type context during constructor inference (#​28903)
  • Preserve tuple shapes when slicing NewTypes (#​29091)
  • Preserve tuple subclass identity during type expansion (#​29090)
  • Promote bounded type variables to declared constraints (#​28814)
  • Propagate outer type context through cast calls (#​28855)
  • Recognize bare TypeVarTuples in materialization checks (#​28815)
  • Retain individual overload argument expansion outcomes (#​28825)
  • Specialize instance members once (#​29043)
  • Specialize Self bounds through generic type aliases (#​28890)
  • Support slots_default in dataclass_transform (#​28885)
  • Sync vendored typeshed stubs (#​29032). Typeshed diff
  • Sync vendored typeshed stubs (#​29042). Typeshed diff
  • Validate call arguments once after inference (#​28824)
  • Validate union operands involving None (#​28931)
Performance
  • Avoid expanding recursive protocol materializations (#​29026)
  • Avoid repeated work in nested match patterns (#​28926)
  • Cache the flattened module list (#​28932)
  • Index nonlocal bindings when sweeping snapshots (#​28935)
  • Skip descendant searches for leaf modules (#​28845)
  • Skip independent constraint-pair derivation (#​28950)
  • Skip storing default definition states (#​28934)
Memory usage improvements
  • Avoid caching empty sequent maps (#​28949)
  • Avoid retaining docstring literal types (#​28944)
  • Compact bound-method receivers (#​28969)
  • Move ParamSpec signature metadata to extras (#​28970)
  • Release closed module ASTs synchronously during auto-import discovery (#​28714)
  • Skip caching trivially assignable types (#​28936)
Contributors
MagicStack/uvloop (uvloop)

v0.23.0

Compare Source

Changes

Fixes

Build


Configuration

📅 Schedule: (in timezone Europe/Amsterdam)

  • Branch creation
    • "before 6am on sunday"
  • Automerge
    • At any time (no schedule defined)

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

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


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

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | Type | Update | |---|---|---|---|---|---| | [asyncpg](https://github.com/MagicStack/asyncpg) | `>=0.31.0` → `>=0.32.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/asyncpg/0.32.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/asyncpg/0.31.0/0.32.0?slim=true) | project.dependencies | minor | | [authlib](https://github.com/authlib/authlib) | `>=1.8.0` → `>=1.9.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/authlib/1.9.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/authlib/1.8.0/1.9.1?slim=true) | project.dependencies | minor | | [cachetools](https://github.com/tkem/cachetools) ([changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)) | `>=7.2.0,<7.3` → `>=7.2.4,<7.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/cachetools/7.2.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/cachetools/7.2.0/7.2.4?slim=true) | project.dependencies | patch | | [cryptography](https://github.com/pyca/cryptography) ([changelog](https://cryptography.io/en/latest/changelog/)) | `>=50.0.1` → `>=50.0.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/cryptography/50.0.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/cryptography/50.0.1/50.0.2?slim=true) | project.dependencies | patch | | [fastapi](https://github.com/fastapi/fastapi) ([changelog](https://fastapi.tiangolo.com/release-notes/)) | `>=0.141.1` → `>=0.159.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/fastapi/0.159.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastapi/0.141.1/0.159.1?slim=true) | project.dependencies | minor | | [httptools](https://github.com/MagicStack/httptools) | `>=0.8.0` → `>=0.9.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/httptools/0.9.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/httptools/0.8.0/0.9.0?slim=true) | project.dependencies | minor | | [pip](https://github.com/pypa/pip) ([changelog](https://pip.pypa.io/en/stable/news/)) | `>=26.2.1` → `>=26.2.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pip/26.2.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pip/26.2.1/26.2.2?slim=true) | dependency-groups | patch | | [pydantic](https://github.com/pydantic/pydantic) ([changelog](https://pydantic.dev/docs/validation/latest/get-started/changelog/)) | `>=2.13.5` → `>=2.14.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic/2.14.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic/2.13.5/2.14.1?slim=true) | project.dependencies | minor | | [pydantic-settings](https://github.com/pydantic/pydantic-settings) ([changelog](https://github.com/pydantic/pydantic-settings/releases)) | `>=2.15.0` → `>=2.16.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic-settings/2.16.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic-settings/2.15.0/2.16.1?slim=true) | project.dependencies | minor | | [python](https://python.org) ([source](https://github.com/python/cpython)) | `>=3.14.7` → `>=3.15.1` | ![age](https://developer.mend.io/api/mc/badges/age/python-version/python/3.15.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/python-version/python/3.14.7/3.15.1?slim=true) | requires-python | minor | | [ruff](https://docs.astral.sh/ruff) ([source](https://github.com/astral-sh/ruff), [changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)) | `>=0.16.9` → `>=0.17.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.17.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.16.9/0.17.1?slim=true) | dependency-groups | minor | | [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `>=2.1.1` → `>=2.1.6` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/sqlalchemy/2.1.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/sqlalchemy/2.1.1/2.1.6?slim=true) | project.dependencies | patch | | [ty](https://github.com/astral-sh/ty) ([changelog](https://github.com/astral-sh/ty/blob/main/CHANGELOG.md)) | `>=0.0.84` → `>=0.0.90` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/ty/0.0.90?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ty/0.0.84/0.0.90?slim=true) | dependency-groups | patch | | [uvloop](https://github.com/MagicStack/uvloop) | `>=0.22.1 ` → `>=0.23.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/uvloop/0.23.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/uvloop/0.22.1/0.23.0?slim=true) | project.dependencies | minor | --- ### Release Notes <details> <summary>MagicStack/asyncpg (asyncpg)</summary> ### [`v0.32.0`](https://github.com/MagicStack/asyncpg/releases/tag/v0.32.0) [Compare Source](https://github.com/MagicStack/asyncpg/compare/v0.31.0...v0.32.0) #### Improvements - Support Python 3.15 ([#&#8203;1367](https://github.com/MagicStack/asyncpg/issues/1367), [#&#8203;1378](https://github.com/MagicStack/asyncpg/issues/1378)) (by [@&#8203;elprans](https://github.com/elprans) in [`1b11846`](https://github.com/MagicStack/asyncpg/commit/1b118464) and [`58c0c59`](https://github.com/MagicStack/asyncpg/commit/58c0c595)) - Support PostgreSQL 19 ([#&#8203;1379](https://github.com/MagicStack/asyncpg/issues/1379)) (by [@&#8203;elprans](https://github.com/elprans) in [`8d2a5ae`](https://github.com/MagicStack/asyncpg/commit/8d2a5aed)) - Make pool `min_size` a maintained connection floor and add `init_size` to control the number of connections opened at startup ([#&#8203;1323](https://github.com/MagicStack/asyncpg/issues/1323)). Idle connections at or below `min_size` are retained, and closed connections are replaced in the background. `init_size` defaults to `min_size`. To preserve the previous behavior, where the pool could drain to zero, replace `min_size=N` with `init_size=N, min_size=0`. (by [@&#8203;shatilov-diman](https://github.com/shatilov-diman) in [`67a1cbc`](https://github.com/MagicStack/asyncpg/commit/67a1cbc5)) - Use `hashlib.pbkdf2_hmac()` for faster SCRAM password derivation ([#&#8203;1359](https://github.com/MagicStack/asyncpg/issues/1359)) (by [@&#8203;twelfthlabor](https://github.com/twelfthlabor) in [`00319a9`](https://github.com/MagicStack/asyncpg/commit/00319a9b)) - Use the statement cache for `copy_records_to_table()` introspection ([#&#8203;1360](https://github.com/MagicStack/asyncpg/issues/1360)) (by [@&#8203;matemax](https://github.com/matemax) in [`dd05865`](https://github.com/MagicStack/asyncpg/commit/dd058652)) #### Fixes - Clean up connections rejected by `target_session_attrs` immediately so an unresponsive rejected host cannot delay the selected connection, and cleanup tasks cannot outlive the event loop. Rejected connections are aborted without waiting for a graceful disconnect; servers may log "unexpected EOF on client connection" if the Terminate message is not delivered before the transport closes. - Fix a connection pool deadlock when releasing a connection after a protocol abort ([#&#8203;1324](https://github.com/MagicStack/asyncpg/issues/1324)) (by [@&#8203;pchaseh](https://github.com/pchaseh) in [`4a83cc2`](https://github.com/MagicStack/asyncpg/commit/4a83cc2f)) - Honor `Connection.close(timeout=...)` while waiting for a pending cancellation ([#&#8203;1361](https://github.com/MagicStack/asyncpg/issues/1361)) (by [@&#8203;gyanu2507](https://github.com/gyanu2507) in [`c06bcb4`](https://github.com/MagicStack/asyncpg/commit/c06bcb4d)) - Prevent stuck cancellation from blocking connection teardown or pool release by bounding cancellation with the command or release timeout ([#&#8203;1370](https://github.com/MagicStack/asyncpg/issues/1370)) (by [@&#8203;elprans](https://github.com/elprans) in [`4cf0220`](https://github.com/MagicStack/asyncpg/commit/4cf02203)) - Preserve the server error when the connection closes mid-operation ([#&#8203;1369](https://github.com/MagicStack/asyncpg/issues/1369)) (by [@&#8203;RitiGrover](https://github.com/RitiGrover) in [`6c8f1a7`](https://github.com/MagicStack/asyncpg/commit/6c8f1a7a)) - Fix COPY cleanup when a records generator raises, preserving the original exception and avoiding protocol desynchronization and stalled rollback ([#&#8203;1358](https://github.com/MagicStack/asyncpg/issues/1358)) (by [@&#8203;CodingCossack](https://github.com/CodingCossack) in [`fdc6bc8`](https://github.com/MagicStack/asyncpg/commit/fdc6bc8f)) - Reparse unnamed statements before cursor binding when the statement cache is disabled ([#&#8203;1364](https://github.com/MagicStack/asyncpg/issues/1364)) (by [@&#8203;elprans](https://github.com/elprans) in [`302ba49`](https://github.com/MagicStack/asyncpg/commit/302ba496)) - Allow cursors in transactions started outside `Connection.transaction()`, such as with an explicit `BEGIN` ([#&#8203;1350](https://github.com/MagicStack/asyncpg/issues/1350)) (by [@&#8203;aryansk](https://github.com/aryansk) in [`25aaaf5`](https://github.com/MagicStack/asyncpg/commit/25aaaf54)) - Remove the query logger when the `query_logger()` block raises ([#&#8203;1373](https://github.com/MagicStack/asyncpg/issues/1373)) (by [@&#8203;kratos0718](https://github.com/kratos0718) in [`6a7fbd3`](https://github.com/MagicStack/asyncpg/commit/6a7fbd3e)) - Fix a segfault in `Record.get()` with an invalid number of positional arguments ([#&#8203;1333](https://github.com/MagicStack/asyncpg/issues/1333)) (by [@&#8203;apoorvdarshan](https://github.com/apoorvdarshan) in [`40a3832`](https://github.com/MagicStack/asyncpg/commit/40a38320)) - Align SSL startup retries with libpq and improve SSL rejection diagnostics ([#&#8203;1366](https://github.com/MagicStack/asyncpg/issues/1366)). Retry alternative transports only before authentication succeeds. Direct TLS now requires `sslmode=require`, `verify-ca`, or `verify-full`, or an explicit `SSLContext`. (by [@&#8203;elprans](https://github.com/elprans) in [`78752c9`](https://github.com/MagicStack/asyncpg/commit/78752c9c)) - Preserve password errors during SSL fallback when the fallback fails with a less specific authorization error ([#&#8203;1331](https://github.com/MagicStack/asyncpg/issues/1331)) (by [@&#8203;Mauricio0129](https://github.com/Mauricio0129) in [`2d97947`](https://github.com/MagicStack/asyncpg/commit/2d979472)) - Handle cleartext password authentication when no password is supplied without raising an `AttributeError` ([#&#8203;1351](https://github.com/MagicStack/asyncpg/issues/1351)) (by [@&#8203;aryansk](https://github.com/aryansk) in [`6be5915`](https://github.com/MagicStack/asyncpg/commit/6be59154)) - Set the `postgresql` ALPN protocol on SSL contexts created by asyncpg so direct TLS connections work with PostgreSQL 17 and later ([#&#8203;1372](https://github.com/MagicStack/asyncpg/issues/1372)). User-provided contexts must set this protocol for direct TLS connections. (by [@&#8203;DurandA](https://github.com/DurandA) in [`b21325d`](https://github.com/MagicStack/asyncpg/commit/b21325d2)) - Link explicitly against `libm` on non-Windows platforms to fix undefined math symbol errors when loading the extensions ([#&#8203;1305](https://github.com/MagicStack/asyncpg/issues/1305)) (by [@&#8203;veeceey](https://github.com/veeceey) in [`db8ecc2`](https://github.com/MagicStack/asyncpg/commit/db8ecc2a)) - Fix builds on FreeBSD 15 by linking against `libstdthreads` ([#&#8203;1368](https://github.com/MagicStack/asyncpg/issues/1368)) (by [@&#8203;elprans](https://github.com/elprans) in [`87bcaf9`](https://github.com/MagicStack/asyncpg/commit/87bcaf97)) #### Other - Replace `pkg_resources` with `packaging` in `setup.py` ([#&#8203;1362](https://github.com/MagicStack/asyncpg/issues/1362)) (by [@&#8203;elprans](https://github.com/elprans) in [`6695db7`](https://github.com/MagicStack/asyncpg/commit/6695db76)) - Build Linux and macOS ARM64 wheels on native runners and add Windows ARM64 wheel builds ([#&#8203;1308](https://github.com/MagicStack/asyncpg/issues/1308)) (by [@&#8203;ddelange](https://github.com/ddelange) in [`1e8cc1c`](https://github.com/MagicStack/asyncpg/commit/1e8cc1c4)) - Add manual and PR-label-triggered dry runs to the release workflow ([#&#8203;1374](https://github.com/MagicStack/asyncpg/issues/1374)) (by [@&#8203;elprans](https://github.com/elprans) in [`1bd643e`](https://github.com/MagicStack/asyncpg/commit/1bd643e1)) - Clarify how `execute()` uses prepared statements and how to confirm an `INSERT` in the documentation ([#&#8203;1336](https://github.com/MagicStack/asyncpg/issues/1336)) (by [@&#8203;pctablet505](https://github.com/pctablet505) in [`cdf816c`](https://github.com/MagicStack/asyncpg/commit/cdf816c4)) - Fix typos in comments and docstrings ([#&#8203;1332](https://github.com/MagicStack/asyncpg/issues/1332)) (by [@&#8203;maxtaran2010](https://github.com/maxtaran2010) in [`bc3e246`](https://github.com/MagicStack/asyncpg/commit/bc3e2462)) </details> <details> <summary>authlib/authlib (authlib)</summary> ### [`v1.9.1`](https://github.com/authlib/authlib/releases/tag/v1.9.1) [Compare Source](https://github.com/authlib/authlib/compare/v1.9.0...v1.9.1) Changelog: <https://docs.authlib.org/en/stable/upgrades/changelog.html#changelog-1-9-1> #### What's Changed - Use scriv to handle the changelog by [@&#8203;azmeuk](https://github.com/azmeuk) in [#&#8203;954](https://github.com/authlib/authlib/pull/954) **Full Changelog**: <https://github.com/authlib/authlib/compare/v1.9.0...v1.9.1> ### [`v1.9.0`](https://github.com/authlib/authlib/releases/tag/v1.9.0) [Compare Source](https://github.com/authlib/authlib/compare/v1.8.0...v1.9.0) #### What's Changed - feat: add Identity Assertion JWT Authorization Grant (ID-JAG) by [@&#8203;BinoyOza-okta](https://github.com/BinoyOza-okta) in [#&#8203;898](https://github.com/authlib/authlib/pull/898) - Fix empty signatures validation in JWS JSON deserialization by [@&#8203;loporto](https://github.com/loporto) in [#&#8203;938](https://github.com/authlib/authlib/pull/938) - fix(jose): reject boolean values for NumericDate claims by [@&#8203;cpruijsen](https://github.com/cpruijsen) in [#&#8203;942](https://github.com/authlib/authlib/pull/942) - fix(client): avoid duplicated OAuth 1.0 parameters in signed requests by [@&#8203;cpruijsen](https://github.com/cpruijsen) in [#&#8203;943](https://github.com/authlib/authlib/pull/943) - OAuth2 token fetch crashes with JSONDecodeError instead of a catchable error on rate-limit responses by [@&#8203;juneja-varun](https://github.com/juneja-varun) in [#&#8203;929](https://github.com/authlib/authlib/pull/929) - docs: add i18n wrappers in conf.py and templates by [@&#8203;hwhsu1231](https://github.com/hwhsu1231) in [#&#8203;901](https://github.com/authlib/authlib/pull/901) - fix(oauth): enforce JOSE key, scope, and audience validation by [@&#8203;lepture](https://github.com/lepture) in [#&#8203;945](https://github.com/authlib/authlib/pull/945) - AsyncOpenIDMixin.parse\_id\_token: return None when id\_token is absent, matching the sync client by [@&#8203;ckarnell](https://github.com/ckarnell) in [#&#8203;924](https://github.com/authlib/authlib/pull/924) - fix(oauth): enforce nonce and JAR request validation by [@&#8203;lepture](https://github.com/lepture) in [#&#8203;949](https://github.com/authlib/authlib/pull/949) - fix(oauth): require client authentication for ID-JAG grants by [@&#8203;lepture](https://github.com/lepture) in [#&#8203;955](https://github.com/authlib/authlib/pull/955) #### New Contributors - [@&#8203;BinoyOza-okta](https://github.com/BinoyOza-okta) made their first contribution in [#&#8203;898](https://github.com/authlib/authlib/pull/898) - [@&#8203;loporto](https://github.com/loporto) made their first contribution in [#&#8203;938](https://github.com/authlib/authlib/pull/938) - [@&#8203;cpruijsen](https://github.com/cpruijsen) made their first contribution in [#&#8203;942](https://github.com/authlib/authlib/pull/942) - [@&#8203;juneja-varun](https://github.com/juneja-varun) made their first contribution in [#&#8203;929](https://github.com/authlib/authlib/pull/929) - [@&#8203;hwhsu1231](https://github.com/hwhsu1231) made their first contribution in [#&#8203;901](https://github.com/authlib/authlib/pull/901) - [@&#8203;ckarnell](https://github.com/ckarnell) made their first contribution in [#&#8203;924](https://github.com/authlib/authlib/pull/924) **Full Changelog**: <https://github.com/authlib/authlib/compare/v1.8.0...v1.9.0> </details> <details> <summary>tkem/cachetools (cachetools)</summary> ### [`v7.2.4`](https://github.com/tkem/cachetools/blob/HEAD/CHANGELOG.rst#v724-2026-10-19) [Compare Source](https://github.com/tkem/cachetools/compare/v7.2.3...v7.2.4) \=================== - Restore autospec calls to `@cachedmethod` decorated methods. - Improve branch coverage of unit tests. - Minor type stub improvements. ### [`v7.2.3`](https://github.com/tkem/cachetools/blob/HEAD/CHANGELOG.rst#v723-2026-10-17) [Compare Source](https://github.com/tkem/cachetools/compare/v7.2.2...v7.2.3) \=================== - Fix `@cached` decorator stacking behavior. - Minor type stub improvements. ### [`v7.2.2`](https://github.com/tkem/cachetools/blob/HEAD/CHANGELOG.rst#v722-2026-10-15) [Compare Source](https://github.com/tkem/cachetools/compare/v7.2.1...v7.2.2) \=================== - Fix `@cachedmethod` for subclasses that override a decorated method and call the base class implementation via `super()`. - Restore class access to instance methods decorated with `@cachedmethod`. - Improve `TTLCache` robustness when calculating expiration time fails. - Various unit test improvements. ### [`v7.2.1`](https://github.com/tkem/cachetools/blob/HEAD/CHANGELOG.rst#v721-2026-10-05) [Compare Source](https://github.com/tkem/cachetools/compare/v7.2.0...v7.2.1) \=================== - Improve error handling for `RRCache.popitem()` when the cache is empty. - Minor style and documentation improvements. - Update CI environment. </details> <details> <summary>pyca/cryptography (cryptography)</summary> ### [`v50.0.2`](https://github.com/pyca/cryptography/compare/50.0.1...50.0.2) [Compare Source](https://github.com/pyca/cryptography/compare/50.0.1...50.0.2) </details> <details> <summary>fastapi/fastapi (fastapi)</summary> ### [`v0.159.1`](https://github.com/fastapi/fastapi/releases/tag/0.159.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.159.0...0.159.1) ##### Features - ✨ Add support for optional unions of form models. PR [#&#8203;16586](https://github.com/fastapi/fastapi/pull/16586) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.159.0`](https://github.com/fastapi/fastapi/releases/tag/0.159.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.158.2...0.159.0) ##### Features - ✨ Add support for optional query, header, and cookie parameter models. PR [#&#8203;16584](https://github.com/fastapi/fastapi/pull/16584) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.158.2`](https://github.com/fastapi/fastapi/releases/tag/0.158.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.158.1...0.158.2) ##### Features - ✨ Add support for optional form models. PR [#&#8203;16582](https://github.com/fastapi/fastapi/pull/16582) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.158.1`](https://github.com/fastapi/fastapi/releases/tag/0.158.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.158.0...0.158.1) ##### Fixes - 🐛 Preserve form media types in OpenAPI. PR [#&#8203;16579](https://github.com/fastapi/fastapi/pull/16579) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.158.0`](https://github.com/fastapi/fastapi/releases/tag/0.158.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.157.0...0.158.0) ##### Features - ✨ Add support for combining form models. PR [#&#8203;16577](https://github.com/fastapi/fastapi/pull/16577) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.157.0`](https://github.com/fastapi/fastapi/releases/tag/0.157.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.8...0.157.0) ##### Features - ✨ Add support for combining query, header, and cookie parameter models. PR [#&#8203;16573](https://github.com/fastapi/fastapi/pull/16573) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Clarify boolean query parameter parsing. PR [#&#8203;16569](https://github.com/fastapi/fastapi/pull/16569) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Clarify nullable query parameters and path parameter defaults. PR [#&#8203;16568](https://github.com/fastapi/fastapi/pull/16568) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Remove translation notifications and approval labeling. PR [#&#8203;16570](https://github.com/fastapi/fastapi/pull/16570) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.8`](https://github.com/fastapi/fastapi/releases/tag/0.156.8) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.7...0.156.8) ##### Fixes - 🐛 Preserve uploaded file positions when converting to `bytes`. PR [#&#8203;16566](https://github.com/fastapi/fastapi/pull/16566) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.7`](https://github.com/fastapi/fastapi/releases/tag/0.156.7) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.6...0.156.7) ##### Fixes - 🐛 Fix validation error locations for form and file `AliasChoices`. PR [#&#8203;16564](https://github.com/fastapi/fastapi/pull/16564) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.6`](https://github.com/fastapi/fastapi/releases/tag/0.156.6) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.5...0.156.6) ##### Fixes - 🐛 Respect model alias settings for query, header, and cookie parameters. PR [#&#8203;16562](https://github.com/fastapi/fastapi/pull/16562) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.5`](https://github.com/fastapi/fastapi/releases/tag/0.156.5) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.4...0.156.5) ##### Fixes - 🐛 Fix `AliasChoices` for path parameters. PR [#&#8203;16560](https://github.com/fastapi/fastapi/pull/16560) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.4`](https://github.com/fastapi/fastapi/releases/tag/0.156.4) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.3...0.156.4) ##### Fixes - 🐛 Fix `AliasChoices` for named JSON body parameters. PR [#&#8203;16559](https://github.com/fastapi/fastapi/pull/16559) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Fix `AliasChoices` extraction for form models. PR [#&#8203;16557](https://github.com/fastapi/fastapi/pull/16557) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.3`](https://github.com/fastapi/fastapi/releases/tag/0.156.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.2...0.156.3) ##### Fixes - 🐛 Fix `AliasChoices` for query parameters, headers, and cookies. PR [#&#8203;16555](https://github.com/fastapi/fastapi/pull/16555) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.2`](https://github.com/fastapi/fastapi/releases/tag/0.156.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.1...0.156.2) ##### Fixes - 🐛 Preserve Pydantic field metadata in inferred request parameters. PR [#&#8203;16553](https://github.com/fastapi/fastapi/pull/16553) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.1`](https://github.com/fastapi/fastapi/releases/tag/0.156.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.156.0...0.156.1) ##### Fixes - 🐛 Preserve Pydantic field metadata when request options are omitted. PR [#&#8203;16549](https://github.com/fastapi/fastapi/pull/16549) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.156.0`](https://github.com/fastapi/fastapi/releases/tag/0.156.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.155.0...0.156.0) ##### Fixes - 🐛 Preserve Pydantic `Field()` attributes in request parameters. PR [#&#8203;16547](https://github.com/fastapi/fastapi/pull/16547) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.155.0`](https://github.com/fastapi/fastapi/releases/tag/0.155.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.154.0...0.155.0) The deprecated `**extra` keyword arguments have been removed from `Path`, `Query`, `Header`, `Cookie`, `Body`, `Form`, and `File`. Unknown keyword arguments now raise `TypeError`. For additional JSON Schema properties, replace, for example, `Query(custom="value")` with `Query(json_schema_extra={"custom": "value"})`. ##### Breaking Changes - 🔥 Remove deprecated `**extra` from request parameters. PR [#&#8203;16545](https://github.com/fastapi/fastapi/pull/16545) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.154.0`](https://github.com/fastapi/fastapi/releases/tag/0.154.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.153.0...0.154.0) ##### Features - ✨ Add Pydantic validation options to request parameters. PR [#&#8203;16542](https://github.com/fastapi/fastapi/pull/16542) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.153.0`](https://github.com/fastapi/fastapi/releases/tag/0.153.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.152.0...0.153.0) Unions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become `False`, and unselected files are treated as missing. JSON request bodies are unchanged. ##### Fixes - 🐛 Apply browser form handling to unions of Pydantic models. PR [#&#8203;16540](https://github.com/fastapi/fastapi/pull/16540) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.152.0`](https://github.com/fastapi/fastapi/releases/tag/0.152.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.151.0...0.152.0) Validation errors for header parameter models now report the HTTP header name, such as `int-val`, instead of the Python field name, `int_val`. Explicit aliases, `Header(convert_underscores=False)`, and Pydantic models with `loc_by_alias=False` keep their existing behavior. ##### Fixes - 🐛 Fix header model validation errors to report HTTP header names. PR [#&#8203;16538](https://github.com/fastapi/fastapi/pull/16538) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.151.0`](https://github.com/fastapi/fastapi/releases/tag/0.151.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.150.0...0.151.0) JSON request bodies now distinguish an explicit `null` from an omitted value. For individual `Body` parameters, `null` is validated as `None`: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and default factories apply only when the value is omitted. This applies both to parameters inside JSON objects and to parameters representing the entire body. Clients that used `null` to request a default should omit the value instead. When a JSON object is expected because of `Body(embed=True)` or multiple body parameters, sending `null` as the entire body now returns a validation error. ##### Breaking Changes - 🐛 Distinguish JSON null from omitted body values. PR [#&#8203;16536](https://github.com/fastapi/fastapi/pull/16536) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.150.0`](https://github.com/fastapi/fastapi/releases/tag/0.150.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.149.0...0.150.0) When no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unselected inputs are ignored in lists of files. Named zero-byte files are still accepted. ##### Breaking Changes - 🐛 Treat unselected browser file inputs as missing. PR [#&#8203;16534](https://github.com/fastapi/fastapi/pull/16534) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.149.0`](https://github.com/fastapi/fastapi/releases/tag/0.149.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.148.0...0.149.0) Browsers submit empty text inputs as empty strings (`""`). FastAPI now treats empty scalar form values as missing in form models, matching individual `Form` parameters. Required fields return a validation error. Fields with defaults or default factories use them and remain unset in `model_dump(exclude_unset=True)`. Empty strings inside lists are preserved. Omitted boolean form fields still become `False`. JSON requests and direct Pydantic validation are unchanged. ##### Breaking Changes - 🐛 Treat empty scalar values as missing in form models. PR [#&#8203;16529](https://github.com/fastapi/fastapi/pull/16529) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.148.0`](https://github.com/fastapi/fastapi/releases/tag/0.148.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.147.0...0.148.0) Defaults for omitted `Query`, `Header`, `Cookie`, and `Form` parameters and model fields are no longer treated as user input. Defaults are not validated unless `validate_default=True` is enabled. If you rely on validators running for omitted values, enable default validation with `Field(validate_default=True)` for model fields or, for example, `Query(validate_default=True)` for individual parameters. `Body(validate_default=True)` is now honored too. For parameter models, applying a default no longer marks a field as explicitly set, so `model_dump(exclude_unset=True)` excludes it. Default factories run once, and validation errors no longer include injected defaults in `input`. Omitted boolean form fields still become `False` and count as explicitly set. ##### Breaking Changes - 🐛 Fix default handling for request parameters and models. PR [#&#8203;16527](https://github.com/fastapi/fastapi/pull/16527) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.147.0`](https://github.com/fastapi/fastapi/releases/tag/0.147.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.146.0...0.147.0) Omitted `bool` and `bool | None` form fields are now interpreted as `False`, matching unchecked HTML checkboxes. This applies to individual `Form` parameters and form models, including required fields and fields with defaults of `True` or `None`. The inferred value is considered explicitly set, including in `model_dump(exclude_unset=True)`. JSON requests and direct Pydantic validation are unchanged. See [Boolean Form Fields](https://fastapi.tiangolo.com/tutorial/request-forms/#boolean-form-fields). ##### Breaking Changes - 🐛 Treat omitted boolean form fields as False. PR [#&#8203;16523](https://github.com/fastapi/fastapi/pull/16523) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ✅ Add tests for parameter defaults, nullability, and browser form behavior. PR [#&#8203;14829](https://github.com/fastapi/fastapi/pull/14829) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.146.0`](https://github.com/fastapi/fastapi/releases/tag/0.146.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.145.0...0.146.0) The `root_path` parameter in `FastAPI()` is deprecated. Configure the server with `fastapi run --root-path /api/v1` instead. ##### Breaking Changes - 🗑️ Deprecate the `root_path` parameter in `FastAPI`. PR [#&#8203;16520](https://github.com/fastapi/fastapi/pull/16520) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.145.0`](https://github.com/fastapi/fastapi/releases/tag/0.145.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.144.0...0.145.0) ##### Breaking Changes - 🔥 Remove deprecated `openapi_prefix` and unused `**extra` from `FastAPI`. PR [#&#8203;16518](https://github.com/fastapi/fastapi/pull/16518) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Document URL paths in templates. PR [#&#8203;16517](https://github.com/fastapi/fastapi/pull/16517) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.144.0`](https://github.com/fastapi/fastapi/releases/tag/0.144.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.5...0.144.0) ##### Features - ✨ Add WebSocket support to security dependencies. PR [#&#8203;10147](https://github.com/fastapi/fastapi/pull/10147) by [@&#8203;mnixry](https://github.com/mnixry). ### [`v0.143.5`](https://github.com/fastapi/fastapi/releases/tag/0.143.5) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.4...0.143.5) ##### Fixes - 🐛 Fix handling of empty value for `byte` file list parameter. PR [#&#8203;9383](https://github.com/fastapi/fastapi/pull/9383) by [@&#8203;Viicos](https://github.com/Viicos). ### [`v0.143.4`](https://github.com/fastapi/fastapi/releases/tag/0.143.4) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.3...0.143.4) ##### Upgrades - ⬆️ Add httpx2 to optional dependencies. PR [#&#8203;16512](https://github.com/fastapi/fastapi/pull/16512) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.143.3`](https://github.com/fastapi/fastapi/releases/tag/0.143.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.2...0.143.3) ##### Fixes - 🐛 Fix non-finite float serialization in JSONL and SSE streams. PR [#&#8203;16509](https://github.com/fastapi/fastapi/pull/16509) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 🎨 Update Python format in Markdown with Ruff. PR [#&#8203;16505](https://github.com/fastapi/fastapi/pull/16505) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.143.2`](https://github.com/fastapi/fastapi/releases/tag/0.143.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.1...0.143.2) ##### Fixes - 🐛 Fix blocking frontend fallback file checks. PR [#&#8203;16503](https://github.com/fastapi/fastapi/pull/16503) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;16500](https://github.com/fastapi/fastapi/pull/16500) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;16499](https://github.com/fastapi/fastapi/pull/16499) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;16501](https://github.com/fastapi/fastapi/pull/16501) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for hi (update-outdated). PR [#&#8203;16498](https://github.com/fastapi/fastapi/pull/16498) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for es (update-outdated). PR [#&#8203;16497](https://github.com/fastapi/fastapi/pull/16497) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;16495](https://github.com/fastapi/fastapi/pull/16495) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;16496](https://github.com/fastapi/fastapi/pull/16496) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for de (update-outdated). PR [#&#8203;16493](https://github.com/fastapi/fastapi/pull/16493) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;16494](https://github.com/fastapi/fastapi/pull/16494) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;16490](https://github.com/fastapi/fastapi/pull/16490) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;16491](https://github.com/fastapi/fastapi/pull/16491) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;16492](https://github.com/fastapi/fastapi/pull/16492) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). ##### Internal - ⬆ Bump pydantic-ai-slim from 2.49.0 to 2.53.0. PR [#&#8203;16487](https://github.com/fastapi/fastapi/pull/16487) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump werkzeug from 3.1.6 to 3.1.9. PR [#&#8203;16464](https://github.com/fastapi/fastapi/pull/16464) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.143.1`](https://github.com/fastapi/fastapi/releases/tag/0.143.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.143.0...0.143.1) ##### Fixes - 🐛 Fix included route metadata in `iter_route_contexts()`. PR [#&#8203;16484](https://github.com/fastapi/fastapi/pull/16484) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.143.0`](https://github.com/fastapi/fastapi/releases/tag/0.143.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.142.4...0.143.0) Automatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from `OTEL_*` environment variables, set `FASTAPI_OTEL_AUTO_CONFIGURE=true` or use `FastAPI(telemetry={"auto_configure": True})` to retain the previous behavior. Applications that configure their own providers and exporters require no changes. FastAPI Cloud enables automatic setup for you. ##### Breaking Changes - 💥 Require opt-in for automatic OpenTelemetry exporter setup. PR [#&#8203;16476](https://github.com/fastapi/fastapi/pull/16476) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.142.4`](https://github.com/fastapi/fastapi/releases/tag/0.142.4) [Compare Source](https://github.com/fastapi/fastapi/compare/0.142.3...0.142.4) ##### Fixes - 🐛 Isolate FastAPI telemetry for excluded requests. PR [#&#8203;16470](https://github.com/fastapi/fastapi/pull/16470) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.142.3`](https://github.com/fastapi/fastapi/releases/tag/0.142.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.142.2...0.142.3) ##### Fixes - 🐛 Cache OpenTelemetry tracers to preserve warning deduplication. PR [#&#8203;16468](https://github.com/fastapi/fastapi/pull/16468) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Remove HTML title from newsletter to avoid the tooltip. PR [#&#8203;16461](https://github.com/fastapi/fastapi/pull/16461) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Embed the FastAPI and friends newsletter signup form. PR [#&#8203;16459](https://github.com/fastapi/fastapi/pull/16459) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update skill, use Asyncer for blocking code in threads. PR [#&#8203;16420](https://github.com/fastapi/fastapi/pull/16420) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Update translations for fr (add-missing). PR [#&#8203;16436](https://github.com/fastapi/fastapi/pull/16436) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for hi (add-missing). PR [#&#8203;16435](https://github.com/fastapi/fastapi/pull/16435) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for tr (add-missing). PR [#&#8203;16434](https://github.com/fastapi/fastapi/pull/16434) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for zh (add-missing). PR [#&#8203;16433](https://github.com/fastapi/fastapi/pull/16433) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for zh-hant (add-missing). PR [#&#8203;16432](https://github.com/fastapi/fastapi/pull/16432) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for pt (add-missing). PR [#&#8203;16431](https://github.com/fastapi/fastapi/pull/16431) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for de (add-missing). PR [#&#8203;16430](https://github.com/fastapi/fastapi/pull/16430) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for uk (add-missing). PR [#&#8203;16429](https://github.com/fastapi/fastapi/pull/16429) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ja (add-missing). PR [#&#8203;16428](https://github.com/fastapi/fastapi/pull/16428) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ko (add-missing). PR [#&#8203;16425](https://github.com/fastapi/fastapi/pull/16425) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for es (add-missing). PR [#&#8203;16426](https://github.com/fastapi/fastapi/pull/16426) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ru (add-missing). PR [#&#8203;16427](https://github.com/fastapi/fastapi/pull/16427) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update Russian LLM-prompt. PR [#&#8203;16449](https://github.com/fastapi/fastapi/pull/16449) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - 👷 Fix deprecated command in `bump-pre-commit-hooks` workflow. PR [#&#8203;16463](https://github.com/fastapi/fastapi/pull/16463) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔧 Update sponsors: remove Render. PR [#&#8203;16457](https://github.com/fastapi/fastapi/pull/16457) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔨 Use `gpt-6-astra` model for translations. PR [#&#8203;16453](https://github.com/fastapi/fastapi/pull/16453) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the python-packages group across 1 directory with 14 updates. PR [#&#8203;16447](https://github.com/fastapi/fastapi/pull/16447) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.6.0 to 1.7.0. PR [#&#8203;16440](https://github.com/fastapi/fastapi/pull/16440) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pyjwt from 2.13.0 to 2.15.0. PR [#&#8203;16423](https://github.com/fastapi/fastapi/pull/16423) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump gitpython from 3.1.60 to 3.1.62. PR [#&#8203;16444](https://github.com/fastapi/fastapi/pull/16444) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;16443](https://github.com/fastapi/fastapi/pull/16443) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16437](https://github.com/fastapi/fastapi/pull/16437) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - ⬆ Bump pre-commit hooks. PR [#&#8203;16442](https://github.com/fastapi/fastapi/pull/16442) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - ⬆ Bump urllib3 from 2.7.0 to 2.8.0. PR [#&#8203;16445](https://github.com/fastapi/fastapi/pull/16445) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 3 updates. PR [#&#8203;16438](https://github.com/fastapi/fastapi/pull/16438) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.142.2`](https://github.com/fastapi/fastapi/releases/tag/0.142.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.142.1...0.142.2) ##### Fixes - 🐛 Allow startup when automatic OpenTelemetry configuration fails. PR [#&#8203;16418](https://github.com/fastapi/fastapi/pull/16418) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.142.1`](https://github.com/fastapi/fastapi/releases/tag/0.142.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.142.0...0.142.1) ##### Fixes - 🐛 Fix repeated endpoint wrapping in included routers. PR [#&#8203;16414](https://github.com/fastapi/fastapi/pull/16414) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.142.0`](https://github.com/fastapi/fastapi/releases/tag/0.142.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.141.1...0.142.0) ##### Features - ✨ Add native OpenTelemetry support. PR [#&#8203;16403](https://github.com/fastapi/fastapi/pull/16403) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Refactors - 📱 Improve mobile responsiveness of conference rail. PR [#&#8203;16196](https://github.com/fastapi/fastapi/pull/16196) by [@&#8203;alejsdev](https://github.com/alejsdev). - ♻️ Remove conf section and add event banner. PR [#&#8203;16193](https://github.com/fastapi/fastapi/pull/16193) by [@&#8203;alejsdev](https://github.com/alejsdev). ##### Docs - 🔥 Remove unused image. PR [#&#8203;16195](https://github.com/fastapi/fastapi/pull/16195) by [@&#8203;alejsdev](https://github.com/alejsdev). - 🐛 Use buttons for Termynal controls. PR [#&#8203;16132](https://github.com/fastapi/fastapi/pull/16132) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Update translations for hi (update-outdated). PR [#&#8203;16212](https://github.com/fastapi/fastapi/pull/16212) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;16210](https://github.com/fastapi/fastapi/pull/16210) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;16211](https://github.com/fastapi/fastapi/pull/16211) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;16208](https://github.com/fastapi/fastapi/pull/16208) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for de (update-outdated). PR [#&#8203;16209](https://github.com/fastapi/fastapi/pull/16209) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;16207](https://github.com/fastapi/fastapi/pull/16207) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;16206](https://github.com/fastapi/fastapi/pull/16206) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;16205](https://github.com/fastapi/fastapi/pull/16205) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;16204](https://github.com/fastapi/fastapi/pull/16204) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for es (update-outdated). PR [#&#8203;16203](https://github.com/fastapi/fastapi/pull/16203) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;16202](https://github.com/fastapi/fastapi/pull/16202) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;16201](https://github.com/fastapi/fastapi/pull/16201) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;16171](https://github.com/fastapi/fastapi/pull/16171) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). ##### Internal - ✅ Fix frontend test timeout with Starlette Git. PR [#&#8203;16408](https://github.com/fastapi/fastapi/pull/16408) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔧 Update sponsors: remove Permit.io. PR [#&#8203;16406](https://github.com/fastapi/fastapi/pull/16406) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump anyio from 4.12.1 to 4.14.2. PR [#&#8203;16375](https://github.com/fastapi/fastapi/pull/16375) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group across 1 directory with 15 updates. PR [#&#8203;16285](https://github.com/fastapi/fastapi/pull/16285) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.3.1 to 1.6.0. PR [#&#8203;16289](https://github.com/fastapi/fastapi/pull/16289) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump annotated-doc from 0.0.4 to 0.0.5. PR [#&#8203;16288](https://github.com/fastapi/fastapi/pull/16288) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typing-inspection from 0.4.2 to 0.4.4. PR [#&#8203;16286](https://github.com/fastapi/fastapi/pull/16286) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump fastar from 0.11.0 to 0.12.0. PR [#&#8203;16287](https://github.com/fastapi/fastapi/pull/16287) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 5 updates. PR [#&#8203;16284](https://github.com/fastapi/fastapi/pull/16284) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pre-commit hooks. PR [#&#8203;16290](https://github.com/fastapi/fastapi/pull/16290) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;16291](https://github.com/fastapi/fastapi/pull/16291) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16282](https://github.com/fastapi/fastapi/pull/16282) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - ⬆️ Bump Typer min version to 0.26.1. PR [#&#8203;16252](https://github.com/fastapi/fastapi/pull/16252) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆️ Bump `setup-uv` action to `10.0.1`. PR [#&#8203;16249](https://github.com/fastapi/fastapi/pull/16249) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Update translation PR branches with PR Push. PR [#&#8203;16224](https://github.com/fastapi/fastapi/pull/16224) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⏪️ Restore `commit_in_place` input in `translate.yml`. PR [#&#8203;16216](https://github.com/fastapi/fastapi/pull/16216) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Migrate automatic labels to Latest Changes. PR [#&#8203;16185](https://github.com/fastapi/fastapi/pull/16185) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix branch name in `zizmor.yml` workflow (`main` -> `master`). PR [#&#8203;16178](https://github.com/fastapi/fastapi/pull/16178) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Remove legacy label check. PR [#&#8203;16180](https://github.com/fastapi/fastapi/pull/16180) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump pymdown-extensions from 11.0 to 11.0.1. PR [#&#8203;16162](https://github.com/fastapi/fastapi/pull/16162) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump gitpython from 3.1.57 to 3.1.58. PR [#&#8203;16157](https://github.com/fastapi/fastapi/pull/16157) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16175](https://github.com/fastapi/fastapi/pull/16175) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🐛 Fix Sponsors Git authentication. PR [#&#8203;16174](https://github.com/fastapi/fastapi/pull/16174) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;16173](https://github.com/fastapi/fastapi/pull/16173) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). - 🔐 Use PR Submit for automated updates. PR [#&#8203;16172](https://github.com/fastapi/fastapi/pull/16172) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔐 Use PR Submit for translations. PR [#&#8203;16168](https://github.com/fastapi/fastapi/pull/16168) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Raise pytest-xdist minimum. PR [#&#8203;16170](https://github.com/fastapi/fastapi/pull/16170) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔐 Use PR Submit for pull requests. PR [#&#8203;16167](https://github.com/fastapi/fastapi/pull/16167) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use GitHub CLI for Git authentication. PR [#&#8203;16166](https://github.com/fastapi/fastapi/pull/16166) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use PR Push commit identity. PR [#&#8203;16164](https://github.com/fastapi/fastapi/pull/16164) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒 Replace pre-commit PAT with PR Push. PR [#&#8203;16161](https://github.com/fastapi/fastapi/pull/16161) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Disable saving Zensical's `.cache` in `build-docs.yml`. PR [#&#8203;16156](https://github.com/fastapi/fastapi/pull/16156) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔥 Remove the old Latest Changes workflow. PR [#&#8203;16148](https://github.com/fastapi/fastapi/pull/16148) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group with 12 updates. PR [#&#8203;16121](https://github.com/fastapi/fastapi/pull/16121) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump cryptography from 48.0.1 to 50.0.0. PR [#&#8203;16142](https://github.com/fastapi/fastapi/pull/16142) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump gitpython from 3.1.54 to 3.1.57. PR [#&#8203;16141](https://github.com/fastapi/fastapi/pull/16141) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 6 updates. PR [#&#8203;16120](https://github.com/fastapi/fastapi/pull/16120) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;16122](https://github.com/fastapi/fastapi/pull/16122) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16119](https://github.com/fastapi/fastapi/pull/16119) by [@&#8203;tiangolo](https://github.com/tiangolo). </details> <details> <summary>MagicStack/httptools (httptools)</summary> ### [`v0.9.0`](https://github.com/MagicStack/httptools/releases/tag/v0.9.0) [Compare Source](https://github.com/MagicStack/httptools/compare/v0.8.0...v0.9.0) - Upgrade llhttp to 9.4.3 ([#&#8203;153](https://github.com/MagicStack/httptools/issues/153)) (by [@&#8203;elprans](https://github.com/elprans) in [`eab7f64`](https://github.com/MagicStack/httptools/commit/eab7f640)) - Build CPython 3.15 wheels ([#&#8203;148](https://github.com/MagicStack/httptools/issues/148)) (by [@&#8203;edgarrmondragon](https://github.com/edgarrmondragon) in [`b03516d`](https://github.com/MagicStack/httptools/commit/b03516d9)) - Add RISC-V 64-bit wheels ([#&#8203;137](https://github.com/MagicStack/httptools/issues/137)) (by [@&#8203;gounthar](https://github.com/gounthar) in [`1c6946d`](https://github.com/MagicStack/httptools/commit/1c6946dc)) - Add Windows ARM64 support in CI ([#&#8203;141](https://github.com/MagicStack/httptools/issues/141)) (by [@&#8203;Harishmcw](https://github.com/Harishmcw) in [`5a2bb07`](https://github.com/MagicStack/httptools/commit/5a2bb07c)) - Build PPC64LE wheels ([#&#8203;143](https://github.com/MagicStack/httptools/issues/143)) (by [@&#8203;Sunidhi-Gaonkar1](https://github.com/Sunidhi-Gaonkar1) in [`ff08b99`](https://github.com/MagicStack/httptools/commit/ff08b99d)) - Modernize test and release workflows ([#&#8203;152](https://github.com/MagicStack/httptools/issues/152)) (by [@&#8203;elprans](https://github.com/elprans) in [`d80e26f`](https://github.com/MagicStack/httptools/commit/d80e26fe)) </details> <details> <summary>pypa/pip (pip)</summary> ### [`v26.2.2`](https://github.com/pypa/pip/compare/26.2.1...26.2.2) [Compare Source](https://github.com/pypa/pip/compare/26.2.1...26.2.2) </details> <details> <summary>pydantic/pydantic (pydantic)</summary> ### [`v2.14.1`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v250-2023-11-13) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.14.0...v2.14.1) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.5.0) The code released in v2.5.0 is functionally identical to that of v2.5.0b1. ##### What's Changed ##### Packaging - Update pydantic-core from 2.10.1 to 2.14.1, significant changes from these updates are described below, full changelog [here](https://github.com/pydantic/pydantic-core/compare/v2.10.1...v2.14.1) - Update to `pyright==1.1.335` by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;8075](https://github.com/pydantic/pydantic/pull/8075) ##### New Features - Allow plugins to catch non `ValidationError` errors by [@&#8203;adriangb](https://github.com/adriangb) in [#&#8203;7806](https://github.com/pydantic/pydantic/pull/7806) - Support `__doc__` argument in `create_model()` by [@&#8203;chris-spann](https://github.com/chris-spann) in [#&#8203;7863](https://github.com/pydantic/pydantic/pull/7863) - Expose `regex_engine` flag - meaning you can use with the Rust or Python regex libraries in constraints by [@&#8203;utkini](https://github.com/utkini) in [#&#8203;7768](https://github.com/pydantic/pydantic/pull/7768) - Save return type generated from type annotation in `ComputedFieldInfo` by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7889](https://github.com/pydantic/pydantic/pull/7889) - Adopting `ruff` formatter by [@&#8203;Luca-Blight](https://github.com/Luca-Blight) in [#&#8203;7930](https://github.com/pydantic/pydantic/pull/7930) - Added `validation_error_cause` to config by [@&#8203;zakstucke](https://github.com/zakstucke) in [#&#8203;7626](https://github.com/pydantic/pydantic/pull/7626) - Make path of the item to validate available in plugin by [@&#8203;hramezani](https://github.com/hramezani) in [#&#8203;7861](https://github.com/pydantic/pydantic/pull/7861) - Add `CallableDiscriminator` and `Tag` by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;7983](https://github.com/pydantic/pydantic/pull/7983) - `CallableDiscriminator` renamed to `Discriminator` by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;8047](https://github.com/pydantic/pydantic/pull/8047) - Make union case tags affect union error messages by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;8001](https://github.com/pydantic/pydantic/pull/8001) - Add `examples` and `json_schema_extra` to `@computed_field` by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;8013](https://github.com/pydantic/pydantic/pull/8013) - Add `JsonValue` type by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;7998](https://github.com/pydantic/pydantic/pull/7998) - Allow `str` as argument to `Discriminator` by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;8047](https://github.com/pydantic/pydantic/pull/8047) - Add `SchemaSerializer.__reduce__` method to enable pickle serialization by [@&#8203;edoakes](https://github.com/edoakes) in [pydantic/pydantic-core#1006](https://github.com/pydantic/pydantic-core/pull/1006) ##### Changes - **Significant Change:** replace `ultra_strict` with new smart union implementation, the way unions are validated has changed significantly to improve performance and correctness, we have worked hard to absolutely minimise the number of cases where behaviour has changed, see the PR for details - by [@&#8203;davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#867](https://github.com/pydantic/pydantic-core/pull/867) - Add support for instance method reassignment when `extra='allow'` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7683](https://github.com/pydantic/pydantic/pull/7683) - Support JSON schema generation for `Enum` types with no cases by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7927](https://github.com/pydantic/pydantic/pull/7927) - Warn if a class inherits from `Generic` before `BaseModel` by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7891](https://github.com/pydantic/pydantic/pull/7891) ##### Performance - New custom JSON parser, `jiter` by [@&#8203;samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#974](https://github.com/pydantic/pydantic-core/pull/974) - PGO build for MacOS M1 by [@&#8203;samuelcolvin](https://github.com/samuelcolvin) in [pydantic/pydantic-core#1063](https://github.com/pydantic/pydantic-core/pull/1063) - Use `__getattr__` for all package imports, improve import time by [@&#8203;samuelcolvin](https://github.com/samuelcolvin) in [#&#8203;7947](https://github.com/pydantic/pydantic/pull/7947) ##### Fixes - Fix `mypy` issue with subclasses of `RootModel` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7677](https://github.com/pydantic/pydantic/pull/7677) - Properly rebuild the `FieldInfo` when a forward ref gets evaluated by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;7698](https://github.com/pydantic/pydantic/pull/7698) - Fix failure to load `SecretStr` from JSON (regression in v2.4) by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7729](https://github.com/pydantic/pydantic/pull/7729) - Fix `defer_build` behavior with `TypeAdapter` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7736](https://github.com/pydantic/pydantic/pull/7736) - Improve compatibility with legacy `mypy` versions by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;7742](https://github.com/pydantic/pydantic/pull/7742) - Fix: update `TypeVar` handling when default is not set by [@&#8203;pmmmwh](https://github.com/pmmmwh) in [#&#8203;7719](https://github.com/pydantic/pydantic/pull/7719) - Support specification of `strict` on `Enum` type fields by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7761](https://github.com/pydantic/pydantic/pull/7761) - Wrap `weakref.ref` instead of subclassing to fix `cloudpickle` serialization by [@&#8203;edoakes](https://github.com/edoakes) in [#&#8203;7780](https://github.com/pydantic/pydantic/pull/7780) - Keep values of private attributes set within `model_post_init` in subclasses by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7775](https://github.com/pydantic/pydantic/pull/7775) - Add more specific type for non-callable `json_schema_extra` by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7803](https://github.com/pydantic/pydantic/pull/7803) - Raise an error when deleting frozen (model) fields by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7800](https://github.com/pydantic/pydantic/pull/7800) - Fix schema sorting bug with default values by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7817](https://github.com/pydantic/pydantic/pull/7817) - Use generated alias for aliases that are not specified otherwise by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7802](https://github.com/pydantic/pydantic/pull/7802) - Support `strict` specification for `UUID` types by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7865](https://github.com/pydantic/pydantic/pull/7865) - JSON schema: fix extra parameter handling by [@&#8203;me-and](https://github.com/me-and) in [#&#8203;7810](https://github.com/pydantic/pydantic/pull/7810) - Fix: support `pydantic.Field(kw_only=True)` with inherited dataclasses by [@&#8203;PrettyWood](https://github.com/PrettyWood) in [#&#8203;7827](https://github.com/pydantic/pydantic/pull/7827) - Support `validate_call` decorator for methods in classes with `__slots__` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7883](https://github.com/pydantic/pydantic/pull/7883) - Fix pydantic dataclass problem with `dataclasses.field` default by [@&#8203;hramezani](https://github.com/hramezani) in [#&#8203;7898](https://github.com/pydantic/pydantic/pull/7898) - Fix schema generation for generics with union type bounds by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7899](https://github.com/pydantic/pydantic/pull/7899) - Fix version for `importlib_metadata` on python 3.7 by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7904](https://github.com/pydantic/pydantic/pull/7904) - Support `|` operator (Union) in PydanticRecursiveRef by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;7892](https://github.com/pydantic/pydantic/pull/7892) - Fix `display_as_type` for `TypeAliasType` in python 3.12 by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;7929](https://github.com/pydantic/pydantic/pull/7929) - Add support for `NotRequired` generics in `TypedDict` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [#&#8203;7932](https://github.com/pydantic/pydantic/pull/7932) - Make generic `TypeAliasType` specifications produce different schema definitions by [@&#8203;alexdrydew](https://github.com/alexdrydew) in [#&#8203;7893](https://github.com/pydantic/pydantic/pull/7893) - Added fix for signature of inherited dataclass by [@&#8203;howsunjow](https://github.com/howsunjow) in [#&#8203;7925](https://github.com/pydantic/pydantic/pull/7925) - Make the model name generation more robust in JSON schema by [@&#8203;joakimnordling](https://github.com/joakimnordling) in [#&#8203;7881](https://github.com/pydantic/pydantic/pull/7881) - Fix plurals in validation error messages (in tests) by [@&#8203;Iipin](https://github.com/Iipin) in [#&#8203;7972](https://github.com/pydantic/pydantic/pull/7972) - `PrivateAttr` is passed from `Annotated` default position by [@&#8203;tabassco](https://github.com/tabassco) in [#&#8203;8004](https://github.com/pydantic/pydantic/pull/8004) - Don't decode bytes (which may not be UTF8) when displaying SecretBytes by [@&#8203;alexmojaki](https://github.com/alexmojaki) in [#&#8203;8012](https://github.com/pydantic/pydantic/pull/8012) - Use `classmethod` instead of `classmethod[Any, Any, Any]` by [@&#8203;Mr-Pepe](https://github.com/Mr-Pepe) in [#&#8203;7979](https://github.com/pydantic/pydantic/pull/7979) - Clearer error on invalid Plugin by [@&#8203;samuelcolvin](https://github.com/samuelcolvin) in [#&#8203;8023](https://github.com/pydantic/pydantic/pull/8023) - Correct pydantic dataclasses import by [@&#8203;samuelcolvin](https://github.com/samuelcolvin) in [#&#8203;8027](https://github.com/pydantic/pydantic/pull/8027) - Fix misbehavior for models referencing redefined type aliases by [@&#8203;dmontagu](https://github.com/dmontagu) in [#&#8203;8050](https://github.com/pydantic/pydantic/pull/8050) - Fix `Optional` field with `validate_default` only performing one field validation by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1002](https://github.com/pydantic/pydantic-core/pull/1002) - Fix `definition-ref` bug with `Dict` keys by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1014](https://github.com/pydantic/pydantic-core/pull/1014) - Fix bug allowing validation of `bool` types with `coerce_numbers_to_str=True` by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1017](https://github.com/pydantic/pydantic-core/pull/1017) - Don't accept `NaN` in float and decimal constraints by [@&#8203;davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1037](https://github.com/pydantic/pydantic-core/pull/1037) - Add `lax_str` and `lax_int` support for enum values not inherited from str/int by [@&#8203;michaelhly](https://github.com/michaelhly) in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) - Support subclasses in lists in `Union` of `List` types by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1039](https://github.com/pydantic/pydantic-core/pull/1039) - Allow validation against `max_digits` and `decimals` to pass if normalized or non-normalized input is valid by [@&#8203;sydney-runkle](https://github.com/sydney-runkle) in [pydantic/pydantic-core#1049](https://github.com/pydantic/pydantic-core/pull/1049) - Fix: proper pluralization in `ValidationError` messages by [@&#8203;Iipin](https://github.com/Iipin) in [pydantic/pydantic-core#1050](https://github.com/pydantic/pydantic-core/pull/1050) - Disallow the string `'-'` as `datetime` input by [@&#8203;davidhewitt](https://github.com/davidhewitt) in [pydantic/speedate#52](https://github.com/pydantic/speedate/pull/52) & [pydantic/pydantic-core#1060](https://github.com/pydantic/pydantic-core/pull/1060) - Fix: NaN and Inf float serialization by [@&#8203;davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1062](https://github.com/pydantic/pydantic-core/pull/1062) - Restore manylinux-compatible PGO builds by [@&#8203;davidhewitt](https://github.com/davidhewitt) in [pydantic/pydantic-core#1068](https://github.com/pydantic/pydantic-core/pull/1068) ##### New Contributors ##### `pydantic` - [@&#8203;schneebuzz](https://github.com/schneebuzz) made their first contribution in [#&#8203;7699](https://github.com/pydantic/pydantic/pull/7699) - [@&#8203;edoakes](https://github.com/edoakes) made their first contribution in [#&#8203;7780](https://github.com/pydantic/pydantic/pull/7780) - [@&#8203;alexmojaki](https://github.com/alexmojaki) made their first contribution in [#&#8203;7775](https://github.com/pydantic/pydantic/pull/7775) - [@&#8203;NickG123](https://github.com/NickG123) made their first contribution in [#&#8203;7751](https://github.com/pydantic/pydantic/pull/7751) - [@&#8203;gowthamgts](https://github.com/gowthamgts) made their first contribution in [#&#8203;7830](https://github.com/pydantic/pydantic/pull/7830) - [@&#8203;jamesbraza](https://github.com/jamesbraza) made their first contribution in [#&#8203;7848](https://github.com/pydantic/pydantic/pull/7848) - [@&#8203;laundmo](https://github.com/laundmo) made their first contribution in [#&#8203;7850](https://github.com/pydantic/pydantic/pull/7850) - [@&#8203;rahmatnazali](https://github.com/rahmatnazali) made their first contribution in [#&#8203;7870](https://github.com/pydantic/pydantic/pull/7870) - [@&#8203;waterfountain1996](https://github.com/waterfountain1996) made their first contribution in [#&#8203;7878](https://github.com/pydantic/pydantic/pull/7878) - [@&#8203;chris-spann](https://github.com/chris-spann) made their first contribution in [#&#8203;7863](https://github.com/pydantic/pydantic/pull/7863) - [@&#8203;me-and](https://github.com/me-and) made their first contribution in [#&#8203;7810](https://github.com/pydantic/pydantic/pull/7810) - [@&#8203;utkini](https://github.com/utkini) made their first contribution in [#&#8203;7768](https://github.com/pydantic/pydantic/pull/7768) - [@&#8203;bn-l](https://github.com/bn-l) made their first contribution in [#&#8203;7744](https://github.com/pydantic/pydantic/pull/7744) - [@&#8203;alexdrydew](https://github.com/alexdrydew) made their first contribution in [#&#8203;7893](https://github.com/pydantic/pydantic/pull/7893) - [@&#8203;Luca-Blight](https://github.com/Luca-Blight) made their first contribution in [#&#8203;7930](https://github.com/pydantic/pydantic/pull/7930) - [@&#8203;howsunjow](https://github.com/howsunjow) made their first contribution in [#&#8203;7925](https://github.com/pydantic/pydantic/pull/7925) - [@&#8203;joakimnordling](https://github.com/joakimnordling) made their first contribution in [#&#8203;7881](https://github.com/pydantic/pydantic/pull/7881) - [@&#8203;icfly2](https://github.com/icfly2) made their first contribution in [#&#8203;7976](https://github.com/pydantic/pydantic/pull/7976) - [@&#8203;Yummy-Yums](https://github.com/Yummy-Yums) made their first contribution in [#&#8203;8003](https://github.com/pydantic/pydantic/pull/8003) - [@&#8203;Iipin](https://github.com/Iipin) made their first contribution in [#&#8203;7972](https://github.com/pydantic/pydantic/pull/7972) - [@&#8203;tabassco](https://github.com/tabassco) made their first contribution in [#&#8203;8004](https://github.com/pydantic/pydantic/pull/8004) - [@&#8203;Mr-Pepe](https://github.com/Mr-Pepe) made their first contribution in [#&#8203;7979](https://github.com/pydantic/pydantic/pull/7979) - [@&#8203;0x00cl](https://github.com/0x00cl) made their first contribution in [#&#8203;8010](https://github.com/pydantic/pydantic/pull/8010) - [@&#8203;barraponto](https://github.com/barraponto) made their first contribution in [#&#8203;8032](https://github.com/pydantic/pydantic/pull/8032) ##### `pydantic-core` - [@&#8203;sisp](https://github.com/sisp) made their first contribution in [pydantic/pydantic-core#995](https://github.com/pydantic/pydantic-core/pull/995) - [@&#8203;michaelhly](https://github.com/michaelhly) made their first contribution in [pydantic/pydantic-core#1015](https://github.com/pydantic/pydantic-core/pull/1015) ### [`v2.14.0`](https://github.com/pydantic/pydantic/blob/HEAD/HISTORY.md#v2140-2026-10-08) [Compare Source](https://github.com/pydantic/pydantic/compare/v2.13.5...v2.14.0) [GitHub release](https://github.com/pydantic/pydantic/releases/tag/v2.14.0) ##### What's Changed The highlights of the v2.14 release are available in the [blog post](https://pydantic.dev/articles/pydantic-v2-14-release). Several minor changes (considered non-breaking changes according to our [versioning policy](https://pydantic.dev/docs/validation/2.14/get-started/version-policy/#pydantic-v2)) are also included in this release. Make sure to look into them before upgrading. This release drops support for Python 3.9 and adds support for Python 3.15. ##### New Features - Add support for `multiple_of` constraint in `fraction` and `timedelta` core schemas by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13873](https://github.com/pydantic/pydantic/pull/13873) - Add `__namespace__` parameter to `create_model()` by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13895](https://github.com/pydantic/pydantic/pull/13895) ##### Changes - Add an `ordered-dict` core schema by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13796](https://github.com/pydantic/pydantic/pull/13796) - Add a `counter` core schema by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13824](https://github.com/pydantic/pydantic/pull/13824) - Do not mutate `model_config` attribute by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13825](https://github.com/pydantic/pydantic/pull/13825) - Reject newlines in `NameEmail` validation by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13897](https://github.com/pydantic/pydantic/pull/13897) ##### Fixes - Call enum constructors in both validation modes by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13792](https://github.com/pydantic/pydantic/pull/13792) - Fix documentation examples not raising and remove unused `string_sub_type` unused error code by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13821](https://github.com/pydantic/pydantic/pull/13821) - Catch `OverflowError` during `ByteSize` validation by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13850](https://github.com/pydantic/pydantic/pull/13850) - Require `multiple_of` constraints to be positive by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13862](https://github.com/pydantic/pydantic/pull/13862) - Always pop field name and model type stacks during schema generation by [@&#8203;saquibjawedbit](https://github.com/saquibjawedbit) in [#&#8203;13859](https://github.com/pydantic/pydantic/pull/13859) - Handle `TypeError` gracefully during docstring extraction by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13874](https://github.com/pydantic/pydantic/pull/13874) - Fix config propagation of stdlib dataclasses and `TypedDict`s in JSON Schema by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13891](https://github.com/pydantic/pydantic/pull/13891) - Don't apply `ser_json_timedelta` to all datetime types in serialization inference by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13892](https://github.com/pydantic/pydantic/pull/13892) - Encode JSON Schema defaults with a consistent configuration by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13893](https://github.com/pydantic/pydantic/pull/13893) - Propagate `init` and `kw_only=False` from `Field()` to stdlib dataclass fields by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13898](https://github.com/pydantic/pydantic/pull/13898) - Respect propagated extra config in the JSON Schema of stdlib dataclasses by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13899](https://github.com/pydantic/pydantic/pull/13899) - Handle OS errors during `ZoneInfo` validation by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13912](https://github.com/pydantic/pydantic/pull/13912) - Handle exceptions during `Decimal` validation by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13940](https://github.com/pydantic/pydantic/pull/13940) - Rebuild incomplete types during serialization inference by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13922](https://github.com/pydantic/pydantic/pull/13922) - Reject large exponents in `Fraction` validation by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13944](https://github.com/pydantic/pydantic/pull/13944) - Avoid validating URL prefix multiple times in multi host URLs by [@&#8203;Viicos](https://github.com/Viicos) in [#&#8203;13945](https://github.com/pydantic/pydantic/pull/13945) ##### New Contributors - [@&#8203;saquibjawedbit](https://github.com/saquibjawedbit) made their first contribution in [#&#8203;13859](https://github.com/pydantic/pydantic/pull/13859) </details> <details> <summary>pydantic/pydantic-settings (pydantic-settings)</summary> ### [`v2.16.1`](https://github.com/pydantic/pydantic-settings/releases/tag/v2.16.1) [Compare Source](https://github.com/pydantic/pydantic-settings/compare/v2.16.0...v2.16.1) #### Highlights This patch release fixes two CLI regressions introduced in 2.16.0. ##### Bug fixes **CLI** - Fixed-length tuple positionals such as `CliPositionalArg[tuple[int, int]]` and `NamedTuple`s are single-valued again ([#&#8203;1069](https://github.com/pydantic/pydantic-settings/pull/1069)). Since 2.16.0 they were treated as variadic, so a CLI either refused to start with a `SettingsError` or put the wrong argument into the tuple. Variable-length tuples (`tuple[int, ...]` and bare `Tuple`) are still variadic. - A field typed as an alias of a list of dicts, e.g. `type ListOfDict = list[dict[str, int]]`, accepts a JSON list again ([#&#8203;1049](https://github.com/pydantic/pydantic-settings/pull/1049)). Since 2.16.0, `--xx '[{"a":1},{"b":2}]'` was merged into the single dict `{"a": 1, "b": 2}` and failed validation. <details> <summary><b>All changes</b> (including dependency bumps and internal maintenance)</summary> #### What's Changed * Harden CI by @&#8203;Viicos in https://github.com/pydantic/pydantic-settings/pull/1044 * Keep list of dicts CLI values as lists by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1049 * Keep fixed-length tuple CLI positionals single-valued by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1069 * Prepare release 2.16.1 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1087 * build(deps): bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/1056 **Full Changelog**: <https://github.com/pydantic/pydantic-settings/compare/v2.16.0...v2.16.1> </details> ### [`v2.16.0`](https://github.com/pydantic/pydantic-settings/releases/tag/v2.16.0) [Compare Source](https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0) #### Highlights ##### Breaking changes and behavior changes - **Python 3.10 is no longer supported** ([#&#8203;1003](https://github.com/pydantic/pydantic-settings/pull/1003)). pydantic-settings now requires Python 3.11+, since 3.10 reaches end of life this month. The `tomli` fallback is gone in favor of stdlib `tomllib`; the `toml` extra is kept as an empty extra so `pip install pydantic-settings[toml]` keeps working. - **`python-dotenv>=1.2.2` is now required** ([#&#8203;971](https://github.com/pydantic/pydantic-settings/pull/971)) to pick up the fix for CVE-2026-28684. - **Aliases are ignored in every source when `validate_by_alias=False`** ([#&#8203;1033](https://github.com/pydantic/pydantic-settings/pull/1033)). Env vars, secrets, CLI flags and defaults now use only field names, matching pydantic. An env var named after the alias is now ignored instead of raising `extra_forbidden`, and the CLI exposes `--apple` rather than `--pomo`. - **`validation_alias` takes precedence over `alias`** ([#&#8203;1038](https://github.com/pydantic/pydantic-settings/pull/1038)). When the two differ, values from JSON/YAML/TOML files and the CLI were silently ignored; they now load. CLI help lists the `validation_alias` flag first, and `CliApp.serialize` emits it. - **CLI case-insensitivity only lowercases registered options** ([#&#8203;1036](https://github.com/pydantic/pydantic-settings/pull/1036)). With `case_sensitive=False`, args after `--` and those captured by `CliUnknownArgs` keep their case (`-Xmx4G` no longer becomes `-xmx4g`). Unrecognized options are now reported as typed (`--NOPE` instead of `--nope`). - **JSON and YAML config files are read as UTF-8 by default** ([#&#8203;955](https://github.com/pydantic/pydantic-settings/pull/955)) instead of the locale encoding, completing the secrets-file fix from 2.15.0. `json_file_encoding`/`yaml_file_encoding` still override it. - **Discriminated union defaults are partially updated again** ([#&#8203;997](https://github.com/pydantic/pydantic-settings/pull/997)). This reverts the 2.15.0 regression with `nested_model_default_partial_update=True`: the default is only dropped when the incoming value selects a *different* union member. ##### New features - **Python 3.15 and pydantic 2.14 support** ([#&#8203;1026](https://github.com/pydantic/pydantic-settings/pull/1026), [#&#8203;1029](https://github.com/pydantic/pydantic-settings/pull/1029), [#&#8203;1022](https://github.com/pydantic/pydantic-settings/pull/1022)). pydantic 2.14 broke `CliApp.run` and `validate_by_alias=False` handling; both are fixed. - **Cached settings instances** via `Settings.settings_cached()` and `Settings.settings_clear_cache()` ([#&#8203;952](https://github.com/pydantic/pydantic-settings/pull/952)). These give you a process-local singleton per settings class without hand-rolling `lru_cache` wrappers. Calling the class directly still builds a fresh instance. - **AWS Systems Manager Parameter Store source** — `AWSSystemsManagerSettingsSource` ([#&#8203;941](https://github.com/pydantic/pydantic-settings/pull/941)). It recursively reads every parameter under an `ssm_path`, with `/` mapping onto nested models. Install it with the new `aws-systems-manager` extra. - **`env_file_depth`** ([#&#8203;940](https://github.com/pydantic/pydantic-settings/pull/940)) lets a relative `env_file` be found in parent directories, mirroring `pyproject_toml_depth`. This is useful when scripts run from a subdirectory of a monorepo. It defaults to `0`, which keeps the current behavior. - **`CliVariadicArg` for named variadic options** ([#&#8203;949](https://github.com/pydantic/pydantic-settings/pull/949), [#&#8203;958](https://github.com/pydantic/pydantic-settings/pull/958)). It accepts `--param a b c` in addition to repeated `--param a --param b`. Required fields need at least one value. ##### Bug fixes **CLI** - `CliApp.serialize` output now round-trips through `CliApp.run` for enums, tuples, dates and `Decimal`s ([#&#8203;988](https://github.com/pydantic/pydantic-settings/pull/988)), explicit `None` values ([#&#8203;981](https://github.com/pydantic/pydantic-settings/pull/981)), empty containers ([#&#8203;1008](https://github.com/pydantic/pydantic-settings/pull/1008)), `CliVariadicArg` values ([#&#8203;976](https://github.com/pydantic/pydantic-settings/pull/976)) and populated `CliUnknownArgs` fields, which previously raised `IndexError` ([#&#8203;992](https://github.com/pydantic/pydantic-settings/pull/992)). - Empty JSON arrays (`--items []`) now give an empty list instead of `['']` ([#&#8203;994](https://github.com/pydantic/pydantic-settings/pull/994)). - Tuples, `frozenset`, `MutableSequence` and other collection subtypes are now treated as repeatable/variadic options ([#&#8203;972](https://github.com/pydantic/pydantic-settings/pull/972)), and so are named collection type aliases such as `TypeAliasType('Addrs', list[IPvAnyAddress])` ([#&#8203;1032](https://github.com/pydantic/pydantic-settings/pull/1032)). - `cli_exit_on_error=False` is now honored in `CliSubCommand` parsers, which raise `SettingsError` instead of exiting ([#&#8203;977](https://github.com/pydantic/pydantic-settings/pull/977)). - `CliSubCommand` aliases keep their case with `case_sensitive=False` ([#&#8203;989](https://github.com/pydantic/pydantic-settings/pull/989)). - Each `CliUnknownArgs` field now receives only its own subcommand's leftover args ([#&#8203;1004](https://github.com/pydantic/pydantic-settings/pull/1004)). - `CliApp.format_help` no longer crashes when `cli_prefix` is set in `model_config` ([#&#8203;945](https://github.com/pydantic/pydantic-settings/pull/945)). **Type aliases and parsing** - Named union type aliases (`TypeAliasType('V', list[int] | str)`) now decode like their inline equivalents in env and dotenv sources, including under `Optional`, `Annotated` and custom validation aliases ([#&#8203;1006](https://github.com/pydantic/pydantic-settings/pull/1006), [#&#8203;1030](https://github.com/pydantic/pydantic-settings/pull/1030), [#&#8203;1041](https://github.com/pydantic/pydantic-settings/pull/1041)). - Resolving a named `Annotated` type alias no longer mutates shared `FieldInfo` metadata, which made validators run twice on subclasses or after `model_rebuild()` ([#&#8203;979](https://github.com/pydantic/pydantic-settings/pull/979)). - A bare single-segment `AliasPath('SOME_KEY')` no longer tries to JSON-decode plain string values ([#&#8203;980](https://github.com/pydantic/pydantic-settings/pull/980)). - `collections.abc.Set`/`MutableSet`/`typing.AbstractSet` fields now JSON-decode env values ([#&#8203;973](https://github.com/pydantic/pydantic-settings/pull/973)). - A bare `typing.Dict` field with `env_nested_delimiter` no longer raises `IndexError`, which was a regression in 2.13.0 ([#&#8203;1009](https://github.com/pydantic/pydantic-settings/pull/1009)). - Case-insensitive matching now works for nested pydantic dataclasses ([#&#8203;1010](https://github.com/pydantic/pydantic-settings/pull/1010)). **Dotenv, secrets and config files** - With `extra='allow'`, a non-lowercase `env_prefix` is now stripped from dotenv extras ([#&#8203;959](https://github.com/pydantic/pydantic-settings/pull/959), [#&#8203;968](https://github.com/pydantic/pydantic-settings/pull/968)). - `secrets_case_sensitive=True` is now honored on Windows ([#&#8203;1001](https://github.com/pydantic/pydantic-settings/pull/1001)). - An empty JSON config file is treated as an empty mapping instead of crashing ([#&#8203;947](https://github.com/pydantic/pydantic-settings/pull/947)), matching YAML and TOML. - TOML table headers: `~` paths are now expanded when checking that the file exists ([#&#8203;1034](https://github.com/pydantic/pydantic-settings/pull/1034)), and an explicit `toml_table_header=()` now overrides the model config to read the file root ([#&#8203;1027](https://github.com/pydantic/pydantic-settings/pull/1027)). **Cloud sources** - Azure Key Vault and GCP Secret Manager now honor `env_parse_none_str` ([#&#8203;1019](https://github.com/pydantic/pydantic-settings/pull/1019), [#&#8203;1040](https://github.com/pydantic/pydantic-settings/pull/1040)). - Azure Key Vault: `dash_to_underscore=True` now works for nested model fields ([#&#8203;1025](https://github.com/pydantic/pydantic-settings/pull/1025)). - `NestedSecretsSettingsSource` now validates its specific constructor arguments ([#&#8203;975](https://github.com/pydantic/pydantic-settings/pull/975)). - `DotenvFiltering` is exported from `pydantic_settings.sources.types` ([#&#8203;944](https://github.com/pydantic/pydantic-settings/pull/944)). ##### Documentation - Document that runtime validation arguments (`strict`, `extra`, `context`) passed to `model_validate()` are not applied to `BaseSettings`, and give a workaround ([#&#8203;1017](https://github.com/pydantic/pydantic-settings/pull/1017)). - Explain why `extra='forbid'` doesn't reject misspelled top-level env vars ([#&#8203;986](https://github.com/pydantic/pydantic-settings/pull/986)). - Clarify alias plus nested model env lookup with `populate_by_name` ([#&#8203;933](https://github.com/pydantic/pydantic-settings/pull/933)), and add a nested model example for `env_prefix_target` ([#&#8203;953](https://github.com/pydantic/pydantic-settings/pull/953)). - Fix assorted typos ([#&#8203;942](https://github.com/pydantic/pydantic-settings/pull/942), [#&#8203;964](https://github.com/pydantic/pydantic-settings/pull/964)). <details> <summary><b>All changes</b> (including dependency bumps and internal maintenance)</summary> #### What's Changed * Bump boto3 from 1.43.60 to 1.43.66 in the python-packages group by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/936 * docs: clarify alias + nested model env lookup with populate_by_name by @&#8203;pranjalm37 in https://github.com/pydantic/pydantic-settings/pull/933 * lint: enable flake8-bugbear and fix the issues it found by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/931 * Bump the python-packages group with 6 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/943 * docs: improve ENV_FILE_SENTINEL comment phrasing in sources/types.py by @&#8203;aoright in https://github.com/pydantic/pydantic-settings/pull/942 * fix(types): include DotenvFiltering in __all__ in sources.types by @&#8203;aoright in https://github.com/pydantic/pydantic-settings/pull/944 * Add env_file_depth for parent directory env file lookup by @&#8203;dmi03 in https://github.com/pydantic/pydantic-settings/pull/940 * Add an AWS Systems Manager Parameter Store settings source by @&#8203;ChrisJr404 in https://github.com/pydantic/pydantic-settings/pull/941 * fix: use self.cli_prefix instead of cli_prefix in CliSettingsSource constructor by @&#8203;RomainL972 in https://github.com/pydantic/pydantic-settings/pull/945 * Bump the python-packages group with 6 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/948 * fix: treat empty JSON config file as empty mapping instead of crashing by @&#8203;sneha4175 in https://github.com/pydantic/pydantic-settings/pull/947 * Expand ruff rule selection by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/950 * Enable ruff's flake8-return (RET) rules by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/951 * docs: add nested model alias example for env_prefix_target by @&#8203;MohammedAlkindi in https://github.com/pydantic/pydantic-settings/pull/953 * Add cached settings instances by @&#8203;tiangolo in https://github.com/pydantic/pydantic-settings/pull/952 * Bump the github-actions group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/954 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/957 * Add CliVariadicArg for named variadic CLI options by @&#8203;gyanu2507 in https://github.com/pydantic/pydantic-settings/pull/949 * Fix CliVariadicArg empty-value handling for named options by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/958 * fix: read JSON and YAML config as UTF-8, not the locale encoding by @&#8203;MohammedAlkindi in https://github.com/pydantic/pydantic-settings/pull/955 * Reach 100% test coverage by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/963 * docs: fix three small wording/typo errors by @&#8203;simpleqt in https://github.com/pydantic/pydantic-settings/pull/964 * fix: strip a case-normalized env_prefix from dotenv extras by @&#8203;MohammedAlkindi in https://github.com/pydantic/pydantic-settings/pull/959 * fix: slice the case-normalized prefix in dotenv match_prefix by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/968 * Bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/966 * fix: address CVE-2026-28684 in python-dotenv dependency by @&#8203;jmartens in https://github.com/pydantic/pydantic-settings/pull/971 * build(deps): bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/978 * Verify `NestedSecretsSettingsSource` specific arguments by @&#8203;makukha in https://github.com/pydantic/pydantic-settings/pull/975 * Fix abstract Set annotations not being treated as complex by @&#8203;mmdverse in https://github.com/pydantic/pydantic-settings/pull/973 * Fix CLI append-action detection for collection subtypes by @&#8203;mmdverse in https://github.com/pydantic/pydantic-settings/pull/972 * Honor cli_exit_on_error=False in CliSubCommand parsers by @&#8203;glaziermag in https://github.com/pydantic/pydantic-settings/pull/977 * Preserve CliVariadicArg values in CliApp.serialize argparse/env styles by @&#8203;glaziermag in https://github.com/pydantic/pydantic-settings/pull/976 * Avoid mutating field metadata when resolving type aliases by @&#8203;jakezwang in https://github.com/pydantic/pydantic-settings/pull/979 * fix: bare AliasPath complexity keyed off name length, not path length by @&#8203;ishan-1010 in https://github.com/pydantic/pydantic-settings/pull/980 * docs: clarify extra validation for environment variables by @&#8203;hulkbig in https://github.com/pydantic/pydantic-settings/pull/986 * build(deps): bump the python-packages group with 2 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/990 * Preserve explicit None values in CLI serialization by @&#8203;mtcd001-tech in https://github.com/pydantic/pydantic-settings/pull/981 * Make `CliApp.serialize` output parseable for enum and non-JSON values by @&#8203;SulimanAbdulrazzaq in https://github.com/pydantic/pydantic-settings/pull/988 * Preserve CliSubCommand alias case with case_sensitive=False by @&#8203;glaziermag in https://github.com/pydantic/pydantic-settings/pull/989 * Fix Path.is_mount type-checking error on win32 platform by @&#8203;truecallerabreham in https://github.com/pydantic/pydantic-settings/pull/982 * build(deps): bump astral-sh/setup-uv from 10.0.1 to 10.2.0 in the github-actions group by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/998 * build(deps): bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/999 * Fix `CliApp.serialize` for models with `CliUnknownArgs` fields by @&#8203;truecallerabreham in https://github.com/pydantic/pydantic-settings/pull/992 * Honor `secrets_case_sensitive` on Windows by overriding `_load_env_vars` by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1001 * Fix empty JSON arrays in CLI list arguments by @&#8203;hansu650 in https://github.com/pydantic/pydantic-settings/pull/994 * Bump `samuelcolvin/check-python-version` action to v5.1 by @&#8203;Viicos in https://github.com/pydantic/pydantic-settings/pull/1014 * build(deps): bump the python-packages group with 7 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/1015 * Only skip partial updates for discriminated unions selecting another type by @&#8203;SammyTourani in https://github.com/pydantic/pydantic-settings/pull/997 * fix: handle bare typing.Dict in EnvSettingsSource.next_field (#&#8203;1007) by @&#8203;DawnofGenX in https://github.com/pydantic/pydantic-settings/pull/1009 * Apply case-insensitive field matching to nested pydantic dataclasses by @&#8203;sungbin1015 in https://github.com/pydantic/pydantic-settings/pull/1010 * Document that runtime validation arguments are not applied to BaseSettings by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1017 * Fix named union alias parsing in environment sources by @&#8203;hulkbig in https://github.com/pydantic/pydantic-settings/pull/1006 * Drop support for Python 3.10 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1003 * Add support for Python 3.15 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1026 * Give each CliUnknownArgs field only its own parser leftovers by @&#8203;fhgffy in https://github.com/pydantic/pydantic-settings/pull/1004 * Preserve empty containers in CLI serialization by @&#8203;fallintoplace in https://github.com/pydantic/pydantic-settings/pull/1008 * Honor env_parse_none_str for Azure Key Vault secrets by @&#8203;fhgffy in https://github.com/pydantic/pydantic-settings/pull/1019 * Fix nested Azure Key Vault dash translation by @&#8203;goudan789 in https://github.com/pydantic/pydantic-settings/pull/1025 * Support pydantic 2.14 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1029 * Read field names when `validate_by_alias=False` on pydantic 2.14 by @&#8203;maharanay22 in https://github.com/pydantic/pydantic-settings/pull/1022 * Ignore aliases in every source when `validate_by_alias=False` by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1033 * Honor explicit empty TOML table header overrides by @&#8203;xiehuanyi in https://github.com/pydantic/pydantic-settings/pull/1027 * Fix CLI parsing for named collection type aliases by @&#8203;JackyHsu-X in https://github.com/pydantic/pydantic-settings/pull/1032 * Fix JSON decoding for optional named union aliases by @&#8203;hulkbig in https://github.com/pydantic/pydantic-settings/pull/1030 * Decode optional Annotated named union aliases by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1041 * Expand home paths when checking TOML table headers by @&#8203;JunaidAhamed-7777 in https://github.com/pydantic/pydantic-settings/pull/1034 * Fix config file and CLI values being ignored when alias differs from validation_alias by @&#8203;hzmsh in https://github.com/pydantic/pydantic-settings/pull/1038 * Honor env_parse_none_str for GCP Secret Manager by @&#8203;Ganesh1729-ui in https://github.com/pydantic/pydantic-settings/pull/1040 * Simplify alias resolution branch and test alias with AliasChoices/AliasPath by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1042 * Keep case of non-option CLI args when case_sensitive=False by @&#8203;hzmsh in https://github.com/pydantic/pydantic-settings/pull/1036 * Prepare release 2.16.0 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/1043 #### New Contributors * @&#8203;pranjalm37 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/933 * @&#8203;aoright made their first contribution in https://github.com/pydantic/pydantic-settings/pull/942 * @&#8203;dmi03 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/940 * @&#8203;ChrisJr404 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/941 * @&#8203;RomainL972 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/945 * @&#8203;sneha4175 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/947 * @&#8203;MohammedAlkindi made their first contribution in https://github.com/pydantic/pydantic-settings/pull/953 * @&#8203;tiangolo made their first contribution in https://github.com/pydantic/pydantic-settings/pull/952 * @&#8203;gyanu2507 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/949 * @&#8203;simpleqt made their first contribution in https://github.com/pydantic/pydantic-settings/pull/964 * @&#8203;jmartens made their first contribution in https://github.com/pydantic/pydantic-settings/pull/971 * @&#8203;mmdverse made their first contribution in https://github.com/pydantic/pydantic-settings/pull/973 * @&#8203;glaziermag made their first contribution in https://github.com/pydantic/pydantic-settings/pull/977 * @&#8203;jakezwang made their first contribution in https://github.com/pydantic/pydantic-settings/pull/979 * @&#8203;ishan-1010 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/980 * @&#8203;hulkbig made their first contribution in https://github.com/pydantic/pydantic-settings/pull/986 * @&#8203;mtcd001-tech made their first contribution in https://github.com/pydantic/pydantic-settings/pull/981 * @&#8203;SulimanAbdulrazzaq made their first contribution in https://github.com/pydantic/pydantic-settings/pull/988 * @&#8203;truecallerabreham made their first contribution in https://github.com/pydantic/pydantic-settings/pull/982 * @&#8203;hansu650 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/994 * @&#8203;SammyTourani made their first contribution in https://github.com/pydantic/pydantic-settings/pull/997 * @&#8203;DawnofGenX made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1009 * @&#8203;sungbin1015 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1010 * @&#8203;fhgffy made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1004 * @&#8203;fallintoplace made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1008 * @&#8203;goudan789 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1025 * @&#8203;maharanay22 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1022 * @&#8203;xiehuanyi made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1027 * @&#8203;JackyHsu-X made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1032 * @&#8203;JunaidAhamed-7777 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1034 * @&#8203;hzmsh made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1038 * @&#8203;Ganesh1729-ui made their first contribution in https://github.com/pydantic/pydantic-settings/pull/1040 **Full Changelog**: <https://github.com/pydantic/pydantic-settings/compare/v2.15.0...v2.16.0> </details> </details> <details> <summary>python/cpython (python)</summary> ### [`v3.15.1`](https://github.com/python/cpython/compare/v3.15.0...v3.15.1) [Compare Source](https://github.com/python/cpython/compare/v3.15.0...v3.15.1) ### [`v3.15.0`](https://github.com/python/cpython/compare/v3.14.9...v3.15.0) [Compare Source](https://github.com/python/cpython/compare/v3.14.9...v3.15.0) ### [`v3.14.9`](https://github.com/python/cpython/compare/v3.14.8...v3.14.9) [Compare Source](https://github.com/python/cpython/compare/v3.14.8...v3.14.9) ### [`v3.14.8`](https://github.com/python/cpython/compare/v3.14.7...v3.14.8) [Compare Source](https://github.com/python/cpython/compare/v3.14.7...v3.14.8) </details> <details> <summary>astral-sh/ruff (ruff)</summary> ### [`v0.17.1`](https://github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0171) [Compare Source](https://github.com/astral-sh/ruff/compare/0.17.0...0.17.1) Released on 2026-10-15. ##### Preview features - \[`pycodestyle`] Don't treat `None`, `True`, or `False` as keywords (`E271`-`E274`) ([#&#8203;29322](https://github.com/astral-sh/ruff/pull/29322)) ##### Bug fixes - Fix dedent with multiple leading comments ([#&#8203;29382](https://github.com/astral-sh/ruff/pull/29382)) - \[`flake8-pyi`] Detect legacy positional-only parameters in `__new__` methods (`PYI063`) ([#&#8203;28502](https://github.com/astral-sh/ruff/pull/28502)) - \[`flake8-pyi`] Fix false positives on quoted annotations (`PYI036`) ([#&#8203;29274](https://github.com/astral-sh/ruff/pull/29274)) - \[`perflint`] Avoid invalid comprehension suggestions (`PERF401`, `PERF403`) ([#&#8203;29366](https://github.com/astral-sh/ruff/pull/29366)) ##### Rule changes - Treat more `collections` and `weakref` containers as mutable ([#&#8203;29213](https://github.com/astral-sh/ruff/pull/29213)) ##### Documentation - \[`flake8-import-conventions`] Update default and example `aliases` ([#&#8203;29333](https://github.com/astral-sh/ruff/pull/29333)) ##### Contributors - [@&#8203;fixfon](https://github.com/fixfon) - [@&#8203;mmaxjr](https://github.com/mmaxjr) - [@&#8203;joshuavetos](https://github.com/joshuavetos) - [@&#8203;nekomario28](https://github.com/nekomario28) - [@&#8203;ntBre](https://github.com/ntBre) - [@&#8203;shan3520](https://github.com/shan3520) ### [`v0.17.0`](https://github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0170) [Compare Source](https://github.com/astral-sh/ruff/compare/0.16.10...0.17.0) Released on 2026-10-09. The executables in our macOS and Windows release archives and `ruff` wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives. ##### Breaking changes - Update the default and latest Python versions for 3.15 ([#&#8203;28792](https://github.com/astral-sh/ruff/pull/28792)) Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through [`target-version`](https://docs.astral.sh/ruff/settings/#target-version) or [`requires-python`](https://docs.astral.sh/ruff/configuration/#inferring-the-python-version). When checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15 instead of 3.14. - Update the default rule set ([#&#8203;28786](https://github.com/astral-sh/ruff/pull/28786)) Several of the `flake8-datetimez` rules ([`DTZ001`](https://docs.astral.sh/ruff/rules/call-datetime-without-tzinfo/), [`DTZ005`](https://docs.astral.sh/ruff/rules/call-datetime-now-without-tzinfo/), [`DTZ006`](https://docs.astral.sh/ruff/rules/call-datetime-fromtimestamp/), [`DTZ007`](https://docs.astral.sh/ruff/rules/call-datetime-strptime-without-zone/), [`DTZ011`](https://docs.astral.sh/ruff/rules/call-date-today/), [`DTZ012`](https://docs.astral.sh/ruff/rules/call-date-fromtimestamp/), and [`DTZ901`](https://docs.astral.sh/ruff/rules/datetime-min-max/)) are no longer enabled by default, while [`undefined-local-with-nested-import-star-usage`](https://docs.astral.sh/ruff/rules/undefined-local-with-nested-import-star-usage/) (`F406`), which corresponds to a syntax error, is now enabled by default. - Update Rust crate quick-junit to 0.8.0 ([#&#8203;27295](https://github.com/astral-sh/ruff/pull/27295)) JUnit output now uses a `skipped` attribute instead of `disabled` on `<testsuite>` elements and includes a `skipped` attribute on the root `<testsuites>` element. - \[`flake8-import-conventions`] Add `datetime as dt` as a conventional alias (`ICN001`) ([#&#8203;28790](https://github.com/astral-sh/ruff/pull/28790)) - Support Unicode dummy variable names ([#&#8203;28722](https://github.com/astral-sh/ruff/pull/28722)) The default [`lint.dummy-variable-rgx`](https://docs.astral.sh/ruff/settings/#lint_dummy-variable-rgx) now recognizes underscore-prefixed Unicode names, such as `_次`, as dummy variables. - Update to Unicode 17 ([#&#8203;21229](https://github.com/astral-sh/ruff/pull/21229), [#&#8203;28784](https://github.com/astral-sh/ruff/pull/28784)) Ruff now uses Unicode 17 data for identifier normalization and named character escapes (`"\N{...}"`). - Always show unsafe and display-only fixes in the CLI ([#&#8203;27810](https://github.com/astral-sh/ruff/pull/27810)) The default `full` output format now shows unsafe fixes and suggestions requiring manual review, regardless of the [`unsafe-fixes`](https://docs.astral.sh/ruff/settings/#unsafe-fixes) setting. Actually applying unsafe fixes still requires explicit opt-in. - Remove the Python dependency from conda-forge builds ([conda-forge/ruff-feedstock#361](https://github.com/conda-forge/ruff-feedstock/pull/361)) The conda-forge build no longer depends on Python, now supports linux-riscv64, win-arm64, and linux-ppc64le platforms, and now includes shell completions. However, no longer depending on Python means that `python -m ruff` and `import ruff` will no longer work. Use `ruff` directly from `PATH` instead. PyPI installations and those from the standalone installer are unaffected. - Remove support for ruff-lsp ([#&#8203;28750](https://github.com/astral-sh/ruff/pull/28750)) Support for `ruff-lsp`, the legacy Python language server [deprecated in Ruff v0.9.5](https://github.com/astral-sh/ruff/releases/tag/0.9.5), has been removed. The Ruff VS Code extension now always uses the native language server; `ruff.nativeServer` is deprecated and ignored. See the [migration guide](https://docs.astral.sh/ruff/editors/migration/). ##### Stabilization The following rules have been stabilized and are no longer in preview: - [`lazy-import-mismatch`](https://docs.astral.sh/ruff/rules/lazy-import-mismatch) (`TID254`) - [`lazy-import-immediately-resolved`](https://docs.astral.sh/ruff/rules/lazy-import-immediately-resolved) (`TID255`) - [`os-path-commonprefix`](https://docs.astral.sh/ruff/rules/os-path-commonprefix) (`RUF071`) The following behaviors have been stabilized: - The formatter, [`unsorted-imports`](https://docs.astral.sh/ruff/rules/unsorted-imports/) (`I001`), [`line-too-long`](https://docs.astral.sh/ruff/rules/line-too-long/) (`E501`), and [`doc-line-too-long`](https://docs.astral.sh/ruff/rules/doc-line-too-long/) (`W505`) now consistently ignore trailing pragma comments when computing line length. This resolved several bugs involving interactions between these rules ([#&#8203;27313](https://github.com/astral-sh/ruff/pull/27313)) but may also cause existing imports to be reformatted and was thus classified as a breaking change. ##### Preview features - \[`flake8-bugbear`] Report the method name and a more precise range (`B005`) ([#&#8203;27050](https://github.com/astral-sh/ruff/pull/27050)) - \[`refurb`] Mark fix unsafe and move to `suspicious` (`FURB152`) ([#&#8203;28405](https://github.com/astral-sh/ruff/pull/28405)) - \[`ruff`] Allow docstrings in strict mode (`RUF067`) ([#&#8203;28679](https://github.com/astral-sh/ruff/pull/28679)) ##### Bug fixes - \[`flake8-builtins`] Expand checks in class scopes (`A001`) ([#&#8203;29076](https://github.com/astral-sh/ruff/pull/29076)) - \[`flake8-self`] Allow private access on `object.__new__(cls)` instances (`SLF001`) ([#&#8203;29001](https://github.com/astral-sh/ruff/pull/29001)) - \[`flake8-tidy-imports`] Skip `lazy-import-mismatch` in stubs (`TID254`) ([#&#8203;29095](https://github.com/astral-sh/ruff/pull/29095)) - \[`flake8-type-checking`] Add the notion of runtime-ambiguous references ([#&#8203;26508](https://github.com/astral-sh/ruff/pull/26508)) - \[`flake8-type-checking`] Never flag annotations in function scopes ([#&#8203;29183](https://github.com/astral-sh/ruff/pull/29183)) - \[`pyflakes`] Mark the fix as unsafe when it creates a docstring (`F541`) ([#&#8203;28258](https://github.com/astral-sh/ruff/pull/28258)) - \[`pylint`] Preserve trailing comments in `useless-return` fix (`PLR1711`) ([#&#8203;29180](https://github.com/astral-sh/ruff/pull/29180)) - \[`ruff`] Avoid false positive when `pytest.raises` is used in a `with` statement (`RUF061`) ([#&#8203;28186](https://github.com/astral-sh/ruff/pull/28186)) ##### Rule changes - \[`pyupgrade`] Suggest `typing.TypeForm` on Python 3.15 (`UP035`) ([#&#8203;29084](https://github.com/astral-sh/ruff/pull/29084)) ##### Contributors - [@&#8203;DeviousCardi](https://github.com/DeviousCardi) - [@&#8203;hugehoo](https://github.com/hugehoo) - [@&#8203;nekomario28](https://github.com/nekomario28) - [@&#8203;Daverball](https://github.com/Daverball) - [@&#8203;Viicos](https://github.com/Viicos) - [@&#8203;DebadityaHait](https://github.com/DebadityaHait) - [@&#8203;saberoueslati](https://github.com/saberoueslati) - [@&#8203;baltasarblanco](https://github.com/baltasarblanco) - [@&#8203;yxshee](https://github.com/yxshee) - [@&#8203;lognd](https://github.com/lognd) - [@&#8203;dor-sr](https://github.com/dor-sr) ### [`v0.16.10`](https://github.com/astral-sh/ruff/releases/tag/0.16.10) [Compare Source](https://github.com/astral-sh/ruff/compare/0.16.9...0.16.10) #### Release Notes Released on 2026-10-01. ##### Preview features - Add a migration guide for categories ([#&#8203;28087](https://github.com/astral-sh/ruff/pull/28087)) - \[`pyupgrade`] Add rule for context manager iterator annotations (`UP052`) ([#&#8203;29000](https://github.com/astral-sh/ruff/pull/29000)) ##### Performance - Reduce memory used by diagnostics ([#&#8203;28951](https://github.com/astral-sh/ruff/pull/28951)) ##### Server - Avoid running `uv format` in untrusted workspaces ([#&#8203;28873](https://github.com/astral-sh/ruff/pull/28873)) ##### Documentation - Fix links to moved changelog sections and renamed mdtests ([#&#8203;28941](https://github.com/astral-sh/ruff/pull/28941)) - Add Python 3.15 as a supported version ([#&#8203;28907](https://github.com/astral-sh/ruff/pull/28907)) - Add ty as a type checker example ([#&#8203;28906](https://github.com/astral-sh/ruff/pull/28906)) ##### Other changes - Update Rust toolchain to 1.99 and MSRV to 1.97 ([#&#8203;29047](https://github.com/astral-sh/ruff/pull/29047)) ##### Contributors - [@&#8203;ntBre](https://github.com/ntBre) - [@&#8203;spaceone](https://github.com/spaceone) - [@&#8203;HardMax71](https://github.com/HardMax71) - [@&#8203;charliermarsh](https://github.com/charliermarsh) #### Install ruff 0.16.10 ##### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.10/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.16.10/ruff-installer.ps1 | iex" ``` #### Download ruff 0.16.10 | File | Platform | Checksum | | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | [ruff-aarch64-apple-darwin.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-apple-darwin.tar.gz) | Apple Silicon macOS | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-apple-darwin.tar.gz.sha256) | | [ruff-x86\_64-apple-darwin.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-x86_64-apple-darwin.tar.gz) | Intel macOS | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-x86_64-apple-darwin.tar.gz.sha256) | | [ruff-aarch64-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-pc-windows-msvc.zip) | ARM64 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-pc-windows-msvc.zip.sha256) | | [ruff-i686-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-i686-pc-windows-msvc.zip) | x86 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-i686-pc-windows-msvc.zip.sha256) | | [ruff-x86\_64-pc-windows-msvc.zip](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-x86_64-pc-windows-msvc.zip.sha256) | | [ruff-aarch64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-unknown-linux-gnu.tar.gz) | ARM64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-unknown-linux-gnu.tar.gz.sha256) | | [ruff-i686-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-i686-unknown-linux-gnu.tar.gz) | x86 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-i686-unknown-linux-gnu.tar.gz.sha256) | | [ruff-powerpc64-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-powerpc64-unknown-linux-gnu.tar.gz) | PPC64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-powerpc64-unknown-linux-gnu.tar.gz.sha256) | | [ruff-powerpc64le-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-powerpc64le-unknown-linux-gnu.tar.gz) | PPC64LE Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-powerpc64le-unknown-linux-gnu.tar.gz.sha256) | | [ruff-riscv64gc-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-riscv64gc-unknown-linux-gnu.tar.gz) | RISCV Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-riscv64gc-unknown-linux-gnu.tar.gz.sha256) | | [ruff-s390x-unknown-linux-gnu.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-s390x-unknown-linux-gnu.tar.gz) | S390x Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/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.16.10/ruff-x86_64-unknown-linux-gnu.tar.gz) | x64 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/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.16.10/ruff-armv7-unknown-linux-gnueabihf.tar.gz) | ARMv7 Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-armv7-unknown-linux-gnueabihf.tar.gz.sha256) | | [ruff-aarch64-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-unknown-linux-musl.tar.gz) | ARM64 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-aarch64-unknown-linux-musl.tar.gz.sha256) | | [ruff-i686-unknown-linux-musl.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-i686-unknown-linux-musl.tar.gz) | x86 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/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.16.10/ruff-x86_64-unknown-linux-musl.tar.gz) | x64 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/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.16.10/ruff-arm-unknown-linux-musleabihf.tar.gz) | ARMv6 MUSL Linux (Hardfloat) | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-arm-unknown-linux-musleabihf.tar.gz.sha256) | | [ruff-armv7-unknown-linux-musleabihf.tar.gz](https://releases.astral.sh/github/ruff/releases/download/0.16.10/ruff-armv7-unknown-linux-musleabihf.tar.gz) | ARMv7 MUSL Linux | [checksum](https://releases.astral.sh/github/ruff/releases/download/0.16.10/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://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> ``` </details> <details> <summary>astral-sh/ty (ty)</summary> ### [`v0.0.90`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0090) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.89...0.0.90) Released on 2026-10-20. ##### Bug fixes - Allow subclasses to restore hashability ([#&#8203;29471](https://github.com/astral-sh/ruff/pull/29471)) - Avoid crashes when negating recursive aliases ([#&#8203;29429](https://github.com/astral-sh/ruff/pull/29429)) - Avoid stack overflow for recursive descriptor setter checks ([#&#8203;29467](https://github.com/astral-sh/ruff/pull/29467)) - Defer constructor type variable defaults ([#&#8203;29469](https://github.com/astral-sh/ruff/pull/29469)) - Preserve bound receivers for strict signature checks ([#&#8203;29396](https://github.com/astral-sh/ruff/pull/29396)) - Preserve read types for dynamic attributes ([#&#8203;29461](https://github.com/astral-sh/ruff/pull/29461)) - Reject runtime\_checkable on non-protocol classes ([#&#8203;29460](https://github.com/astral-sh/ruff/pull/29460)) - Validate TypeAliasType keyword arguments ([#&#8203;29466](https://github.com/astral-sh/ruff/pull/29466)) ##### LSP server - Add return-type inlay hints ([#&#8203;29437](https://github.com/astral-sh/ruff/pull/29437)) ##### Other changes - Adopt stable macOS signing identifiers ([#&#8203;4743](https://github.com/astral-sh/ty/pull/4743)) - Avoid inserting inlay hints containing stub-only types ([#&#8203;29477](https://github.com/astral-sh/ruff/pull/29477)) - Filter incompatible union members during union inference ([#&#8203;29344](https://github.com/astral-sh/ruff/pull/29344)) - Infer ParamSpecs from call-wide constraints ([#&#8203;28828](https://github.com/astral-sh/ruff/pull/28828)) - Mitigate pauses from clearing cached ASTs in more language server operations ([#&#8203;29232](https://github.com/astral-sh/ruff/pull/29232)) - Report read-only keys when deleting, popping, or defaulting TypedDict items ([#&#8203;29441](https://github.com/astral-sh/ruff/pull/29441)) - Support uv's nested module ownership metadata ([#&#8203;29436](https://github.com/astral-sh/ruff/pull/29436)) ##### Contributors - [@&#8203;carljm](https://github.com/carljm) - [@&#8203;zsol](https://github.com/zsol) - [@&#8203;zanieb](https://github.com/zanieb) - [@&#8203;ibraheemdev](https://github.com/ibraheemdev) - [@&#8203;hsusul](https://github.com/hsusul) - [@&#8203;charliermarsh](https://github.com/charliermarsh) - [@&#8203;sharkdp](https://github.com/sharkdp) - [@&#8203;dhruvmanila](https://github.com/dhruvmanila) - [@&#8203;lerebear](https://github.com/lerebear) ### [`v0.0.89`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0089) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.88...0.0.89) Released on 2026-10-16. ##### Core type checking - Added support for return type inference for unannotated functions and methods ([#&#8203;29253](https://github.com/astral-sh/ruff/pull/29253)). Return type inference is currently disabled by default. Enable it with the [`analysis.return-type-inference`](https://docs.astral.sh/ty/reference/configuration/#return-type-inference) setting in `pyproject.toml`: ```toml [tool.ty.analysis] return-type-inference = "always" ``` Or in `ty.toml`: ```toml [analysis] return-type-inference = "always" ``` Please share your feedback, especially any problems you encounter, in [the return type inference feedback issue](https://github.com/astral-sh/ty/issues/4739). - Sync vendored typeshed stubs ([#&#8203;29402](https://github.com/astral-sh/ruff/pull/29402)). [Typeshed diff](https://github.com/python/typeshed/compare/b932d8ce0f893d7d9ef167f0379dcaf9f48bf70b...86d68f86591c4bf97723350505d2cd28123ab3b6) ##### Bug fixes - Avoid a panic when negating dynamic type aliases ([#&#8203;29427](https://github.com/astral-sh/ruff/pull/29427)) - Widen tuple literal lengths when other collection elements contain nested tuple types ([#&#8203;29147](https://github.com/astral-sh/ruff/pull/29147)) - Report invalid `Generic` and `Protocol` arguments containing nested variadic type variables ([#&#8203;29146](https://github.com/astral-sh/ruff/pull/29146)) ##### Performance - Speed up generic class-pattern narrowing by skipping impossible intersection comparisons ([#&#8203;29240](https://github.com/astral-sh/ruff/pull/29240)) ##### Contributors - [@&#8203;carljm](https://github.com/carljm) - [@&#8203;charliermarsh](https://github.com/charliermarsh) - [@&#8203;sharkdp](https://github.com/sharkdp) ### [`v0.0.88`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0088) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.87...0.0.88) Released on 2026-10-15. ##### Bug fixes - Avoid panics and hangs involving recursive type aliases and intersections ([#&#8203;29057](https://github.com/astral-sh/ruff/pull/29057)) - Fix false `invalid-mutable-override` errors when overriding `object` attributes ([#&#8203;29373](https://github.com/astral-sh/ruff/pull/29373)) - Fix attribute assignment and deletion checks through bounded or constrained type variables ([#&#8203;29345](https://github.com/astral-sh/ruff/pull/29345)) - Detect instance layout conflicts hidden by additional base classes ([#&#8203;29372](https://github.com/astral-sh/ruff/pull/29372)) - Fix false missing-argument errors when Pydantic models override inherited attributes with `ClassVar` ([#&#8203;29367](https://github.com/astral-sh/ruff/pull/29367)) - Preserve known module owners when uv reports owners outside the resolution ([#&#8203;29296](https://github.com/astral-sh/ruff/pull/29296)) ##### Diagnostic improvements - Report assignments to individually frozen Pydantic fields ([#&#8203;29305](https://github.com/astral-sh/ruff/pull/29305)) ##### Core type checking - Improve type inference for intersection arguments to generic functions ([#&#8203;28677](https://github.com/astral-sh/ruff/pull/28677)) - Preserve inherited annotations for unannotated subclass attributes when a base has type `Any` or `Unknown` ([#&#8203;28973](https://github.com/astral-sh/ruff/pull/28973)) - Preserve common return-type structure when gradual arguments match multiple overloads ([#&#8203;29342](https://github.com/astral-sh/ruff/pull/29342)) - Check upper bounds when inferring type variables from caller type variables ([#&#8203;29014](https://github.com/astral-sh/ruff/pull/29014)) ##### Contributors - [@&#8203;zaniebot](https://github.com/zaniebot) - [@&#8203;charliermarsh](https://github.com/charliermarsh) - [@&#8203;zhouzaida](https://github.com/zhouzaida) - [@&#8203;seunghyun-24](https://github.com/seunghyun-24) - [@&#8203;zsol](https://github.com/zsol) - [@&#8203;RasmusNygren](https://github.com/RasmusNygren) - [@&#8203;carljm](https://github.com/carljm) ### [`v0.0.87`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0087) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.86...0.0.87) Released on 2026-10-13. ##### LSP server - Clamp notebook cell positions to the end of the cell ([#&#8203;29307](https://github.com/astral-sh/ruff/pull/29307)) - Fix deadlock when requests arrive before workspace configuration ([#&#8203;29303](https://github.com/astral-sh/ruff/pull/29303)) - Fix notebook cell lookups after cells with cell magics ([#&#8203;29308](https://github.com/astral-sh/ruff/pull/29308)) - Fix panic on completions past the end of a notebook's last cell ([#&#8203;29306](https://github.com/astral-sh/ruff/pull/29306)) ##### Diagnostic improvements - Add opt-in `mismatched-sentinel-name` rule ([#&#8203;27206](https://github.com/astral-sh/ruff/pull/27206)) - Deduplicate identical argument type diagnostics ([#&#8203;29337](https://github.com/astral-sh/ruff/pull/29337)) - Enable `invalid-mutable-override` by default ([#&#8203;29335](https://github.com/astral-sh/ruff/pull/29335)) - Improve display of distinct string literal types ([#&#8203;29206](https://github.com/astral-sh/ruff/pull/29206)) - Respect suppression of attribute override diagnostics ([#&#8203;29327](https://github.com/astral-sh/ruff/pull/29327)) ##### Core type checking - Check overrides of receiver attribute declarations ([#&#8203;28557](https://github.com/astral-sh/ruff/pull/28557)) - Infer the default for definitely absent keys in closed `TypedDict.get` calls ([#&#8203;29136](https://github.com/astral-sh/ruff/pull/29136)) - Leave room for later positional arguments when unpacking a variable-length argument ([#&#8203;29293](https://github.com/astral-sh/ruff/pull/29293)) - Preserve minimum lengths of unpacked tuple unions ([#&#8203;29331](https://github.com/astral-sh/ruff/pull/29331)) - Specialize bare generic class name with `type[...]` type context ([#&#8203;29248](https://github.com/astral-sh/ruff/pull/29248)) ##### Performance - Avoid constructing nominal complements ([#&#8203;29292](https://github.com/astral-sh/ruff/pull/29292)) - Optimize system path equality ([#&#8203;29340](https://github.com/astral-sh/ruff/pull/29340)) ##### Contributors - [@&#8203;charliermarsh](https://github.com/charliermarsh) - [@&#8203;AlexWaygood](https://github.com/AlexWaygood) - [@&#8203;ibraheemdev](https://github.com/ibraheemdev) - [@&#8203;zsol](https://github.com/zsol) - [@&#8203;Amirshox](https://github.com/Amirshox) - [@&#8203;carljm](https://github.com/carljm) ### [`v0.0.86`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0086) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.85...0.0.86) Released on 2026-10-09. The executables in our macOS and Windows release archives and `ty` wheels are now code-signed. macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables verification of the release publisher and binary integrity, supports publisher-based allowlisting, and should reduce security warnings and antivirus false positives. ##### Bug fixes - Infer empty collection branches from nonempty literals ([#&#8203;29131](https://github.com/astral-sh/ruff/pull/29131)) - Invalidate dependency metadata when environments change ([#&#8203;29126](https://github.com/astral-sh/ruff/pull/29126)) - Preserve final attribute restrictions on composite types ([#&#8203;29135](https://github.com/astral-sh/ruff/pull/29135)) - Preserve recursive structure in `Annotated` values ([#&#8203;29058](https://github.com/astral-sh/ruff/pull/29058)) - Specialize inherited dataclass field converters ([#&#8203;29192](https://github.com/astral-sh/ruff/pull/29192)) ##### LSP server - Show documentation for annotation operators on hover ([#&#8203;29185](https://github.com/astral-sh/ruff/pull/29185)) ##### Core type checking - Check attribute and property override types ([#&#8203;28556](https://github.com/astral-sh/ruff/pull/28556)) - Narrow tuple unions through truthiness and type checks ([#&#8203;29125](https://github.com/astral-sh/ruff/pull/29125)) - Preserve literal types when consuming dictionary literals ([#&#8203;29145](https://github.com/astral-sh/ruff/pull/29145)) - Preserve non-boolean comparison results for intersections ([#&#8203;28045](https://github.com/astral-sh/ruff/pull/28045)) - Preserve receiver specializations when calling unions of bound methods ([#&#8203;29015](https://github.com/astral-sh/ruff/pull/29015)) - Represent uninhabited truthiness explicitly ([#&#8203;28843](https://github.com/astral-sh/ruff/pull/28843)) - Solve validity type context through constraint sets ([#&#8203;28909](https://github.com/astral-sh/ruff/pull/28909)) ##### Performance - Avoid recursion guards for non-generic nominal targets ([#&#8203;29202](https://github.com/astral-sh/ruff/pull/29202)) - Check exact exclusions before intersection positives ([#&#8203;29195](https://github.com/astral-sh/ruff/pull/29195)) ##### Memory usage improvements - Share constraints in retained sequent maps ([#&#8203;28966](https://github.com/astral-sh/ruff/pull/28966)) ##### Other changes - Update the default Python version to 3.15 ([#&#8203;28792](https://github.com/astral-sh/ruff/pull/28792)) - Update to Unicode 17 ([#&#8203;21229](https://github.com/astral-sh/ruff/pull/21229), [#&#8203;28784](https://github.com/astral-sh/ruff/pull/28784)) - Always show fixes in the CLI ([#&#8203;27810](https://github.com/astral-sh/ruff/pull/27810)) ##### Contributors - [@&#8203;gorewilliams](https://github.com/gorewilliams) - [@&#8203;carljm](https://github.com/carljm) - [@&#8203;AlexWaygood](https://github.com/AlexWaygood) - [@&#8203;ibraheemdev](https://github.com/ibraheemdev) - [@&#8203;zsol](https://github.com/zsol) - [@&#8203;charliermarsh](https://github.com/charliermarsh) ### [`v0.0.85`](https://github.com/astral-sh/ty/blob/HEAD/CHANGELOG.md#0085) [Compare Source](https://github.com/astral-sh/ty/compare/0.0.84...0.0.85) Released on 2026-10-06. ##### Preview features - Refresh uv project metadata when uv files change ([#&#8203;28529](https://github.com/astral-sh/ruff/pull/28529)) ##### Bug fixes - Avoid recursive lambda class decorator panics ([#&#8203;28984](https://github.com/astral-sh/ruff/pull/28984)) - Compare observable notebook state for equality ([#&#8203;28874](https://github.com/astral-sh/ruff/pull/28874)) - Detect recursive alias cycles through intersections ([#&#8203;28916](https://github.com/astral-sh/ruff/pull/28916)) - Fix anchoring of include and exclude patterns after the project's root changed ([#&#8203;28995](https://github.com/astral-sh/ruff/pull/28995)) - Fix stack overflow when inferring dynamic class metaclasses ([#&#8203;28917](https://github.com/astral-sh/ruff/pull/28917)) - Normalize recursive dataclass transform metadata ([#&#8203;28920](https://github.com/astral-sh/ruff/pull/28920)) - Normalize recursive TypedDicts during cycle recovery ([#&#8203;28918](https://github.com/astral-sh/ruff/pull/28918)) - Preserve cycle markers in ParamSpec specialization ([#&#8203;29024](https://github.com/astral-sh/ruff/pull/29024)) ##### CLI - Prefer existing @&#8203; paths over response files in Ruff and ty ([#&#8203;28877](https://github.com/astral-sh/ruff/pull/28877)) ##### LSP server - Add namespace package support to import completions. ([#&#8203;28202](https://github.com/astral-sh/ruff/pull/28202)) - Avoid stale I/O diagnostics when closing deleted files ([#&#8203;28988](https://github.com/astral-sh/ruff/pull/28988)) - Contain rendered code within Markdown fences ([#&#8203;28869](https://github.com/astral-sh/ruff/pull/28869)) - Refresh Python settings when virtual environments change ([#&#8203;28650](https://github.com/astral-sh/ruff/pull/28650)) ##### Diagnostic improvements - Add opt-in `truthiness-test-of-none-union` rule ([#&#8203;28889](https://github.com/astral-sh/ruff/pull/28889)) - Avoid `disjoint-cast` diagnostics in situations where the value could have been inferred as being compatible with the casted type if it had only been inferred with the right type context ([#&#8203;28851](https://github.com/astral-sh/ruff/pull/28851)) - Bound nested callable signature display ([#&#8203;29049](https://github.com/astral-sh/ruff/pull/29049)) - Explain outdated uv versions in metadata errors ([#&#8203;28959](https://github.com/astral-sh/ruff/pull/28959)) - Improve display of string literal types that include unicode characters or double quotes ([#&#8203;29089](https://github.com/astral-sh/ruff/pull/29089)) - Improve uv metadata diagnostics ([#&#8203;28990](https://github.com/astral-sh/ruff/pull/28990)) - Preserve constrained type-variable failure diagnostics ([#&#8203;28768](https://github.com/astral-sh/ruff/pull/28768)) - Preserve generic inference errors during diagnostic recovery ([#&#8203;28811](https://github.com/astral-sh/ruff/pull/28811)) - Report deprecated overloads in decorator applications ([#&#8203;28999](https://github.com/astral-sh/ruff/pull/28999)) ##### Core type checking - Bound methods without a receiver are not callable ([#&#8203;28981](https://github.com/astral-sh/ruff/pull/28981)) - Fix member lookup on union-bounded type variables ([#&#8203;29018](https://github.com/astral-sh/ruff/pull/29018)) - Fix type variable inference for final class objects ([#&#8203;29097](https://github.com/astral-sh/ruff/pull/29097)) - Freshen ParamSpec identities consistently ([#&#8203;28826](https://github.com/astral-sh/ruff/pull/28826)) - Honor generic property setters in protocol compatibility ([#&#8203;28562](https://github.com/astral-sh/ruff/pull/28562)) - Infer nominal generic specializations from bounded type variables ([#&#8203;28812](https://github.com/astral-sh/ruff/pull/28812)) - Inherit annotations for unannotated subclass defaults ([#&#8203;28575](https://github.com/astral-sh/ruff/pull/28575)) - Keep unresolved TypeIs targets provisional ([#&#8203;29066](https://github.com/astral-sh/ruff/pull/29066)) - Limit wildcard exports using literal `__all__` ([#&#8203;28972](https://github.com/astral-sh/ruff/pull/28972)) - Narrow later match cases after always-true guards ([#&#8203;28960](https://github.com/astral-sh/ruff/pull/28960)) - Pass generic context to call inference solver ([#&#8203;29065](https://github.com/astral-sh/ruff/pull/29065)) - Preserve captured variables in ParamSpec comparisons ([#&#8203;28827](https://github.com/astral-sh/ruff/pull/28827)) - Preserve intersection receivers in implicit dunder calls ([#&#8203;28833](https://github.com/astral-sh/ruff/pull/28833)) - Preserve literal unpacking during call analysis ([#&#8203;28821](https://github.com/astral-sh/ruff/pull/28821)) - Preserve recursive type context during constructor inference ([#&#8203;28903](https://github.com/astral-sh/ruff/pull/28903)) - Preserve tuple shapes when slicing NewTypes ([#&#8203;29091](https://github.com/astral-sh/ruff/pull/29091)) - Preserve tuple subclass identity during type expansion ([#&#8203;29090](https://github.com/astral-sh/ruff/pull/29090)) - Promote bounded type variables to declared constraints ([#&#8203;28814](https://github.com/astral-sh/ruff/pull/28814)) - Propagate outer type context through cast calls ([#&#8203;28855](https://github.com/astral-sh/ruff/pull/28855)) - Recognize bare `TypeVarTuple`s in materialization checks ([#&#8203;28815](https://github.com/astral-sh/ruff/pull/28815)) - Retain individual overload argument expansion outcomes ([#&#8203;28825](https://github.com/astral-sh/ruff/pull/28825)) - Specialize instance members once ([#&#8203;29043](https://github.com/astral-sh/ruff/pull/29043)) - Specialize Self bounds through generic type aliases ([#&#8203;28890](https://github.com/astral-sh/ruff/pull/28890)) - Support slots\_default in dataclass\_transform ([#&#8203;28885](https://github.com/astral-sh/ruff/pull/28885)) - Sync vendored typeshed stubs ([#&#8203;29032](https://github.com/astral-sh/ruff/pull/29032)). [Typeshed diff](https://github.com/python/typeshed/compare/76b8c9f83b8bb876e841248b638f3728da3f86fe...b932d8ce0f893d7d9ef167f0379dcaf9f48bf70b) - Sync vendored typeshed stubs ([#&#8203;29042](https://github.com/astral-sh/ruff/pull/29042)). [Typeshed diff](https://github.com/python/typeshed/compare/76b8c9f83b8bb876e841248b638f3728da3f86fe...b932d8ce0f893d7d9ef167f0379dcaf9f48bf70b) - Validate call arguments once after inference ([#&#8203;28824](https://github.com/astral-sh/ruff/pull/28824)) - Validate union operands involving None ([#&#8203;28931](https://github.com/astral-sh/ruff/pull/28931)) ##### Performance - Avoid expanding recursive protocol materializations ([#&#8203;29026](https://github.com/astral-sh/ruff/pull/29026)) - Avoid repeated work in nested match patterns ([#&#8203;28926](https://github.com/astral-sh/ruff/pull/28926)) - Cache the flattened module list ([#&#8203;28932](https://github.com/astral-sh/ruff/pull/28932)) - Index nonlocal bindings when sweeping snapshots ([#&#8203;28935](https://github.com/astral-sh/ruff/pull/28935)) - Skip descendant searches for leaf modules ([#&#8203;28845](https://github.com/astral-sh/ruff/pull/28845)) - Skip independent constraint-pair derivation ([#&#8203;28950](https://github.com/astral-sh/ruff/pull/28950)) - Skip storing default definition states ([#&#8203;28934](https://github.com/astral-sh/ruff/pull/28934)) ##### Memory usage improvements - Avoid caching empty sequent maps ([#&#8203;28949](https://github.com/astral-sh/ruff/pull/28949)) - Avoid retaining docstring literal types ([#&#8203;28944](https://github.com/astral-sh/ruff/pull/28944)) - Compact bound-method receivers ([#&#8203;28969](https://github.com/astral-sh/ruff/pull/28969)) - Move ParamSpec signature metadata to extras ([#&#8203;28970](https://github.com/astral-sh/ruff/pull/28970)) - Release closed module ASTs synchronously during auto-import discovery ([#&#8203;28714](https://github.com/astral-sh/ruff/pull/28714)) - Skip caching trivially assignable types ([#&#8203;28936](https://github.com/astral-sh/ruff/pull/28936)) ##### Contributors - [@&#8203;dhruvmanila](https://github.com/dhruvmanila) - [@&#8203;carljm](https://github.com/carljm) - [@&#8203;sharkdp](https://github.com/sharkdp) - [@&#8203;gorewilliams](https://github.com/gorewilliams) - [@&#8203;AlexWaygood](https://github.com/AlexWaygood) - [@&#8203;ibraheemdev](https://github.com/ibraheemdev) - [@&#8203;MichaReiser](https://github.com/MichaReiser) - [@&#8203;charliermarsh](https://github.com/charliermarsh) - [@&#8203;zsol](https://github.com/zsol) - [@&#8203;lerebear](https://github.com/lerebear) </details> <details> <summary>MagicStack/uvloop (uvloop)</summary> ### [`v0.23.0`](https://github.com/MagicStack/uvloop/releases/tag/v0.23.0) [Compare Source](https://github.com/MagicStack/uvloop/compare/v0.22.1...v0.23.0) # Changes - Add Python 3.15 and 3.15t wheel builds and CI coverage ([#&#8203;758](https://github.com/MagicStack/uvloop/issues/758)) (by [@&#8203;honglei](https://github.com/honglei) [@&#8203;fantix](https://github.com/fantix) in [`f7c0547`](https://github.com/MagicStack/uvloop/commit/f7c05473)) - Add support for the `eager_start` keyword argument in create\_task() ([#&#8203;748](https://github.com/MagicStack/uvloop/issues/748)) (by [@&#8203;samypr100](https://github.com/samypr100) in [`3cbb095`](https://github.com/MagicStack/uvloop/commit/3cbb0956) for [#&#8203;746](https://github.com/MagicStack/uvloop/issues/746) [#&#8203;718](https://github.com/MagicStack/uvloop/issues/718)) - Add thread name prefix to the default thread pool executor ([#&#8203;636](https://github.com/MagicStack/uvloop/issues/636)) (by [@&#8203;inikolaev](https://github.com/inikolaev) [@&#8203;fantix](https://github.com/fantix) in [`0582f94`](https://github.com/MagicStack/uvloop/commit/0582f946) for [#&#8203;562](https://github.com/MagicStack/uvloop/issues/562)) - Add support for special hostname `<broadcast>` ([#&#8203;592](https://github.com/MagicStack/uvloop/issues/592)) (by [@&#8203;jpbede](https://github.com/jpbede) in [`3060ceb`](https://github.com/MagicStack/uvloop/commit/3060cebc) for [#&#8203;540](https://github.com/MagicStack/uvloop/issues/540)) - Upgrade libuv to v1.52.1 ([#&#8203;753](https://github.com/MagicStack/uvloop/issues/753)) (by [@&#8203;fantix](https://github.com/fantix) in [`e8efea4`](https://github.com/MagicStack/uvloop/commit/e8efea40) for [#&#8203;752](https://github.com/MagicStack/uvloop/issues/752)) - Improve performance by using Python C API to enter/exit context ([#&#8203;627](https://github.com/MagicStack/uvloop/issues/627)) (by [@&#8203;tarasko](https://github.com/tarasko) in [`837ef22`](https://github.com/MagicStack/uvloop/commit/837ef22c)) - Improve performance/latency of Transport.write ([#&#8203;619](https://github.com/MagicStack/uvloop/issues/619)) (by [@&#8203;tarasko](https://github.com/tarasko) in [`1d9b6e0`](https://github.com/MagicStack/uvloop/commit/1d9b6e0d)) - Replace some SSL vectorcall with direct methods ([#&#8203;626](https://github.com/MagicStack/uvloop/issues/626)) (by [@&#8203;tarasko](https://github.com/tarasko) in [`6a27cbe`](https://github.com/MagicStack/uvloop/commit/6a27cbe2)) - Optimize SSL buffered reads using C values ([#&#8203;629](https://github.com/MagicStack/uvloop/issues/629)) (by [@&#8203;tarasko](https://github.com/tarasko) in [`a308f75`](https://github.com/MagicStack/uvloop/commit/a308f75f)) # Fixes - Detach socket on create\_connection cancellation to prevent fd double-close ([#&#8203;740](https://github.com/MagicStack/uvloop/issues/740)) (by [@&#8203;junjzhang](https://github.com/junjzhang) [@&#8203;fantix](https://github.com/fantix) in [`dc680eb`](https://github.com/MagicStack/uvloop/commit/dc680eb2) for [#&#8203;645](https://github.com/MagicStack/uvloop/issues/645) [#&#8203;738](https://github.com/MagicStack/uvloop/issues/738)) - Remove `loop._ready_len` in favor of `len(loop._ready)` ([#&#8203;721](https://github.com/MagicStack/uvloop/issues/721)) (by [@&#8203;x42005e1f](https://github.com/x42005e1f) in [`5910a18`](https://github.com/MagicStack/uvloop/commit/5910a183) for [#&#8203;720](https://github.com/MagicStack/uvloop/issues/720)) - Prefer inspect.iscoroutinefunction ([#&#8203;705](https://github.com/MagicStack/uvloop/issues/705)) (by [@&#8203;MatthieuDartiailh](https://github.com/MatthieuDartiailh) in [`fd65027`](https://github.com/MagicStack/uvloop/commit/fd650276) for [#&#8203;703](https://github.com/MagicStack/uvloop/issues/703)) - Fix context tests by explicitly yielding after run\_in\_executor ([#&#8203;743](https://github.com/MagicStack/uvloop/issues/743)) (by [@&#8203;samypr100](https://github.com/samypr100) in [`6cd24cb`](https://github.com/MagicStack/uvloop/commit/6cd24cbb)) - Fix test\_create\_connection\_open\_con\_addr with Python 3.13.9+ ([#&#8203;713](https://github.com/MagicStack/uvloop/issues/713)) (by [@&#8203;shadchin](https://github.com/shadchin) in [`b93141a`](https://github.com/MagicStack/uvloop/commit/b93141a5) for [#&#8203;701](https://github.com/MagicStack/uvloop/issues/701)) - Skip flaky test\_cancel\_post\_init on asyncio 3.13+ ([#&#8203;714](https://github.com/MagicStack/uvloop/issues/714)) (by [@&#8203;fantix](https://github.com/fantix) in [`3ea5c85`](https://github.com/MagicStack/uvloop/commit/3ea5c856) for [#&#8203;709](https://github.com/MagicStack/uvloop/issues/709)) - Fix flaky test\_fs\_event ([#&#8203;717](https://github.com/MagicStack/uvloop/issues/717)) (by [@&#8203;fantix](https://github.com/fantix) in [`8da4547`](https://github.com/MagicStack/uvloop/commit/8da4547a)) - Use C \_\_atomic builtins for debug counters ([#&#8203;719](https://github.com/MagicStack/uvloop/issues/719)) (by [@&#8203;fantix](https://github.com/fantix) in [`836e3b2`](https://github.com/MagicStack/uvloop/commit/836e3b2e)) - Update the example to work with Python 3.14 ([#&#8203;710](https://github.com/MagicStack/uvloop/issues/710)) (by [@&#8203;Jamie-Chang](https://github.com/Jamie-Chang) in [`b74c2f1`](https://github.com/MagicStack/uvloop/commit/b74c2f1c)) # Build - Replace pkg\_resources with packaging and use Cython 3.1 ([#&#8203;742](https://github.com/MagicStack/uvloop/issues/742)) (by [@&#8203;samypr100](https://github.com/samypr100) in [`b377b7c`](https://github.com/MagicStack/uvloop/commit/b377b7c6) for [#&#8203;729](https://github.com/MagicStack/uvloop/issues/729)) - Remove wheel as a build dependency ([#&#8203;696](https://github.com/MagicStack/uvloop/issues/696)) (by [@&#8203;DimitriPapadopoulos](https://github.com/DimitriPapadopoulos) in [`173e88c`](https://github.com/MagicStack/uvloop/commit/173e88cf)) - Support any number of flags in UVLOOP\_OPT\_CFLAGS ([#&#8203;630](https://github.com/MagicStack/uvloop/issues/630)) (by [@&#8203;mgorny](https://github.com/mgorny) in [`963a5f3`](https://github.com/MagicStack/uvloop/commit/963a5f3e)) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Amsterdam) - Branch creation - "before 6am on sunday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTUuMTAiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMTUuMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyJdfQ==-->
Update Python dependencies
Some checks failed
CI / pre-commit (pull_request) Failing after 40s
CI / backend-test (pull_request) Failing after 1m12s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 28s
security-scan / SBOM (trivy) (pull_request) Successful in 20s
CI / e2e (pull_request) Failing after 1m44s
CI / frontend-test (pull_request) Successful in 3m49s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Failing after 0s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Successful in 30s
test-build / build (backend) (pull_request) Failing after 48s
672a5eee19
robbertbos force-pushed renovate/python from 672a5eee19
Some checks failed
CI / pre-commit (pull_request) Failing after 40s
CI / backend-test (pull_request) Failing after 1m12s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 28s
security-scan / SBOM (trivy) (pull_request) Successful in 20s
CI / e2e (pull_request) Failing after 1m44s
CI / frontend-test (pull_request) Successful in 3m49s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Failing after 0s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Successful in 30s
test-build / build (backend) (pull_request) Failing after 48s
to 2f715112ff
Some checks failed
CI / pre-commit (pull_request) Failing after 38s
CI / backend-test (pull_request) Failing after 1m12s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
CI / e2e (pull_request) Failing after 1m40s
security-scan / SBOM (trivy) (pull_request) Successful in 18s
test-build / build (backend) (pull_request) Failing after 45s
CI / frontend-test (pull_request) Successful in 3m31s
test-build / build (frontend) (pull_request) Successful in 1m45s
test-build / build (pull_request) Failing after 0s
2026-10-06 02:04:20 +00:00
Compare
robbertbos force-pushed renovate/python from 2f715112ff
Some checks failed
CI / pre-commit (pull_request) Failing after 38s
CI / backend-test (pull_request) Failing after 1m12s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
CI / e2e (pull_request) Failing after 1m40s
security-scan / SBOM (trivy) (pull_request) Successful in 18s
test-build / build (backend) (pull_request) Failing after 45s
CI / frontend-test (pull_request) Successful in 3m31s
test-build / build (frontend) (pull_request) Successful in 1m45s
test-build / build (pull_request) Failing after 0s
to 055674187b
Some checks failed
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m24s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 20s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 14s
test-build / build (backend) (pull_request) Failing after 44s
CI / frontend-test (pull_request) Successful in 5m38s
test-build / build (frontend) (pull_request) Successful in 1m46s
test-build / build (pull_request) Failing after 0s
2026-10-07 02:04:37 +00:00
Compare
robbertbos force-pushed renovate/python from 055674187b
Some checks failed
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m24s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 20s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 14s
test-build / build (backend) (pull_request) Failing after 44s
CI / frontend-test (pull_request) Successful in 5m38s
test-build / build (frontend) (pull_request) Successful in 1m46s
test-build / build (pull_request) Failing after 0s
to 98e90452dd
Some checks failed
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m22s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 23s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 44s
CI / frontend-test (pull_request) Successful in 5m38s
test-build / build (frontend) (pull_request) Successful in 1m44s
test-build / build (pull_request) Failing after 0s
2026-10-08 02:04:43 +00:00
Compare
robbertbos force-pushed renovate/python from 98e90452dd
Some checks failed
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m22s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 23s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 44s
CI / frontend-test (pull_request) Successful in 5m38s
test-build / build (frontend) (pull_request) Successful in 1m44s
test-build / build (pull_request) Failing after 0s
to f26c559725
Some checks failed
CI / pre-commit (pull_request) Failing after 42s
CI / backend-test (pull_request) Failing after 1m17s
CI / e2e (pull_request) Failing after 1m47s
CI / release-scripts (pull_request) Successful in 23s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 30s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
CI / frontend-test (pull_request) Successful in 5m26s
test-build / build (backend) (pull_request) Failing after 40s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Failing after 0s
2026-10-09 02:05:02 +00:00
Compare
robbertbos force-pushed renovate/python from f26c559725
Some checks failed
CI / pre-commit (pull_request) Failing after 42s
CI / backend-test (pull_request) Failing after 1m17s
CI / e2e (pull_request) Failing after 1m47s
CI / release-scripts (pull_request) Successful in 23s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 30s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
CI / frontend-test (pull_request) Successful in 5m26s
test-build / build (backend) (pull_request) Failing after 40s
test-build / build (frontend) (pull_request) Successful in 2m2s
test-build / build (pull_request) Failing after 0s
to 3d2dee6a22
Some checks failed
CI / backend-test (pull_request) Failing after 1m15s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 30s
CI / e2e (pull_request) Failing after 1m40s
CI / pre-commit (pull_request) Failing after 41s
CI / release-scripts (pull_request) Failing after 17s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 23s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
test-build / build (backend) (pull_request) Failing after 1m25s
CI / frontend-test (pull_request) Successful in 3m38s
test-build / build (frontend) (pull_request) Successful in 1m54s
test-build / build (pull_request) Failing after 0s
2026-10-10 02:04:38 +00:00
Compare
robbertbos force-pushed renovate/python from 3d2dee6a22
Some checks failed
CI / backend-test (pull_request) Failing after 1m15s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 30s
CI / e2e (pull_request) Failing after 1m40s
CI / pre-commit (pull_request) Failing after 41s
CI / release-scripts (pull_request) Failing after 17s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 23s
security-scan / SBOM (trivy) (pull_request) Successful in 17s
test-build / build (backend) (pull_request) Failing after 1m25s
CI / frontend-test (pull_request) Successful in 3m38s
test-build / build (frontend) (pull_request) Successful in 1m54s
test-build / build (pull_request) Failing after 0s
to 886523038c
Some checks failed
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m16s
CI / e2e (pull_request) Failing after 1m31s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / frontend-test (pull_request) Successful in 5m31s
test-build / build (backend) (pull_request) Failing after 1m37s
test-build / build (frontend) (pull_request) Successful in 1m58s
test-build / build (pull_request) Failing after 0s
2026-10-12 02:10:43 +00:00
Compare
robbertbos force-pushed renovate/python from 886523038c
Some checks failed
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m16s
CI / e2e (pull_request) Failing after 1m31s
CI / release-scripts (pull_request) Successful in 17s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 20s
security-scan / JS SCA (npm audit) (pull_request) Failing after 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / frontend-test (pull_request) Successful in 5m31s
test-build / build (backend) (pull_request) Failing after 1m37s
test-build / build (frontend) (pull_request) Successful in 1m58s
test-build / build (pull_request) Failing after 0s
to d95b645815
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 42s
CI / backend-test (pull_request) Failing after 1m14s
CI / e2e (pull_request) Failing after 1m35s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 21s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 30s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 31s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 27s
CI / frontend-test (pull_request) Successful in 5m33s
test-build / build (frontend) (pull_request) Successful in 1m53s
test-build / build (pull_request) Failing after 0s
2026-10-14 02:11:23 +00:00
Compare
Author
Owner

⚠️ 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: backend/uv.lock
Downloading cpython-3.14.9-linux-x86_64-gnu (download) (35.0MiB)
 Downloaded cpython-3.14.9-linux-x86_64-gnu (download)
Using CPython 3.14.9
error: The Python request from `.python-version` resolved to Python 3.14.9, which is incompatible with the project's Python requirement: `>=3.15.1` (from `project.requires-python`)
Use `uv python pin` to update the `.python-version` file to a compatible version

### ⚠️ 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: backend/uv.lock ``` Downloading cpython-3.14.9-linux-x86_64-gnu (download) (35.0MiB) Downloaded cpython-3.14.9-linux-x86_64-gnu (download) Using CPython 3.14.9 error: The Python request from `.python-version` resolved to Python 3.14.9, which is incompatible with the project's Python requirement: `>=3.15.1` (from `project.requires-python`) Use `uv python pin` to update the `.python-version` file to a compatible version ```
robbertbos force-pushed renovate/python from d95b645815
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 42s
CI / backend-test (pull_request) Failing after 1m14s
CI / e2e (pull_request) Failing after 1m35s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 21s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 30s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 31s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 27s
CI / frontend-test (pull_request) Successful in 5m33s
test-build / build (frontend) (pull_request) Successful in 1m53s
test-build / build (pull_request) Failing after 0s
to 34f84a722e
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 40s
CI / backend-test (pull_request) Failing after 1m15s
CI / e2e (pull_request) Failing after 1m33s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 26s
CI / frontend-test (pull_request) Successful in 5m27s
test-build / build (frontend) (pull_request) Successful in 1m57s
test-build / build (pull_request) Failing after 0s
2026-10-15 02:11:42 +00:00
Compare
robbertbos force-pushed renovate/python from 34f84a722e
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 40s
CI / backend-test (pull_request) Failing after 1m15s
CI / e2e (pull_request) Failing after 1m33s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 24s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 26s
CI / frontend-test (pull_request) Successful in 5m27s
test-build / build (frontend) (pull_request) Successful in 1m57s
test-build / build (pull_request) Failing after 0s
to 34453e4b3b
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m21s
CI / e2e (pull_request) Failing after 1m42s
CI / release-scripts (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 26s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 30s
CI / frontend-test (pull_request) Successful in 6m12s
test-build / build (frontend) (pull_request) Successful in 2m9s
test-build / build (pull_request) Failing after 0s
2026-10-16 02:12:07 +00:00
Compare
robbertbos force-pushed renovate/python from 34453e4b3b
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 43s
CI / backend-test (pull_request) Failing after 1m21s
CI / e2e (pull_request) Failing after 1m42s
CI / release-scripts (pull_request) Successful in 20s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 26s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 30s
CI / frontend-test (pull_request) Successful in 6m12s
test-build / build (frontend) (pull_request) Successful in 2m9s
test-build / build (pull_request) Failing after 0s
to ef03e7372d
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m25s
CI / e2e (pull_request) Failing after 1m45s
CI / release-scripts (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 37s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 27s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 30s
CI / frontend-test (pull_request) Successful in 6m32s
test-build / build (frontend) (pull_request) Successful in 2m23s
test-build / build (pull_request) Failing after 0s
2026-10-17 02:12:33 +00:00
Compare
robbertbos force-pushed renovate/python from ef03e7372d
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m25s
CI / e2e (pull_request) Failing after 1m45s
CI / release-scripts (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 23s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 37s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 27s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 30s
CI / frontend-test (pull_request) Successful in 6m32s
test-build / build (frontend) (pull_request) Successful in 2m23s
test-build / build (pull_request) Failing after 0s
to cc09b88775
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 45s
CI / backend-test (pull_request) Failing after 1m24s
CI / e2e (pull_request) Failing after 1m45s
CI / release-scripts (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 24s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 35s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 27s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 31s
CI / frontend-test (pull_request) Successful in 6m17s
test-build / build (frontend) (pull_request) Successful in 2m30s
test-build / build (pull_request) Failing after 0s
2026-10-18 02:12:50 +00:00
Compare
robbertbos force-pushed renovate/python from cc09b88775
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 45s
CI / backend-test (pull_request) Failing after 1m24s
CI / e2e (pull_request) Failing after 1m45s
CI / release-scripts (pull_request) Successful in 19s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 24s
security-scan / Python SAST (bandit) (pull_request) Failing after 23s
security-scan / JS SCA (npm audit) (pull_request) Failing after 35s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 27s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 31s
CI / frontend-test (pull_request) Successful in 6m17s
test-build / build (frontend) (pull_request) Successful in 2m30s
test-build / build (pull_request) Failing after 0s
to 1d518b9d03
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 39s
CI / backend-test (pull_request) Failing after 1m16s
CI / e2e (pull_request) Failing after 1m37s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 26s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 27s
CI / frontend-test (pull_request) Successful in 5m54s
test-build / build (frontend) (pull_request) Successful in 2m12s
test-build / build (pull_request) Failing after 0s
2026-10-19 02:12:08 +00:00
Compare
robbertbos force-pushed renovate/python from 1d518b9d03
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 39s
CI / backend-test (pull_request) Failing after 1m16s
CI / e2e (pull_request) Failing after 1m37s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 26s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 27s
CI / frontend-test (pull_request) Successful in 5m54s
test-build / build (frontend) (pull_request) Successful in 2m12s
test-build / build (pull_request) Failing after 0s
to 32b86b834a
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m15s
CI / e2e (pull_request) Failing after 1m36s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 28s
CI / frontend-test (pull_request) Successful in 5m39s
test-build / build (frontend) (pull_request) Successful in 2m1s
test-build / build (pull_request) Failing after 0s
2026-10-20 02:12:53 +00:00
Compare
robbertbos force-pushed renovate/python from 32b86b834a
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m15s
CI / e2e (pull_request) Failing after 1m36s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 22s
security-scan / Python SAST (bandit) (pull_request) Failing after 21s
security-scan / JS SCA (npm audit) (pull_request) Failing after 36s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (backend) (pull_request) Failing after 28s
CI / frontend-test (pull_request) Successful in 5m39s
test-build / build (frontend) (pull_request) Successful in 2m1s
test-build / build (pull_request) Failing after 0s
to 2a87dba00d
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m17s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Failing after 18s
security-scan / Python SAST (bandit) (pull_request) Failing after 38s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 38s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / frontend-test (pull_request) Successful in 5m40s
test-build / build (backend) (pull_request) Failing after 29s
test-build / build (frontend) (pull_request) Successful in 2m0s
test-build / build (pull_request) Failing after 0s
2026-10-21 02:12:54 +00:00
Compare
robbertbos force-pushed renovate/python from 2a87dba00d
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 41s
CI / backend-test (pull_request) Failing after 1m17s
CI / e2e (pull_request) Failing after 1m44s
CI / release-scripts (pull_request) Failing after 18s
security-scan / Python SAST (bandit) (pull_request) Failing after 38s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 38s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / frontend-test (pull_request) Successful in 5m40s
test-build / build (backend) (pull_request) Failing after 29s
test-build / build (frontend) (pull_request) Successful in 2m0s
test-build / build (pull_request) Failing after 0s
to 98711f5d4e
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 45s
CI / backend-test (pull_request) Failing after 1m28s
CI / e2e (pull_request) Failing after 1m41s
CI / release-scripts (pull_request) Successful in 18s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 38s
security-scan / Python SAST (bandit) (pull_request) Failing after 37s
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 26s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
CI / frontend-test (pull_request) Successful in 5m33s
test-build / build (backend) (pull_request) Failing after 27s
test-build / build (frontend) (pull_request) Successful in 1m40s
test-build / build (pull_request) Failing after 0s
2026-10-22 02:13:47 +00:00
Compare
Some checks failed
renovate/artifacts Artifact file update failure
CI / pre-commit (pull_request) Failing after 45s
Required
Details
CI / backend-test (pull_request) Failing after 1m28s
Required
Details
CI / e2e (pull_request) Failing after 1m41s
Required
Details
CI / release-scripts (pull_request) Successful in 18s
Required
Details
security-scan / Python SCA (pip-audit) (pull_request) Failing after 38s
Required
Details
security-scan / Python SAST (bandit) (pull_request) Failing after 37s
Required
Details
security-scan / JS SCA (npm audit) (pull_request) Failing after 32s
Required
Details
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 26s
Required
Details
security-scan / SBOM (trivy) (pull_request) Successful in 15s
Required
Details
CI / frontend-test (pull_request) Successful in 5m33s
Required
Details
test-build / build (backend) (pull_request) Failing after 27s
Required
Details
test-build / build (frontend) (pull_request) Successful in 1m40s
Required
Details
test-build / build (pull_request) Failing after 0s
Required
Details
Some required checks were not successful.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/python:renovate/python
git switch renovate/python
Sign in to join this conversation.
No reviewers
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
robbertbos/waggle!474
No description provided.