chore(deps): update code dependencies (dev) #17

Merged
renovate Bot merged 1 commits from renovate/dev-code-dependencies into dev 2026-10-11 00:33:12 +00:00

This PR contains the following updates:

Package Change Age Confidence
alembic (changelog) 1.18.4 → 1.20.0 age confidence
asyncpg 0.31.0 → 0.32.0 age confidence
fastapi (changelog) 0.136.3 → 0.142.4 age confidence
fastmcp 3.3.1 → 3.4.8 age confidence
greenlet (changelog) 3.5.1 → 3.5.6 age confidence
kurigram 2.2.23 → 2.2.26 age confidence
pydantic-settings (changelog) 2.14.1 → 2.15.0 age confidence
sqlmodel (changelog) 0.0.38 → 0.0.48 age confidence
uvicorn (changelog) 0.48.0 → 0.54.0 age confidence
uvloop 0.22.1 → 0.23.0 age confidence

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

fastapi/fastapi (fastapi)

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

v0.141.1

Compare Source

Fixes
  • 🐛 Fix support for background tasks and headers from dependencies in app.frontend(). PR #​16105 by @​tiangolo.
Docs

v0.141.0

Compare Source

Features
  • ✨ Add app.frontend(check_dir="auto"), to make local development more convenient with fastapi dev. PR #​16102 by @​tiangolo.

v0.140.13

Compare Source

Fixes
Docs

v0.140.12

Compare Source

Fixes

v0.140.11

Compare Source

Fixes
  • 🐛 Fix response_model_* params ignored for non-generator endpoints with Iterable[..] return type. PR #​15093 by @​YuriiMotov.

v0.140.10

Compare Source

Fixes
Internal

v0.140.9

Compare Source

Fixes
  • 🐛 Fix exclude_defaults not propagated to dict keys and values in jsonable_encoder. PR #​16043 by @​MBGrao.
Internal

v0.140.8

Compare Source

Fixes

v0.140.7

Compare Source

Refactors
Internal

v0.140.6

Compare Source

Refactors
  • ⚡️ Avoid flattening dependencies for request parameters, mainly for OpenAPI. PR #​16073 by @​tiangolo.

v0.140.5

Compare Source

Refactors

v0.140.4

Compare Source

Refactors

v0.140.3

Compare Source

Refactors

v0.140.2

Compare Source

Refactors
Internal

v0.140.1

Compare Source

Refactors
  • ♻️ Update the lru_cache limit for dependencies to account for large apps. PR #​16062 by @​tiangolo.

v0.140.0

Compare Source

Refactors
Docs
Internal

v0.139.2

Compare Source

Fixes
  • 🐛 Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon). PR #​16013 by @​tiangolo.

v0.139.1

Compare Source

Fixes
Docs
  • 📝 Fix topic repository list not being displayed and skip_users not being applied. PR #​15995 by @​YuriiMotov.
Translations
Internal

v0.139.0

Compare Source

Features
  • ✨ Support dependencies in app.frontend(), e.g. for automatic cookie authentication for the frontend. PR #​15908 by @​tiangolo.
Translations
Internal

v0.138.2

Compare Source

Refactors
  • ♻️ Make app.frontend() return 404 for methods other than GET or HEAD with no static file matches. PR #​15863 by @​tiangolo.
Internal

v0.138.1

Compare Source

Refactors
Internal

v0.138.0

Compare Source

Features
  • ✨ Add support for app.frontend("/", directory="dist") and router.frontend("/", directory="dist"). PR #​15800 by @​tiangolo.
Docs
Translations
Internal

v0.137.2

Compare Source

Features
  • ✨ Add iter_route_contexts() for advanced use cases that used to use router.routes (e.g. Jupyverse). PR #​15785 by @​tiangolo.
Translations
Internal

v0.137.1

Compare Source

Fixes

v0.137.0

Compare Source

Breaking Changes

Unblocks ✨ SO MANY THINGS ✨

Before this, router.include_router(other_router) would take each path operation from other_router and "clone" it, or recreate it from scratch.

This would mean that in the end there was only one top level router, part of the app.

The way it is structured here is that there are a few additional classes to handle intermediate metadata for router and route inclusion. That way the information of "router X includes Y and Y includes Z" is stored somewhere, without affecting (recreating / clonning) the final route.

Non Objectives

Dependencies for 404: previously I intended to support dependencies that would be executed even for 404, but that would conflict with the fact that a router could not find a match, but the next router did find a match. Executing dependencies in the router that did not find a match would not make sense, they could consume the request, body, etc. This original idea was discarded.

Specific Breaking Changes

Now router.routes is no longer a plain list of APIRoute objects, it can contain these intermediate objects that can contain additional routers, forming a tree.

Any logic that depended on iterating on the router.routes directly would be affected, that logic cannot expect to be able to extract data from a plain list of routes, as it's no longer a plain list but a tree.

Additionally, any logic that iterated on router.routes to modify them would now also see these new objects, and would not see all the routes in the app.

router.routes should be considered an internal implementation detail, only passed around to the FastAPI functions that need it.

Features
  • Adding routes (path operations) after a router is included now works, they are reflected as they are not copied.
  • Including subrouter in mainrouter can be done before adding routes (path operations) to subrouter, because now the the entire object is stored instead of copying the routes.
  • As routes are not copied, in some cases that might save some memory.
Alpha Features

This is not documented yet, so it's not officially supported yet and could change in the future.

But, as APIRoute and APIRouter instances are now preserved, they could be customized.

APIRouter has two new methods, .matches() and .handle(), counterpart to the existing ones in APIRoute. With this a router could customize how it matches and handles requests. For example, it could match only requests that include some specific header, for example for handling versions in headers.

Still, for now, consider this very experimental and potentially changing and breaking in the future.

Future Features Enabled
  • Custom APIRoute subclasses (undocumented, but alraedy works as desccribed above)
  • Custom APIRouter subclasses (undocumented, but already works as described above)
  • Dependencies per router
  • Exception handlers per router
  • Middleware per router
  • Other features planned
Docs
Translations
Internal
PrefectHQ/fastmcp (fastmcp)

v3.4.8: : Long Arm of the Patch

Compare Source

This release contains important security and bug fixes. All users are encouraged to upgrade. Thanks to our 2 contributors.

What's Changed

Security 🔒
Docs 📚

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.7...v3.4.8

v3.4.7: : Know Your Audience

Compare Source

FastMCP 3.4.7 restores CIMD private_key_jwt authentication for OAuthProxy deployments at a bare origin. Client assertions are now validated against the exact token endpoint advertised in authorization server metadata, eliminating the doubled-slash audience mismatch.

What's Changed

Security 🔒
Docs 📚

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.6...v3.4.7

v3.4.6: : Trust, but Proxy

Compare Source

FastMCP 3.4.6 backports trusted-proxy support for SSRF-protected OAuth metadata and JWKS fetches. Deployments can now route these requests through a mandated corporate proxy while preserving custom CA certificates; FastMCP refuses the fetch when no proxy is configured instead of risking an unprotected direct request.

What's Changed

Fixes 🐞
Docs 📚

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.5...v3.4.6

v3.4.5: : Key Change

Compare Source

FastMCP 3.4.5 collects five fixes for the 3.x line. The one that prompted it: a single Ed25519 key in a JWKS — which Rauthy, Ory Hydra, and some Keycloak configurations publish by default — made JWTVerifier reject every token, including ones correctly signed by supported keys in the same set.

What's Changed

Fixes 🐞
Docs 📚

New Contributors

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.4...v3.4.5

v3.4.4: : Host in Translation

Compare Source

FastMCP 3.4.4 restores HTTP deployment compatibility after the 3.4.3 Host/Origin guard changed default behavior for existing ASGI, serverless, and reverse-proxy deployments. The guard implementation remains available for deployments that opt in with explicit trusted hosts and origins, while 3.x returns to accepting traffic that worked before the patch. This release also adds Hugging Face OAuth provider support, with docs and examples for public and private apps, PKCE, Dynamic Client Registration, and CIMD.

What's Changed

Enhancements ✨
Fixes 🐞
Docs 📚

New Contributors

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.3...v3.4.4

v3.4.3: : The Fast and the Secure-ious

Compare Source

FastMCP 3.4.3 closes out a month of SSRF and OAuth hardening: NAT64, 6to4, Teredo, and ISATAP transition addresses can no longer smuggle private IPv4 targets past the SSRF allow-list, Streamable HTTP now validates Host and Origin before session handling to block DNS rebinding against localhost-bound servers, and OAuth redirect validation rejects unsafe schemes and unregistered DCR redirect URIs. Alongside the security work, this release also fixes proxy session teardown races, discriminator-tag handling in JSON schema conversion, and several smaller reliability issues.

What's Changed

Enhancements ✨
Security 🔒
Fixes 🐞
Docs 📚
Dependencies 📦
Other Changes 🦾

New Contributors

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.2...v3.4.3

v3.4.2: : Heads Up

Compare Source

FastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as cat without being rejected before signature and claim validation, while unsupported critical headers are still rejected.

What's Changed

Fixes 🐞
Docs 📚

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2

v3.4.1: : Floor It

Compare Source

FastMCP 3.4.1 floors Starlette at >=1.0.1 so installs can no longer resolve to a version affected by CVE-2026-48710 — previously the dependency was only constrained transitively through mcp, which allowed vulnerable versions. It also makes OAuthProxy log refresh-token cache misses instead of failing silently.

What's Changed

Enhancements ✨
  • Log refresh-token misses in OAuthProxy instead of failing silently by @​jlowin in #​4276
Security 🔒
Docs 📚

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1

v3.4.0: : Remote Control

Compare Source

FastMCP 3.4 is about reaching servers that live somewhere else. The headline is fastmcp-remote, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, this release hardens the proxy layer those remote connections depend on — making bridges fail loudly instead of silently, and keeping authenticated sessions alive across the long idle periods that remote clients are prone to.

fastmcp-remote

Some MCP hosts still insist on launching a local stdio command, even when the server you want is already running over HTTP. FastMCP could already proxy a remote URL through fastmcp run, but that pulls in the full server-runner surface. fastmcp-remote is the small, single-purpose version: one URL in, one local stdio proxy out.

{
  "mcpServers": {
    "linear": {
      "command": "uvx",
      "args": ["fastmcp-remote", "https://mcp.linear.app/mcp"]
    }
  }
}

OAuth is enabled automatically for HTTPS servers, with support for explicit bearer tokens and custom headers when you need them. The implementation stays on FastMCP primitives — Client, OAuth, create_proxy, and stdio — and credits the original npm mcp-remote project for the command shape.

Bridges That Fail Loudly

Proxies are lazy bridges: they don't touch the upstream server during construction, but they do forward real MCP requests once a client connects. As of 3.4, initialize is part of that forwarded surface — so a proxy only reports a successful handshake after the upstream server initializes too. A missing backend, a wrong URL (the server root instead of /mcp), denied upstream auth, or a non-MCP upstream now fails the downstream initialize instead of producing a "connected" proxy whose capability fetches quietly come back empty. The proxy also forwards ping upstream now.

This is an intentional behavior change from 3.3, and the reason bridge callers like fastmcp-remote surface real upstream failures instead of degrading into empty tool lists.

Auth That Survives Idle Time

Remote sessions sit idle, and short-lived upstream tokens punish that. fastmcp_access_token_expiry_seconds decouples the FastMCP-issued token's lifetime from the upstream expires_in — the FastMCP token is just a reference into proxy storage, re-validated and transparently refreshed on every request, so it can safely outlive a 5-minute upstream token without forcing a full OAuth flow after every idle period. When the upstream issues no refresh token, the lifetime is capped to match.

from fastmcp.server.auth.providers.github import GitHubProvider

auth = GitHubProvider(
    client_id="...",
    client_secret="...",
    base_url="https://your-server.com",
    fastmcp_access_token_expiry_seconds=60 * 60 * 24,  # 24h client-facing token
)

Alongside it, token_expiry_threshold_seconds treats tokens as expired N seconds early to close refresh races, and WorkOSProvider gains valid_scopes and extra_authorize_params.

Returnable Tool Errors

A tool could previously only signal an error by raising, which flattens to a text-only result and discards structured content. ToolResult now accepts is_error, mapping to CallToolResult.isError so a tool can hand back a rich error the model can see and act on. The proxy uses this to forward upstream tool errors intact instead of collapsing them.

@mcp.tool
def lookup(id: str) -> ToolResult:
    if not found(id):
        return ToolResult(
            content="not found",
            structured_content={"code": 404, "id": id},
            is_error=True,
        )
    ...

Code Mode: Safe by Default

MontySandboxProvider() now applies a conservative baseline when constructed without limits — 30s duration, 100 MB memory — and CodeMode caps tool calls at 50 per execute block. Both remain explicitly opt-out (limits=None, max_tool_calls=None), so the safe configuration is the default instead of something you had to remember to turn on.

Under the Hood

The auth stack migrated its JWT handling to joserfc. The fastmcp dev CLI gains --host and --log-panel/--no-log-panel. Resources created from templates now preserve annotations, meta, title, and icons; resource templates with query params work on proxied servers; OTEL spans cover the sampling step and tool execution; MCP config files are read as UTF-8; and the OAuth server metadata endpoint now answers at the /.well-known/openid-configuration alias.

8 new contributors this release.

What's Changed

New Features 🎉
Breaking Changes ⚠️
Enhancements ✨
Security 🔒
Fixes 🐞
Docs 📚
Dependencies 📦
Other Changes 🦾

New Contributors

Full Changelog: https://github.com/PrefectHQ/fastmcp/compare/v3.3.1...v3.4.0

python-greenlet/greenlet (greenlet)

v3.5.6

Compare Source

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

  • Correct a race condition that could lead to garbage collection
    unintentionally being disabled. See PR 529 <https://github.com/python-greenlet/greenlet/pull/529>_ by Yurii.

v3.5.5

Compare Source

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

  • Link the C++ runtime statically into the Windows wheels again, as the
    Appveyor builds did through 3.3.0. Since 3.3.1 _greenlet.pyd
    imported MSVCP140.dll, which no Windows CPython distribution ships,
    so importing greenlet failed on machines without the Visual C++
    redistributable. See issue 525 <https://github.com/python-greenlet/greenlet/issues/525>_. Issue
    and pull request by Daniel Sticker.

.. note::
Binary 3.15 wheels are now built with 3.15.0rc1. This should be
compatible with future 3.15 releases and is believed compatible
with 3.15b4 as well (but not earlier versions).

v3.5.4

Compare Source

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

  • Fix a crash (segfault) on free-threaded builds of Python 3.14 and
    later when the garbage collector runs while a greenlet that was
    started from a non-empty C-stack-reference state is active.
    See issue 515 <https://github.com/python-greenlet/greenlet/issues/515>_.
    Thanks to ddorian and Kumar Aditya.

  • Fix a potential use-after-free on free-threaded builds of Python 3.14
    and later when the garbage collector runs while a greenlet is
    suspended holding a _PyCStackRef (for example, mid attribute
    resolution). See
    issue 515 <https://github.com/python-greenlet/greenlet/issues/515>_.
    Thanks to ddorian and Kumar Aditya.

  • Fix a deadlock on free-threaded builds when a greenlet switch happened
    while a PyCriticalSection was held -- for example inside asyncio's
    Task.__step, which holds one on the running task for the duration of
    the step. See PR 519 <https://github.com/python-greenlet/greenlet/pull/519/>.
    Thanks to ddorian and Kumar Aditya.

.. note::
Binary 3.15 wheels are now built with Python 3.15b4. These may not
be compatible with earlier or later versions of 3.15. Binary
3.15 wheels of greenlet from previous releases (e.g., 3.5.3)
may not be compatible with Python 3.15b4.

v3.5.3

Compare Source

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

  • Fix a crash (segfault) on free-threaded builds of Python 3.14 and
    later when the garbage collector runs while a greenlet that was
    started from a non-empty C-stack-reference state is active.
    See issue 515 <https://github.com/python-greenlet/greenlet/issues/515>_.
    Thanks to ddorian and Kumar Aditya.

  • Fix a potential use-after-free on free-threaded builds of Python 3.14
    and later when the garbage collector runs while a greenlet is
    suspended holding a _PyCStackRef (for example, mid attribute
    resolution). See
    issue 515 <https://github.com/python-greenlet/greenlet/issues/515>_.
    Thanks to ddorian and Kumar Aditya.

  • Fix a deadlock on free-threaded builds when a greenlet switch happened
    while a PyCriticalSection was held -- for example inside asyncio's
    Task.__step, which holds one on the running task for the duration of
    the step. See PR 519 <https://github.com/python-greenlet/greenlet/pull/519/>.
    Thanks to ddorian and Kumar Aditya.

.. note::
Binary 3.15 wheels are now built with Python 3.15b4. These may not
be compatible with earlier or later versions of 3.15. Binary
3.15 wheels of greenlet from previous releases (e.g., 3.5.3)
may not be compatible with Python 3.15b4.

v3.5.2

Compare Source

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

  • The minimum supported version of Python 3.15 is now 3.15b2.
  • Fix some garbage-collection related crashes on free-threaded Python
    3.15. Thanks to Kumar Aditya in PR #&#8203;511 <https://github.com/python-greenlet/greenlet/pull/511>_.
  • Improve garbage collection of greenlets. This mostly applies to
    Python 3.15. Thanks to Kumar Aditya in PR #&#8203;512 <https://github.com/python-greenlet/greenlet/pull/512>_.
KurimuzonAkuma/pyrogram (kurigram)

v2.2.26

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/kurigram-org/kurigram/compare/v2.2.25...v2.2.26

v2.2.25

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/KurimuzonAkuma/kurigram/compare/v2.2.24...v2.2.25

v2.2.24

Compare Source

What's Changed

Full Changelog: https://github.com/KurimuzonAkuma/kurigram/compare/v2.2.23...v2.2.24

pydantic/pydantic-settings (pydantic-settings)

v2.15.0

Compare Source

Highlights

Behavior changes
  • case_sensitive now applies to init kwargs and config-file sources (#​900). InitSettingsSource and the JSON/TOML/YAML config sources previously ignored case_sensitive. Since it defaults to False, case-insensitive matching is now the default for these sources — e.g. Settings(TeSt=...) now populates a test field where it previously did not. Nested keys are still matched case-sensitively.
  • Fields with unresolved forward references now emit a warning (#​901). Settings sources can silently fail to resolve such fields; they now raise IncompleteFieldDefinitionWarning telling you to call model_rebuild(). If you have filterwarnings = error configured, this may surface as a new failure.
  • Non-JSON env values for strict fields now raise ValidationError (#​926) instead of a less specific error.
New features
  • Show environment variable names in CLI help via cli_show_env_vars=True (#​860), so generated --help output doubles as configuration documentation.
  • PYDANTIC_SETTINGS_DEBUG for debugging settings resolution (#​906, #​913). Set it to a truthy value with DEBUG logging enabled to see each source's contribution in priority order, which source won for each value, and which env_file/secret files were probed, loaded, or skipped — the long-standing "why isn't my .env being picked up?" question.
  • toml_table_header for regular TOML files (#​882, #​886, #​887), letting you root settings at a nested table in any TOML file, not just pyproject.toml.
  • Traversable support for JSON/TOML/YAML file sources (#​902), so you can load config packaged inside a distribution — including files inside a zip or wheel — via importlib.resources.files(...) without casting to Path.
  • GCP: project_id can come from an earlier settings source (#​878), rather than only from the constructor or GOOGLE_CLOUD_PROJECT.
Bug fixes
  • Fix env vars not loading on Windows with case_sensitive=True (#​894). Windows upper-cases os.environ keys, so fields raised Field required instead of picking up their values.
  • Read secret files as UTF-8 instead of the platform locale encoding (#​917). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.
  • Fix AliasPath on nested model fields not JSON-decoding env values (#​898).
  • Fix case-insensitive matching for optional nested models (#​905).
  • Fix dotenv extras being wrongly claimed by a complex field sharing a name prefix (#​912) — e.g. dbx_token being swallowed by a db: dict field.
  • Fix nested_model_default_partial_update=True corrupting discriminated unions (#​876).
  • Fix Secret subclasses crashing when loaded from the environment (#​920).
  • Fix enum names not parsing through nested annotations such as Optional[Annotated[MyEnum, ...]] with env_parse_enums=True (#​910).
  • An empty yaml_config_section now falls back to defaults instead of raising AttributeError: 'NoneType' object has no attribute 'keys' (#​914).
  • NestedSecretsSettingsSource no longer follows symlinks pointing outside secrets_dir (#​889).
  • GCP: skip the list_secrets call when case_sensitive=True (#​862), lowering the required IAM permissions to just roles/secretmanager.secretAccessor.
  • AWS: types-boto3[secretsmanager] is no longer required at runtime (#​880).
Documentation
  • Document JSON parsing of complex env values, plus a comma-separated-values recipe (#​919).
  • Recommend an async settings loading pattern (#​908).
  • Clarify behavior when an unprefixed value is present in a dotenv file (#​895).
  • Clarify environment variable helper descriptions (#​867) and fix assorted typos (#​904).
All changes (including dependency bumps and internal maintenance)

What's Changed

New Contributors

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

v2.14.2

Compare Source

What's Changed

This is a security patch release.

Security

Fixes GHSA-4xgf-cpjx-pc3j: NestedSecretsSettingsSource with secrets_nested_subdir=True could follow a symbolic link inside secrets_dir pointing outside it, reading out-of-tree files into settings values and bypassing the secrets_dir_max_size cap. Affected versions: >= 2.12.0, < 2.14.2.

Full Changelog: https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2

fastapi/sqlmodel (sqlmodel)

v0.0.48

Compare Source

Features
Internal

v0.0.47

Compare Source

Features
  • ✨ Add direct support for PostgreSQL, MySQL, and MariaDB, include in CI tests. PR #​2103 by @​tiangolo.

v0.0.46

Compare Source

Fixes

v0.0.45

Compare Source

Breaking Changes

datetime fields now use UTCDateTime, a custom type based on DateTime(timezone=True). It requires aware datetime parameters, normalizes them to UTC, and returns aware UTC values from database reads, including on SQLite and MySQL/MariaDB. Pydantic's AwareDatetime uses the same type, while NaiveDatetime explicitly selects DateTime(timezone=False). Plain datetime validation still accepts both aware and naive values, but naive database parameters now raise an error.

Existing databases are not changed automatically. To retain naive storage, use NaiveDatetime or an explicit Field(sa_type=DateTime(timezone=False)). Explicit SQLAlchemy types retain their existing behavior. PostgreSQL needs a column migration that explicitly specifies the timezone of existing values. SQLite and MySQL/MariaDB keep their column definitions, but existing non-UTC values need a data migration before adopting the new type. Update datetime producers, query parameters, comparisons, and any database defaults to follow the new UTC convention.

Read Datetimes and Timezones: Upgrade Existing Applications before upgrading.

v0.0.44

Compare Source

Refactors

v0.0.43

Compare Source

Fixes
Internal

v0.0.42

Compare Source

Features

v0.0.41

Compare Source

Refactors

v0.0.40

Compare Source

Docs
Internal

v0.0.39

Compare Source

Features
  • ✨ Add SQLModel Agent Library Skill, install with uvx library-skills. PR #​2017 by @​tiangolo.
Fixes
Docs
Internal
Kludex/uvicorn (uvicorn)

v0.54.0: Version 0.54.0

Compare Source

📨 Send metadata after the response body

uvicorn 0.54.0 adds response trailers and 103 Early Hints to its experimental HTTP/2 implementation through zttp.

uv add uvicorn==0.54.0 "zttp>=0.0.34"
  • Send HTTP/2 response trailers (#​3146). The ASGI http.response.trailers extension lets applications send metadata, such as checksums, after the response body. Clients must send TE: trailers to receive them. Multiple trailer messages are combined before completing the response.
  • HTTP/2 remains experimental and opt-in. Enable it with --http zttp --http2. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.

💡 Hint at resources before the final response

  • Send 103 Early Hints over HTTP/2 (#​3137). Applications can use the ASGI http.response.early_hint extension to send resource hints before the final response. Each supplied link becomes a separate Link header.

Full changelog: 0.53.0...0.54.0

v0.53.0: Version 0.53.0

Compare Source

🌐 Opt-in HTTP/2 support

uvicorn 0.53.0 adds experimental HTTP/2 through zttp, alongside a new zuvloop integration and connection-handling improvements.

uv add uvicorn==0.53.0
  • Serve HTTP/1.1 and HTTP/2 with zttp (#​2982, #​3101). Install zttp, then enable HTTP/2 with --http zttp --http2. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.
  • HTTP/2 remains experimental. Upgrade-based h2c and WebSockets over HTTP/2 are not supported.

⚙️ More event loop choice

  • Run Uvicorn with zuvloop (#​3104). Install zuvloop separately and select it explicitly with --loop zuvloop on CPython 3.14 or newer.

🛡️ More reliable connections and proxies

  • Honor Connection: close token lists (#​3103). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.
  • Trust IPv6 loopback proxies by default (#​3119). The default FORWARDED_ALLOW_IPS value now includes ::1.
  • Keep upgraded WebSockets alive (#​3107). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.

Full changelog: 0.52.4...0.53.0

v0.52.4: Version 0.52.4

Compare Source

Fixed
  • Remove duplicate Date headers from accepted WebSocket handshakes with websockets-sansio (#​3078)

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4

v0.52.3: Version 0.52.3

Compare Source

Changed
  • Update zttp to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (#​3067)

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3

v0.52.2: Version 0.52.2

Compare Source

Fixed
  • Update zttp to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (#​3063)

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2

v0.52.1: Version 0.52.1

Compare Source

Fixed
  • Complete the closing handshake on server-initiated WebSocket closes in the websockets-sansio and wsproto implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (#​3053)
  • Add missing write flow control to the websockets-sansio implementation, preventing data truncation on server-initiated closes with large in-flight payloads (#​3048)
  • Handle connection loss while a WebSocket write is waiting on backpressure (#​3050)
  • Remove duplicate Content-Type and Content-Length headers from WebSocket denial responses on the websockets-sansio implementation, and deliver non-UTF-8 denial bodies intact (#​3041)

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1

v0.52.0: Version 0.52.0

Compare Source

This release adds an experimental HTTP/1.1 implementation backed by zttp, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.

It is still experimental, so don't put it in front of production traffic yet. Try it with --http zttp, and please send any feedback to the issue tracker.

Added
  • Add an experimental zttp HTTP/1.1 implementation, selectable with --http zttp (#​2979)
Fixed
  • Keep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (#​3036)

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0

v0.51.0: Version 0.51.0

Compare Source

What's Changed

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.2...0.51.0

v0.50.2: Version 0.50.2

Compare Source

What's Changed

  • Require websockets>=13.0 for the default sansio implementation by @​Kludex in #​3021

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.1...0.50.2

v0.50.1: Version 0.50.1

Compare Source

What's Changed

  • Split comma-separated Sec-WebSocket-Protocol values in the websockets-sansio implementation by @​Aayush7352 in #​3019

New Contributors

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.50.0...0.50.1

v0.50.0: Version 0.50.0

Compare Source

What's Changed

  • Memoize trusted host checks to avoid re-parsing the client IP per request by @​Kludex in #​2970
  • Cache the asgi scope sub-dict per connection by @​Kludex in #​2976
  • Build a fresh asgi scope dict per request by @​Kludex in #​2977
  • Replace click.style with an internal ANSI style helper by @​Kludex in #​2981
  • Avoid copying single-frame WebSocket payloads in websockets-sansio by @​Kludex in #​2983
  • Deprecate the legacy websockets implementation and default auto to websockets-sansio by @​Kludex in #​2985
  • Exit with a dedicated code on startup failure and stop the supervisor when a worker can't boot by @​Kludex in #​3001
  • Skip the eager app import in the parent when spawning workers by @​Kludex in #​3012

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0

v0.49.0: Version 0.49.0

Compare Source

What's Changed

  • Bump httptools minimum version to 0.8.0 by @​Kludex in #​2962
  • Consume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by @​Kludex in #​2971

Full Changelog: https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0

MagicStack/uvloop (uvloop)

v0.23.0

Compare Source

Changes

Fixes

Build


Configuration

📅 Schedule: (in timezone Europe/Warsaw)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

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

👻 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/) | |---|---|---|---| | [alembic](https://github.com/sqlalchemy/alembic) ([changelog](https://alembic.sqlalchemy.org/en/latest/changelog.html)) | `1.18.4` → `1.20.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/alembic/1.20.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/alembic/1.18.4/1.20.0?slim=true) | | [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) | | [fastapi](https://github.com/fastapi/fastapi) ([changelog](https://fastapi.tiangolo.com/release-notes/)) | `0.136.3` → `0.142.4` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/fastapi/0.142.4?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastapi/0.136.3/0.142.4?slim=true) | | [fastmcp](https://github.com/PrefectHQ/fastmcp) | `3.3.1` → `3.4.8` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/fastmcp/3.4.8?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastmcp/3.3.1/3.4.8?slim=true) | | [greenlet](https://github.com/python-greenlet/greenlet) ([changelog](https://greenlet.readthedocs.io/en/latest/changes.html)) | `3.5.1` → `3.5.6` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/greenlet/3.5.6?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/greenlet/3.5.1/3.5.6?slim=true) | | [kurigram](https://github.com/KurimuzonAkuma/pyrogram) | `2.2.23` → `2.2.26` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/kurigram/2.2.26?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/kurigram/2.2.23/2.2.26?slim=true) | | [pydantic-settings](https://github.com/pydantic/pydantic-settings) ([changelog](https://github.com/pydantic/pydantic-settings/releases)) | `2.14.1` → `2.15.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/pydantic-settings/2.15.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pydantic-settings/2.14.1/2.15.0?slim=true) | | [sqlmodel](https://github.com/fastapi/sqlmodel) ([changelog](https://sqlmodel.tiangolo.com/release-notes/)) | `0.0.38` → `0.0.48` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/sqlmodel/0.0.48?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/sqlmodel/0.0.38/0.0.48?slim=true) | | [uvicorn](https://github.com/Kludex/uvicorn) ([changelog](https://uvicorn.dev/release-notes)) | `0.48.0` → `0.54.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/uvicorn/0.54.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/uvicorn/0.48.0/0.54.0?slim=true) | | [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) | --- ### 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>fastapi/fastapi (fastapi)</summary> ### [`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). ### [`v0.141.1`](https://github.com/fastapi/fastapi/releases/tag/0.141.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.141.0...0.141.1) ##### Fixes - 🐛 Fix support for background tasks and headers from dependencies in `app.frontend()`. PR [#&#8203;16105](https://github.com/fastapi/fastapi/pull/16105) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Document `FASTAPI_ENV` in FastAPI CLI guide. PR [#&#8203;16104](https://github.com/fastapi/fastapi/pull/16104) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.141.0`](https://github.com/fastapi/fastapi/releases/tag/0.141.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.13...0.141.0) ##### Features - ✨ Add `app.frontend(check_dir="auto")`, to make local development more convenient with `fastapi dev`. PR [#&#8203;16102](https://github.com/fastapi/fastapi/pull/16102) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.13`](https://github.com/fastapi/fastapi/releases/tag/0.140.13) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.12...0.140.13) ##### Fixes - 🐛 Fix `status_code` being ignored for SSE and JSONL streaming endpoints. PR [#&#8203;15937](https://github.com/fastapi/fastapi/pull/15937) by [@&#8203;SAURABHSALVE](https://github.com/SAURABHSALVE). ##### Docs - 📝 Fix `format_sse_event` docstring rendering of `\n\n` terminator. PR [#&#8203;15613](https://github.com/fastapi/fastapi/pull/15613) by [@&#8203;AshNicolus](https://github.com/AshNicolus). - 📝 Add API reference page for fastapi.sse. PR [#&#8203;15930](https://github.com/fastapi/fastapi/pull/15930) by [@&#8203;SAURABHSALVE](https://github.com/SAURABHSALVE). ### [`v0.140.12`](https://github.com/fastapi/fastapi/releases/tag/0.140.12) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.11...0.140.12) ##### Fixes - 🐛 Fix line splitting in `format_sse_event` to comply with SSE spec. PR [#&#8203;15515](https://github.com/fastapi/fastapi/pull/15515) by [@&#8203;Zawwarsami16](https://github.com/Zawwarsami16). ### [`v0.140.11`](https://github.com/fastapi/fastapi/releases/tag/0.140.11) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.10...0.140.11) ##### Fixes - 🐛 Fix `response_model_*` params ignored for non-generator endpoints with `Iterable[..]` return type. PR [#&#8203;15093](https://github.com/fastapi/fastapi/pull/15093) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.140.10`](https://github.com/fastapi/fastapi/releases/tag/0.140.10) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.9...0.140.10) ##### Fixes - 🐛 Fix handling sequences with nested Annotated types. PR [#&#8203;14874](https://github.com/fastapi/fastapi/pull/14874) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - 🐛 Accept any base test failure as regression. PR [#&#8203;16092](https://github.com/fastapi/fastapi/pull/16092) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Preserve pytest exit code in regression check. PR [#&#8203;16091](https://github.com/fastapi/fastapi/pull/16091) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✅ Test PR regressions against base code. PR [#&#8203;16090](https://github.com/fastapi/fastapi/pull/16090) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.9`](https://github.com/fastapi/fastapi/releases/tag/0.140.9) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.8...0.140.9) ##### Fixes - 🐛 Fix `exclude_defaults` not propagated to dict keys and values in `jsonable_encoder`. PR [#&#8203;16043](https://github.com/fastapi/fastapi/pull/16043) by [@&#8203;MBGrao](https://github.com/MBGrao). ##### Internal - ⬆ Bump gitpython from 3.1.50 to 3.1.54. PR [#&#8203;16047](https://github.com/fastapi/fastapi/pull/16047) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pymdown-extensions from 10.21.3 to 11.0. PR [#&#8203;16048](https://github.com/fastapi/fastapi/pull/16048) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pyasn1 from 0.6.3 to 0.6.4. PR [#&#8203;16045](https://github.com/fastapi/fastapi/pull/16045) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.140.8`](https://github.com/fastapi/fastapi/releases/tag/0.140.8) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.7...0.140.8) ##### Fixes - 🐛 Fix stream item type lost when using `include_router()`. PR [#&#8203;15077](https://github.com/fastapi/fastapi/pull/15077) by [@&#8203;alex-raw](https://github.com/alex-raw). ### [`v0.140.7`](https://github.com/fastapi/fastapi/releases/tag/0.140.7) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.6...0.140.7) ##### Refactors - ⚡️ Avoid flattening dependencies for OpenAPI. PR [#&#8203;16076](https://github.com/fastapi/fastapi/pull/16076) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ⬆️ Upgrade latest-changes to 0.7.1. PR [#&#8203;16077](https://github.com/fastapi/fastapi/pull/16077) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Add OpenAPI dependency benchmarks. PR [#&#8203;16075](https://github.com/fastapi/fastapi/pull/16075) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.6`](https://github.com/fastapi/fastapi/releases/tag/0.140.6) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.5...0.140.6) ##### Refactors - ⚡️ Avoid flattening dependencies for request parameters, mainly for OpenAPI. PR [#&#8203;16073](https://github.com/fastapi/fastapi/pull/16073) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.5`](https://github.com/fastapi/fastapi/releases/tag/0.140.5) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.4...0.140.5) ##### Refactors - ⚡️ Avoid flattening dependencies for body fields. PR [#&#8203;16071](https://github.com/fastapi/fastapi/pull/16071) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.4`](https://github.com/fastapi/fastapi/releases/tag/0.140.4) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.3...0.140.4) ##### Refactors - ⚡️ Skip unused dependency repeat bookkeeping. PR [#&#8203;16069](https://github.com/fastapi/fastapi/pull/16069) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.3`](https://github.com/fastapi/fastapi/releases/tag/0.140.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.2...0.140.3) ##### Refactors - ⚡️ Avoid repeated dependency flattening in OpenAPI. PR [#&#8203;16067](https://github.com/fastapi/fastapi/pull/16067) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.2`](https://github.com/fastapi/fastapi/releases/tag/0.140.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.1...0.140.2) ##### Refactors - ⚡️ Stop retaining flat dependency trees. PR [#&#8203;16065](https://github.com/fastapi/fastapi/pull/16065) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Add new memory benchmark. PR [#&#8203;16064](https://github.com/fastapi/fastapi/pull/16064) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.1`](https://github.com/fastapi/fastapi/releases/tag/0.140.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.0...0.140.1) ##### Refactors - ♻️ Update the lru_cache limit for dependencies to account for large apps. PR [#&#8203;16062](https://github.com/fastapi/fastapi/pull/16062) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.0`](https://github.com/fastapi/fastapi/releases/tag/0.140.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.2...0.140.0) ##### Refactors - ⚡️ Reduce memory usage in dependencies. PR [#&#8203;16049](https://github.com/fastapi/fastapi/pull/16049) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Fix links in docs. PR [#&#8203;15967](https://github.com/fastapi/fastapi/pull/15967) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 📝 Add Library Skills documentation. PR [#&#8203;16041](https://github.com/fastapi/fastapi/pull/16041) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update docs to use uv projects by default. PR [#&#8203;16032](https://github.com/fastapi/fastapi/pull/16032) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Restructure FastAPI People and related pages. PR [#&#8203;16015](https://github.com/fastapi/fastapi/pull/16015) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Add CI memory benchmark. PR [#&#8203;16046](https://github.com/fastapi/fastapi/pull/16046) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16027](https://github.com/fastapi/fastapi/pull/16027) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove now-obsolete scripts to generate data for FastAPI People. PR [#&#8203;16016](https://github.com/fastapi/fastapi/pull/16016) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.2`](https://github.com/fastapi/fastapi/releases/tag/0.139.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.1...0.139.2) ##### Fixes - 🐛 Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon). PR [#&#8203;16013](https://github.com/fastapi/fastapi/pull/16013) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.1`](https://github.com/fastapi/fastapi/releases/tag/0.139.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.0...0.139.1) ##### Fixes - 🐛 Fix frontend fallback support for doted paths like `/users/john.doe`. PR [#&#8203;16011](https://github.com/fastapi/fastapi/pull/16011) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Fix topic repository list not being displayed and `skip_users` not being applied. PR [#&#8203;15995](https://github.com/fastapi/fastapi/pull/15995) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Translations - 🌐 Update translations for tr (update-outdated). PR [#&#8203;16005](https://github.com/fastapi/fastapi/pull/16005) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15996](https://github.com/fastapi/fastapi/pull/15996) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;16006](https://github.com/fastapi/fastapi/pull/16006) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15999](https://github.com/fastapi/fastapi/pull/15999) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;16004](https://github.com/fastapi/fastapi/pull/16004) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;16001](https://github.com/fastapi/fastapi/pull/16001) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;16003](https://github.com/fastapi/fastapi/pull/16003) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15998](https://github.com/fastapi/fastapi/pull/15998) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;16000](https://github.com/fastapi/fastapi/pull/16000) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15997](https://github.com/fastapi/fastapi/pull/15997) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;16002](https://github.com/fastapi/fastapi/pull/16002) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15990](https://github.com/fastapi/fastapi/pull/15990) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15925](https://github.com/fastapi/fastapi/pull/15925) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15797](https://github.com/fastapi/fastapi/pull/15797) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update `llm-prompt.md` for Hindi. PR [#&#8203;15810](https://github.com/fastapi/fastapi/pull/15810) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🌐 Fix language-specific translation prompt for Russian language. PR [#&#8203;15924](https://github.com/fastapi/fastapi/pull/15924) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - ⬆ Bump the python-packages group across 1 directory with 6 updates. PR [#&#8203;15981](https://github.com/fastapi/fastapi/pull/15981) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typing-extensions from 4.15.0 to 4.16.0. PR [#&#8203;15982](https://github.com/fastapi/fastapi/pull/15982) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group across 1 directory with 4 updates. PR [#&#8203;15983](https://github.com/fastapi/fastapi/pull/15983) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pre-commit hooks. PR [#&#8203;15985](https://github.com/fastapi/fastapi/pull/15985) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use `FASTAPI_LATEST_CHANGES` token in `bump-pre-commit-hooks` workflow. PR [#&#8203;15984](https://github.com/fastapi/fastapi/pull/15984) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Add GH workflow to bump pre-commit hook versions. PR [#&#8203;15873](https://github.com/fastapi/fastapi/pull/15873) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔧 Set Dependabot schedule interval to "monthly". PR [#&#8203;15874](https://github.com/fastapi/fastapi/pull/15874) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump CodSpeedHQ/action from 4.17.6 to 4.18.1 in the github-actions group. PR [#&#8203;15950](https://github.com/fastapi/fastapi/pull/15950) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group with 8 updates. PR [#&#8203;15952](https://github.com/fastapi/fastapi/pull/15952) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔧 Update sponsors: add TutorCruncher. PR [#&#8203;15947](https://github.com/fastapi/fastapi/pull/15947) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix notify translations checkout target. PR [#&#8203;15933](https://github.com/fastapi/fastapi/pull/15933) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix latest-changes checkout target. PR [#&#8203;15932](https://github.com/fastapi/fastapi/pull/15932) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove RapidProxy. PR [#&#8203;15929](https://github.com/fastapi/fastapi/pull/15929) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.8.1. PR [#&#8203;15928](https://github.com/fastapi/fastapi/pull/15928) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update latest-changes to 0.6.1. PR [#&#8203;15926](https://github.com/fastapi/fastapi/pull/15926) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.0`](https://github.com/fastapi/fastapi/releases/tag/0.139.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.2...0.139.0) ##### Features - ✨ Support dependencies in `app.frontend()`, e.g. for automatic cookie authentication for the frontend. PR [#&#8203;15908](https://github.com/fastapi/fastapi/pull/15908) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15897](https://github.com/fastapi/fastapi/pull/15897) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15895](https://github.com/fastapi/fastapi/pull/15895) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15896](https://github.com/fastapi/fastapi/pull/15896) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15899](https://github.com/fastapi/fastapi/pull/15899) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15892](https://github.com/fastapi/fastapi/pull/15892) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15891](https://github.com/fastapi/fastapi/pull/15891) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15893](https://github.com/fastapi/fastapi/pull/15893) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15898](https://github.com/fastapi/fastapi/pull/15898) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15900](https://github.com/fastapi/fastapi/pull/15900) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15890](https://github.com/fastapi/fastapi/pull/15890) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15894](https://github.com/fastapi/fastapi/pull/15894) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (add-missing). PR [#&#8203;15888](https://github.com/fastapi/fastapi/pull/15888) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (add-missing). PR [#&#8203;15880](https://github.com/fastapi/fastapi/pull/15880) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (add-missing). PR [#&#8203;15889](https://github.com/fastapi/fastapi/pull/15889) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (add-missing). PR [#&#8203;15883](https://github.com/fastapi/fastapi/pull/15883) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (add-missing). PR [#&#8203;15885](https://github.com/fastapi/fastapi/pull/15885) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (add-missing). PR [#&#8203;15882](https://github.com/fastapi/fastapi/pull/15882) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (add-missing). PR [#&#8203;15887](https://github.com/fastapi/fastapi/pull/15887) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (add-missing). PR [#&#8203;15886](https://github.com/fastapi/fastapi/pull/15886) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (add-missing). PR [#&#8203;15881](https://github.com/fastapi/fastapi/pull/15881) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (add-missing). PR [#&#8203;15884](https://github.com/fastapi/fastapi/pull/15884) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (add-missing). PR [#&#8203;15879](https://github.com/fastapi/fastapi/pull/15879) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👥 Update FastAPI People - Experts. PR [#&#8203;15909](https://github.com/fastapi/fastapi/pull/15909) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;15906](https://github.com/fastapi/fastapi/pull/15906) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Contributors and Translators. PR [#&#8203;15878](https://github.com/fastapi/fastapi/pull/15878) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Remove not needed `allow-unsafe-pr-checkout: true`. PR [#&#8203;15876](https://github.com/fastapi/fastapi/pull/15876) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the github-actions group with 5 updates. PR [#&#8203;15872](https://github.com/fastapi/fastapi/pull/15872) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group across 1 directory with 10 updates. PR [#&#8203;15870](https://github.com/fastapi/fastapi/pull/15870) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR [#&#8203;15826](https://github.com/fastapi/fastapi/pull/15826) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.138.2`](https://github.com/fastapi/fastapi/releases/tag/0.138.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.1...0.138.2) ##### Refactors - ♻️ Make `app.frontend()` return 404 for methods other than `GET` or `HEAD` with no static file matches. PR [#&#8203;15863](https://github.com/fastapi/fastapi/pull/15863) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: remove Stainless. PR [#&#8203;15862](https://github.com/fastapi/fastapi/pull/15862) by [@&#8203;tiangolo](https://github.com/tiangolo). - ♻️ Refactor how sponsors data is handled for banners. PR [#&#8203;15852](https://github.com/fastapi/fastapi/pull/15852) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.138.1`](https://github.com/fastapi/fastapi/releases/tag/0.138.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.0...0.138.1) ##### Refactors - ♻️ Refactor Library Skills, make info easier to find for agents. PR [#&#8203;15841](https://github.com/fastapi/fastapi/pull/15841) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Simplify pull request workflow triggers. PR [#&#8203;15836](https://github.com/fastapi/fastapi/pull/15836) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Update issue-manager to 0.7.1. PR [#&#8203;15833](https://github.com/fastapi/fastapi/pull/15833) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.7.0. PR [#&#8203;15831](https://github.com/fastapi/fastapi/pull/15831) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: Add TestMu again. PR [#&#8203;15830](https://github.com/fastapi/fastapi/pull/15830) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒️ Update zizmor workflow security checks. PR [#&#8203;15820](https://github.com/fastapi/fastapi/pull/15820) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR [#&#8203;15799](https://github.com/fastapi/fastapi/pull/15799) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.138.0`](https://github.com/fastapi/fastapi/releases/tag/0.138.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.2...0.138.0) ##### Features - ✨ Add support for `app.frontend("/", directory="dist")` and `router.frontend("/", directory="dist")`. PR [#&#8203;15800](https://github.com/fastapi/fastapi/pull/15800) by [@&#8203;tiangolo](https://github.com/tiangolo). - Read the docs: [Frontend](https://fastapi.tiangolo.com/tutorial/frontend/). ##### Docs - 📝 Fix typo in release notes. PR [#&#8203;15807](https://github.com/fastapi/fastapi/pull/15807) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Add `app.frontend()` instructions to Agent Library Skill. PR [#&#8203;15805](https://github.com/fastapi/fastapi/pull/15805) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update release notes link. PR [#&#8203;15802](https://github.com/fastapi/fastapi/pull/15802) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✏️ Update white space characters in bigger apps. PR [#&#8203;15801](https://github.com/fastapi/fastapi/pull/15801) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✏️ Fix grammar, typos, and broken links in docs. PR [#&#8203;15694](https://github.com/fastapi/fastapi/pull/15694) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Translations - 🌐 Enable Hindi docs translations. PR [#&#8203;15554](https://github.com/fastapi/fastapi/pull/15554) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - 🐛 Fix failing test, update format for raised errors. PR [#&#8203;15804](https://github.com/fastapi/fastapi/pull/15804) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix test-alls-green. PR [#&#8203;15803](https://github.com/fastapi/fastapi/pull/15803) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Enable checking `release-notes.md` for typos. PR [#&#8203;15796](https://github.com/fastapi/fastapi/pull/15796) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 📝 Tweak wording about deploying to FastAPI Cloud. PR [#&#8203;15793](https://github.com/fastapi/fastapi/pull/15793) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔨 Use `gpt-5.5` model in `translate.py`, specify `-chat` to avoid warnings. PR [#&#8203;15792](https://github.com/fastapi/fastapi/pull/15792) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.137.2`](https://github.com/fastapi/fastapi/releases/tag/0.137.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.1...0.137.2) ##### Features - ✨ Add `iter_route_contexts()` for advanced use cases that used to use `router.routes` (e.g. Jupyverse). PR [#&#8203;15785](https://github.com/fastapi/fastapi/pull/15785) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Fix broken Markdown in Korean custom response docs. PR [#&#8203;15774](https://github.com/fastapi/fastapi/pull/15774) by [@&#8203;kooqooo](https://github.com/kooqooo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15761](https://github.com/fastapi/fastapi/pull/15761) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15760](https://github.com/fastapi/fastapi/pull/15760) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15759](https://github.com/fastapi/fastapi/pull/15759) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15757](https://github.com/fastapi/fastapi/pull/15757) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15756](https://github.com/fastapi/fastapi/pull/15756) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15755](https://github.com/fastapi/fastapi/pull/15755) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15754](https://github.com/fastapi/fastapi/pull/15754) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15753](https://github.com/fastapi/fastapi/pull/15753) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15752](https://github.com/fastapi/fastapi/pull/15752) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15751](https://github.com/fastapi/fastapi/pull/15751) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15758](https://github.com/fastapi/fastapi/pull/15758) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: add BairesDev. PR [#&#8203;15787](https://github.com/fastapi/fastapi/pull/15787) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔨 Update sponsors script to simplify previews. PR [#&#8203;15786](https://github.com/fastapi/fastapi/pull/15786) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 7 updates. PR [#&#8203;15777](https://github.com/fastapi/fastapi/pull/15777) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump cryptography from 46.0.7 to 48.0.1. PR [#&#8203;15779](https://github.com/fastapi/fastapi/pull/15779) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump aiohttp from 3.14.0 to 3.14.1. PR [#&#8203;15781](https://github.com/fastapi/fastapi/pull/15781) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.2.1 to 1.3.1. PR [#&#8203;15780](https://github.com/fastapi/fastapi/pull/15780) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in the github-actions group. PR [#&#8203;15776](https://github.com/fastapi/fastapi/pull/15776) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.47.1 to v1.47.2 in the pre-commit group. PR [#&#8203;15775](https://github.com/fastapi/fastapi/pull/15775) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.30 to 0.0.32. PR [#&#8203;15778](https://github.com/fastapi/fastapi/pull/15778) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⏪️ Revert removing scripts, only remove `coverage.sh`. PR [#&#8203;15772](https://github.com/fastapi/fastapi/pull/15772) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove unused scripts. PR [#&#8203;15771](https://github.com/fastapi/fastapi/pull/15771) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Add ty configs to check docs sources. PR [#&#8203;15770](https://github.com/fastapi/fastapi/pull/15770) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Add ty configs to check docs sources. PR [#&#8203;15769](https://github.com/fastapi/fastapi/pull/15769) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.137.1`](https://github.com/fastapi/fastapi/releases/tag/0.137.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.0...0.137.1) ##### Fixes - 🚨 Fix typing checks for APIRoute. PR [#&#8203;15765](https://github.com/fastapi/fastapi/pull/15765) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Fix bug, allow empty path in path operation in prefixless router. PR [#&#8203;15763](https://github.com/fastapi/fastapi/pull/15763) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.137.0`](https://github.com/fastapi/fastapi/releases/tag/0.137.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.136.3...0.137.0) ##### Breaking Changes - ♻️ Refactor internals to preserve `APIRouter` and `APIRoute` instances. PR [#&#8203;15745](https://github.com/fastapi/fastapi/pull/15745) by [@&#8203;tiangolo](https://github.com/tiangolo). Unblocks ✨ SO MANY THINGS ✨ Before this, `router.include_router(other_router)` would take each path operation from `other_router` and "clone" it, or recreate it from scratch. This would mean that in the end there was only one top level router, part of the app. The way it is structured here is that there are a few additional classes to handle intermediate metadata for router and route inclusion. That way the information of "router X includes Y and Y includes Z" is stored somewhere, without affecting (recreating / clonning) the final route. ##### Non Objectives Dependencies for 404: previously I intended to support dependencies that would be executed even for 404, but that would conflict with the fact that a router could *not* find a match, but the next router *did* find a match. Executing dependencies in the router that did not find a match would not make sense, they could consume the request, body, etc. This original idea was discarded. ##### Specific Breaking Changes Now `router.routes` is no longer a plain list of `APIRoute` objects, it can contain these intermediate objects that can contain additional routers, forming a tree. Any logic that depended on iterating on the `router.routes` directly would be affected, that logic cannot expect to be able to extract data from a plain list of routes, as it's no longer a plain list but a tree. Additionally, any logic that iterated on `router.routes` to modify them would now also see these new objects, and would not see all the routes in the app. `router.routes` should be considered an internal implementation detail, only passed around to the FastAPI functions that need it. ##### Features - Adding routes (path operations) after a router is included now works, they are reflected as they are not copied. - Including `subrouter` in `mainrouter` can be done before adding routes (path operations) to `subrouter`, because now the the entire object is stored instead of copying the routes. - As routes are not copied, in some cases that might save some memory. ##### Alpha Features This is not documented yet, so it's not officially supported yet and could change in the future. But, as `APIRoute` and `APIRouter` instances are now preserved, they could be customized. `APIRouter` has two new methods, `.matches()` and `.handle()`, counterpart to the existing ones in `APIRoute`. With this a router could customize how it matches and handles requests. For example, it could match only requests that include some specific header, for example for handling versions in headers. Still, for now, consider this very experimental and potentially changing and breaking in the future. ##### Future Features Enabled - Custom `APIRoute` subclasses (undocumented, but alraedy works as desccribed above) - Custom `APIRouter` subclasses (undocumented, but already works as described above) - Dependencies per router - Exception handlers per router - Middleware per router - Other features planned ##### Docs - 📝 Update release notes. PR [#&#8203;15747](https://github.com/fastapi/fastapi/pull/15747) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update FastAPI Cloud deployment instructions. PR [#&#8203;15724](https://github.com/fastapi/fastapi/pull/15724) by [@&#8203;alejsdev](https://github.com/alejsdev). - ✏️ Use `Annotated` in inline example in `docs/en/docs/tutorial/body-multiple-params.md`. PR [#&#8203;15591](https://github.com/fastapi/fastapi/pull/15591) by [@&#8203;TheArchons](https://github.com/TheArchons). - 📝 Remove "NGINX Unit" from the list of ASGI-servers in docs. PR [#&#8203;15475](https://github.com/fastapi/fastapi/pull/15475) by [@&#8203;angryfoxx](https://github.com/angryfoxx). - 📝 Update `docs/en/docs/tutorial/security/oauth2-jwt.md`. PR [#&#8203;14781](https://github.com/fastapi/fastapi/pull/14781) by [@&#8203;zadevhub](https://github.com/zadevhub). ##### Translations - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15671](https://github.com/fastapi/fastapi/pull/15671) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15670](https://github.com/fastapi/fastapi/pull/15670) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15669](https://github.com/fastapi/fastapi/pull/15669) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15668](https://github.com/fastapi/fastapi/pull/15668) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15667](https://github.com/fastapi/fastapi/pull/15667) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15666](https://github.com/fastapi/fastapi/pull/15666) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15665](https://github.com/fastapi/fastapi/pull/15665) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15664](https://github.com/fastapi/fastapi/pull/15664) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15673](https://github.com/fastapi/fastapi/pull/15673) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15672](https://github.com/fastapi/fastapi/pull/15672) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15674](https://github.com/fastapi/fastapi/pull/15674) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: remove TalorData. PR [#&#8203;15744](https://github.com/fastapi/fastapi/pull/15744) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove ExoFlare. PR [#&#8203;15736](https://github.com/fastapi/fastapi/pull/15736) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove InterviewPal. PR [#&#8203;15735](https://github.com/fastapi/fastapi/pull/15735) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove Liblab. PR [#&#8203;15731](https://github.com/fastapi/fastapi/pull/15731) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove Scalar. PR [#&#8203;15730](https://github.com/fastapi/fastapi/pull/15730) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 6 updates. PR [#&#8203;15721](https://github.com/fastapi/fastapi/pull/15721) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.29 to 0.0.30. PR [#&#8203;15723](https://github.com/fastapi/fastapi/pull/15723) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 3 updates. PR [#&#8203;15720](https://github.com/fastapi/fastapi/pull/15720) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.1.0 to 1.2.1. PR [#&#8203;15722](https://github.com/fastapi/fastapi/pull/15722) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.46.0 to v1.47.1 in the pre-commit group. PR [#&#8203;15719](https://github.com/fastapi/fastapi/pull/15719) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔧 Update sponsors, add Rapidproxy. PR [#&#8203;15689](https://github.com/fastapi/fastapi/pull/15689) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: Remove TestMu. PR [#&#8203;15688](https://github.com/fastapi/fastapi/pull/15688) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 11 updates. PR [#&#8203;15683](https://github.com/fastapi/fastapi/pull/15683) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump aiohttp from 3.13.4 to 3.14.0. PR [#&#8203;15681](https://github.com/fastapi/fastapi/pull/15681) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 2 updates. PR [#&#8203;15682](https://github.com/fastapi/fastapi/pull/15682) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.0.0 to 1.1.0. PR [#&#8203;15684](https://github.com/fastapi/fastapi/pull/15684) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👥 Update FastAPI People - Experts. PR [#&#8203;15677](https://github.com/fastapi/fastapi/pull/15677) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;15675](https://github.com/fastapi/fastapi/pull/15675) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Contributors and Translators. PR [#&#8203;15662](https://github.com/fastapi/fastapi/pull/15662) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Automate release preparation. PR [#&#8203;15661](https://github.com/fastapi/fastapi/pull/15661) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove slim package stub, deprecated for a while. PR [#&#8203;15649](https://github.com/fastapi/fastapi/pull/15649) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump authlib from 1.6.11 to 1.7.2. PR [#&#8203;15512](https://github.com/fastapi/fastapi/pull/15512) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pymdown-extensions from 10.21.2 to 10.21.3. PR [#&#8203;15569](https://github.com/fastapi/fastapi/pull/15569) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump CodSpeedHQ/action from 4.14.0 to 4.15.1. PR [#&#8203;15513](https://github.com/fastapi/fastapi/pull/15513) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.26 to 0.0.29. PR [#&#8203;15595](https://github.com/fastapi/fastapi/pull/15595) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔒️ Improve GitHub actions security. PR [#&#8203;15607](https://github.com/fastapi/fastapi/pull/15607) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⚰️ Remove ruff and coverage ignores for non-existing files. PR [#&#8203;15610](https://github.com/fastapi/fastapi/pull/15610) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ✅ Use custom `changing_dir` instead of `CLIRunner.isolated_filesystem` to set working dir. PR [#&#8203;15616](https://github.com/fastapi/fastapi/pull/15616) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ✅ Add `httpx2` test dependency to avoid deprecation warning. PR [#&#8203;15603](https://github.com/fastapi/fastapi/pull/15603) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the python-packages group with 15 updates. PR [#&#8203;15594](https://github.com/fastapi/fastapi/pull/15594) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Configure Dependabot to group updates and update weekly. PR [#&#8203;15560](https://github.com/fastapi/fastapi/pull/15560) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). </details> <details> <summary>PrefectHQ/fastmcp (fastmcp)</summary> ### [`v3.4.8`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.8): : Long Arm of the Patch [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.7...v3.4.8) This release contains important security and bug fixes. All users are encouraged to upgrade. Thanks to our 2 contributors. <!-- Release notes generated using configuration in .github/release.yml at release/3.x --> #### What's Changed ##### Security 🔒 - \[3.x] Apply Host/Origin protection settings to the SSE transport by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5428](https://github.com/PrefectHQ/fastmcp/pull/5428) - \[3.x] Exclude Cookie from forwarded HTTP headers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5429](https://github.com/PrefectHQ/fastmcp/pull/5429) - \[3.x] Pass client CLI arguments literally to Windows .cmd wrappers by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5420](https://github.com/PrefectHQ/fastmcp/pull/5420) - \[3.x] Use the server's auth provider for component manager routes by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5426](https://github.com/PrefectHQ/fastmcp/pull/5426) - \[3.x] Bound CIMD cache growth by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5430](https://github.com/PrefectHQ/fastmcp/pull/5430) - \[3.x] Include resource metadata in component manager auth challenges by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5435](https://github.com/PrefectHQ/fastmcp/pull/5435) - \[3.x] Apply transforms, enabled state, and auth to hashed tool lookups by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5416](https://github.com/PrefectHQ/fastmcp/pull/5416) - \[3.x] Build client schema types with create_model and bounded caches by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5414](https://github.com/PrefectHQ/fastmcp/pull/5414) - \[3.x] Keep $ref pointers when inlining would produce an oversized schema by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5422](https://github.com/PrefectHQ/fastmcp/pull/5422) - \[3.x] Resolve injected tools through the server's tool lookup by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5432](https://github.com/PrefectHQ/fastmcp/pull/5432) - \[3.x] Require a startup-URL session for the fastmcp dev apps preview by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5418](https://github.com/PrefectHQ/fastmcp/pull/5418) - \[3.x] Inline schemas whose pointers pass through alias definitions by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5439](https://github.com/PrefectHQ/fastmcp/pull/5439) - \[3.x] OpenAPI components send only declared arguments and keep configured headers by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5424](https://github.com/PrefectHQ/fastmcp/pull/5424) ##### Docs 📚 - docs: add v3.4.8 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5445](https://github.com/PrefectHQ/fastmcp/pull/5445) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.7...v3.4.8> ### [`v3.4.7`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.7): : Know Your Audience [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.6...v3.4.7) FastMCP 3.4.7 restores CIMD `private_key_jwt` authentication for OAuthProxy deployments at a bare origin. Client assertions are now validated against the exact token endpoint advertised in authorization server metadata, eliminating the doubled-slash audience mismatch. <!-- Release notes generated using configuration in .github/release.yml at release/3.x --> #### What's Changed ##### Security 🔒 - Backport CIMD assertion audience fix to v3 by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4799](https://github.com/PrefectHQ/fastmcp/pull/4799) ##### Docs 📚 - Docs: add v3.4.7 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4810](https://github.com/PrefectHQ/fastmcp/pull/4810) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.6...v3.4.7> ### [`v3.4.6`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.6): : Trust, but Proxy [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.5...v3.4.6) FastMCP 3.4.6 backports trusted-proxy support for SSRF-protected OAuth metadata and JWKS fetches. Deployments can now route these requests through a mandated corporate proxy while preserving custom CA certificates; FastMCP refuses the fetch when no proxy is configured instead of risking an unprotected direct request. <!-- Release notes generated using configuration in .github/release.yml at release/3.x --> #### What's Changed ##### Fixes 🐞 - Backport [#&#8203;4412](https://github.com/PrefectHQ/fastmcp/issues/4412) to 3.x: support trusted SSRF proxies by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4755](https://github.com/PrefectHQ/fastmcp/pull/4755) ##### Docs 📚 - Docs: add v3.4.6 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4761](https://github.com/PrefectHQ/fastmcp/pull/4761) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.5...v3.4.6> ### [`v3.4.5`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.5): : Key Change [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.4...v3.4.5) FastMCP 3.4.5 collects five fixes for the 3.x line. The one that prompted it: a single [`Ed25519`](https://github.com/PrefectHQ/fastmcp/commit/Ed25519) key in a JWKS — which Rauthy, Ory Hydra, and some Keycloak configurations publish by default — made `JWTVerifier` reject every token, including ones correctly signed by supported keys in the same set. <!-- Release notes generated using configuration in .github/release.yml at release/3.x --> #### What's Changed ##### Fixes 🐞 - Backport [#&#8203;4517](https://github.com/PrefectHQ/fastmcp/issues/4517) to release/3.x: skip unsupported JWKS keys ([#&#8203;4515](https://github.com/PrefectHQ/fastmcp/issues/4515)) by [@&#8203;kakiii](https://github.com/kakiii) in [#&#8203;4631](https://github.com/PrefectHQ/fastmcp/pull/4631) - Backport [#&#8203;4469](https://github.com/PrefectHQ/fastmcp/issues/4469) to release/3.x: fix Azure scope fallback by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4662](https://github.com/PrefectHQ/fastmcp/pull/4662) - Backport [#&#8203;4523](https://github.com/PrefectHQ/fastmcp/issues/4523) to release/3.x: serialize deep object query parameters by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4664](https://github.com/PrefectHQ/fastmcp/pull/4664) - Backport [#&#8203;4564](https://github.com/PrefectHQ/fastmcp/issues/4564) to release/3.x: make transformed tool required order deterministic by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4665](https://github.com/PrefectHQ/fastmcp/pull/4665) - Backport [#&#8203;4492](https://github.com/PrefectHQ/fastmcp/issues/4492) to release/3.x: don't mutate the caller's schema in compress_schema by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4663](https://github.com/PrefectHQ/fastmcp/pull/4663) ##### Docs 📚 - Docs: add v3.4.5 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4673](https://github.com/PrefectHQ/fastmcp/pull/4673) #### New Contributors - [@&#8203;kakiii](https://github.com/kakiii) made their first contribution in [#&#8203;4631](https://github.com/PrefectHQ/fastmcp/pull/4631) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.4...v3.4.5> ### [`v3.4.4`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.4): : Host in Translation [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.3...v3.4.4) FastMCP 3.4.4 restores HTTP deployment compatibility after the 3.4.3 Host/Origin guard changed default behavior for existing ASGI, serverless, and reverse-proxy deployments. The guard implementation remains available for deployments that opt in with explicit trusted hosts and origins, while 3.x returns to accepting traffic that worked before the patch. This release also adds Hugging Face OAuth provider support, with docs and examples for public and private apps, PKCE, Dynamic Client Registration, and CIMD. <!-- Release notes generated using configuration in .github/release.yml at release/3.x --> #### What's Changed ##### Enhancements ✨ - Hugging Face Auth Integration by [@&#8203;evalstate](https://github.com/evalstate) in [#&#8203;4385](https://github.com/PrefectHQ/fastmcp/pull/4385) ##### Fixes 🐞 - Relax host origin guard defaults by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4439](https://github.com/PrefectHQ/fastmcp/pull/4439) - Restore HTTP host guard compatibility by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4472](https://github.com/PrefectHQ/fastmcp/pull/4472) ##### Docs 📚 - Docs: add v3.4.4 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4473](https://github.com/PrefectHQ/fastmcp/pull/4473) #### New Contributors - [@&#8203;evalstate](https://github.com/evalstate) made their first contribution in [#&#8203;4385](https://github.com/PrefectHQ/fastmcp/pull/4385) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.3...v3.4.4> ### [`v3.4.3`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.3): : The Fast and the Secure-ious [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.2...v3.4.3) FastMCP 3.4.3 closes out a month of SSRF and OAuth hardening: NAT64, 6to4, Teredo, and ISATAP transition addresses can no longer smuggle private IPv4 targets past the SSRF allow-list, Streamable HTTP now validates Host and Origin before session handling to block DNS rebinding against localhost-bound servers, and OAuth redirect validation rejects unsafe schemes and unregistered DCR redirect URIs. Alongside the security work, this release also fixes proxy session teardown races, discriminator-tag handling in JSON schema conversion, and several smaller reliability issues. <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Enhancements ✨ - Dedupe discriminator-required helper across schema converters by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4362](https://github.com/PrefectHQ/fastmcp/pull/4362) - Add real Monty sandbox e2e coverage for CodeMode call_tool by [@&#8203;AlexlaGuardia](https://github.com/AlexlaGuardia) in [#&#8203;4274](https://github.com/PrefectHQ/fastmcp/pull/4274) - Switch prettier hook to rbubley/mirrors-prettier by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4366](https://github.com/PrefectHQ/fastmcp/pull/4366) - feat(remote): add --verify flag for TLS certificate verification by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4369](https://github.com/PrefectHQ/fastmcp/pull/4369) ##### Security 🔒 - fix(deps): clear Dependabot security alerts via lockfile bumps by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4393](https://github.com/PrefectHQ/fastmcp/pull/4393) - Clarify resource path parameter safety by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4398](https://github.com/PrefectHQ/fastmcp/pull/4398) - Fix dev apps launch escaping by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4399](https://github.com/PrefectHQ/fastmcp/pull/4399) - Block NAT64 SSRF bypass by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4400](https://github.com/PrefectHQ/fastmcp/pull/4400) - \[codex] Fix event store replay isolation by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4402](https://github.com/PrefectHQ/fastmcp/pull/4402) - Fix DCR redirect URI validation by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4408](https://github.com/PrefectHQ/fastmcp/pull/4408) - Protect streamable HTTP from DNS rebinding by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4405](https://github.com/PrefectHQ/fastmcp/pull/4405) - Block unsafe OAuth redirect schemes by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4419](https://github.com/PrefectHQ/fastmcp/pull/4419) - Block IPv6 transition SSRF bypasses by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4426](https://github.com/PrefectHQ/fastmcp/pull/4426) ##### Fixes 🐞 - fix: caching middleware TypeError on cache miss due to mismatched call_next parameter by [@&#8203;gmenziesint](https://github.com/gmenziesint) in [#&#8203;4301](https://github.com/PrefectHQ/fastmcp/pull/4301) - Fix: async rate limiting middleware get_client_id callbacks by [@&#8203;Chotom](https://github.com/Chotom) in [#&#8203;4319](https://github.com/PrefectHQ/fastmcp/pull/4319) - Recognize all GitHub issue-link forms in require-issue-link workflow by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4359](https://github.com/PrefectHQ/fastmcp/pull/4359) - fix: preserve required discriminator tags by [@&#8203;he-yufeng](https://github.com/he-yufeng) in [#&#8203;4297](https://github.com/PrefectHQ/fastmcp/pull/4297) - fix(proxy): shield stateful proxy disconnect during session teardown by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4363](https://github.com/PrefectHQ/fastmcp/pull/4363) - fix(fs): isolate same-named package imports across providers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4361](https://github.com/PrefectHQ/fastmcp/pull/4361) - fix: StatefulProxyClient.clear() no longer causes KeyError on session teardown by [@&#8203;tcconnally](https://github.com/tcconnally) in [#&#8203;4328](https://github.com/PrefectHQ/fastmcp/pull/4328) - fix: guard recursive refs in json_schema_to_type by [@&#8203;Epochex](https://github.com/Epochex) in [#&#8203;4312](https://github.com/PrefectHQ/fastmcp/pull/4312) - Forward IdP auth errors to MCP client instead of showing HTML error page by [@&#8203;bobbyjames839](https://github.com/bobbyjames839) in [#&#8203;4293](https://github.com/PrefectHQ/fastmcp/pull/4293) - fix(resources): round-trip path values with reserved characters in URI templates by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4368](https://github.com/PrefectHQ/fastmcp/pull/4368) - fix: bracket IPv6 hosts in server startup log URL by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4372](https://github.com/PrefectHQ/fastmcp/pull/4372) - fix: bound default OIDC discovery timeout and expose it on provider wrappers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4374](https://github.com/PrefectHQ/fastmcp/pull/4374) - fix: validate task tool arguments against declared types by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4373](https://github.com/PrefectHQ/fastmcp/pull/4373) - fix(tools): honor serialize_by_alias in tool result serialization by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4391](https://github.com/PrefectHQ/fastmcp/pull/4391) - Fix/cimd flow issue by [@&#8203;twjackysu](https://github.com/twjackysu) in [#&#8203;4206](https://github.com/PrefectHQ/fastmcp/pull/4206) - Reject empty env var keys by [@&#8203;CodingFeng101](https://github.com/CodingFeng101) in [#&#8203;4410](https://github.com/PrefectHQ/fastmcp/pull/4410) - fix: correct replace_type docstring parameter descriptions by [@&#8203;hiSandog](https://github.com/hiSandog) in [#&#8203;4375](https://github.com/PrefectHQ/fastmcp/pull/4375) - Fix ty 0.0.55 diagnostics and prefab-ui protocol version drift by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4428](https://github.com/PrefectHQ/fastmcp/pull/4428) - \[codex] Fix OpenAPI resource template requests by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4407](https://github.com/PrefectHQ/fastmcp/pull/4407) ##### Docs 📚 - fix: RST docstrings in fastmcp.types render raw on gofastmcp.com by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4367](https://github.com/PrefectHQ/fastmcp/pull/4367) - docs: fix 5 broken internal links (auth & providers pages) by [@&#8203;Michael-WhiteCapData](https://github.com/Michael-WhiteCapData) in [#&#8203;4344](https://github.com/PrefectHQ/fastmcp/pull/4344) - docs: add audit/event-record recipe for tool-call middleware by [@&#8203;AlexlaGuardia](https://github.com/AlexlaGuardia) in [#&#8203;4345](https://github.com/PrefectHQ/fastmcp/pull/4345) ##### Dependencies 📦 - chore(deps): bump actions/checkout from 6 to 7 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4343](https://github.com/PrefectHQ/fastmcp/pull/4343) - chore(deps): bump joserfc from 1.6.5 to 1.6.7 in the uv group across 1 directory by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4394](https://github.com/PrefectHQ/fastmcp/pull/4394) - chore(deps): bump joserfc from 1.6.7 to 1.6.8 in the uv group across 1 directory by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4429](https://github.com/PrefectHQ/fastmcp/pull/4429) ##### Other Changes 🦾 - Raise fastmcp.ValidationError for invalid tool arguments by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4392](https://github.com/PrefectHQ/fastmcp/pull/4392) - Fix versioned auth middleware checks by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4401](https://github.com/PrefectHQ/fastmcp/pull/4401) - Docs: add v3.4.2 and v3.4.3 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4430](https://github.com/PrefectHQ/fastmcp/pull/4430) #### New Contributors - [@&#8203;gmenziesint](https://github.com/gmenziesint) made their first contribution in [#&#8203;4301](https://github.com/PrefectHQ/fastmcp/pull/4301) - [@&#8203;Chotom](https://github.com/Chotom) made their first contribution in [#&#8203;4319](https://github.com/PrefectHQ/fastmcp/pull/4319) - [@&#8203;he-yufeng](https://github.com/he-yufeng) made their first contribution in [#&#8203;4297](https://github.com/PrefectHQ/fastmcp/pull/4297) - [@&#8203;AlexlaGuardia](https://github.com/AlexlaGuardia) made their first contribution in [#&#8203;4274](https://github.com/PrefectHQ/fastmcp/pull/4274) - [@&#8203;tcconnally](https://github.com/tcconnally) made their first contribution in [#&#8203;4328](https://github.com/PrefectHQ/fastmcp/pull/4328) - [@&#8203;Epochex](https://github.com/Epochex) made their first contribution in [#&#8203;4312](https://github.com/PrefectHQ/fastmcp/pull/4312) - [@&#8203;Michael-WhiteCapData](https://github.com/Michael-WhiteCapData) made their first contribution in [#&#8203;4344](https://github.com/PrefectHQ/fastmcp/pull/4344) - [@&#8203;bobbyjames839](https://github.com/bobbyjames839) made their first contribution in [#&#8203;4293](https://github.com/PrefectHQ/fastmcp/pull/4293) - [@&#8203;twjackysu](https://github.com/twjackysu) made their first contribution in [#&#8203;4206](https://github.com/PrefectHQ/fastmcp/pull/4206) - [@&#8203;CodingFeng101](https://github.com/CodingFeng101) made their first contribution in [#&#8203;4410](https://github.com/PrefectHQ/fastmcp/pull/4410) - [@&#8203;hiSandog](https://github.com/hiSandog) made their first contribution in [#&#8203;4375](https://github.com/PrefectHQ/fastmcp/pull/4375) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.2...v3.4.3> ### [`v3.4.2`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.2): : Heads Up [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2) FastMCP 3.4.2 restores JWT compatibility for providers that include private, non-critical JWS header parameters. Tokens from providers like Clerk can carry header metadata such as `cat` without being rejected before signature and claim validation, while unsupported critical headers are still rejected. <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Fixes 🐞 - Allow private JWT headers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4290](https://github.com/PrefectHQ/fastmcp/pull/4290) ##### Docs 📚 - Docs: add v3.4.1 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4289](https://github.com/PrefectHQ/fastmcp/pull/4289) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.1...v3.4.2> ### [`v3.4.1`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.1): : Floor It [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1) FastMCP 3.4.1 floors Starlette at `>=1.0.1` so installs can no longer resolve to a version affected by CVE-2026-48710 — previously the dependency was only constrained transitively through `mcp`, which allowed vulnerable versions. It also makes OAuthProxy log refresh-token cache misses instead of failing silently. <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### Enhancements ✨ - Log refresh-token misses in OAuthProxy instead of failing silently by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4276](https://github.com/PrefectHQ/fastmcp/pull/4276) ##### Security 🔒 - Add explicit starlette>=1.0.1 floor (CVE-2026-48710) by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4286](https://github.com/PrefectHQ/fastmcp/pull/4286) ##### Docs 📚 - Document --notes-start-tag in release instructions by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4275](https://github.com/PrefectHQ/fastmcp/pull/4275) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.4.0...v3.4.1> ### [`v3.4.0`](https://github.com/PrefectHQ/fastmcp/releases/tag/v3.4.0): : Remote Control [Compare Source](https://github.com/PrefectHQ/fastmcp/compare/v3.3.1...v3.4.0) FastMCP 3.4 is about reaching servers that live somewhere else. The headline is `fastmcp-remote`, a standalone bridge that connects stdio-only MCP hosts to servers hosted over HTTP. Around it, this release hardens the proxy layer those remote connections depend on — making bridges fail loudly instead of silently, and keeping authenticated sessions alive across the long idle periods that remote clients are prone to. #### fastmcp-remote Some MCP hosts still insist on launching a local stdio command, even when the server you want is already running over HTTP. FastMCP could already proxy a remote URL through `fastmcp run`, but that pulls in the full server-runner surface. `fastmcp-remote` is the small, single-purpose version: one URL in, one local stdio proxy out. ```json { "mcpServers": { "linear": { "command": "uvx", "args": ["fastmcp-remote", "https://mcp.linear.app/mcp"] } } } ``` OAuth is enabled automatically for HTTPS servers, with support for explicit bearer tokens and custom headers when you need them. The implementation stays on FastMCP primitives — `Client`, OAuth, `create_proxy`, and stdio — and credits the original npm `mcp-remote` project for the command shape. #### Bridges That Fail Loudly Proxies are lazy bridges: they don't touch the upstream server during construction, but they do forward real MCP requests once a client connects. As of 3.4, `initialize` is part of that forwarded surface — so a proxy only reports a successful handshake after the upstream server initializes too. A missing backend, a wrong URL (the server root instead of `/mcp`), denied upstream auth, or a non-MCP upstream now fails the downstream `initialize` instead of producing a "connected" proxy whose capability fetches quietly come back empty. The proxy also forwards `ping` upstream now. This is an intentional behavior change from 3.3, and the reason bridge callers like `fastmcp-remote` surface real upstream failures instead of degrading into empty tool lists. #### Auth That Survives Idle Time Remote sessions sit idle, and short-lived upstream tokens punish that. `fastmcp_access_token_expiry_seconds` decouples the FastMCP-issued token's lifetime from the upstream `expires_in` — the FastMCP token is just a reference into proxy storage, re-validated and transparently refreshed on every request, so it can safely outlive a 5-minute upstream token without forcing a full OAuth flow after every idle period. When the upstream issues no refresh token, the lifetime is capped to match. ```python from fastmcp.server.auth.providers.github import GitHubProvider auth = GitHubProvider( client_id="...", client_secret="...", base_url="https://your-server.com", fastmcp_access_token_expiry_seconds=60 * 60 * 24, # 24h client-facing token ) ``` Alongside it, `token_expiry_threshold_seconds` treats tokens as expired N seconds early to close refresh races, and `WorkOSProvider` gains `valid_scopes` and `extra_authorize_params`. #### Returnable Tool Errors A tool could previously only signal an error by raising, which flattens to a text-only result and discards structured content. `ToolResult` now accepts `is_error`, mapping to `CallToolResult.isError` so a tool can hand back a rich error the model can see and act on. The proxy uses this to forward upstream tool errors intact instead of collapsing them. ```python @mcp.tool def lookup(id: str) -> ToolResult: if not found(id): return ToolResult( content="not found", structured_content={"code": 404, "id": id}, is_error=True, ) ... ``` #### Code Mode: Safe by Default `MontySandboxProvider()` now applies a conservative baseline when constructed without limits — 30s duration, 100 MB memory — and `CodeMode` caps tool calls at 50 per `execute` block. Both remain explicitly opt-out (`limits=None`, `max_tool_calls=None`), so the safe configuration is the default instead of something you had to remember to turn on. #### Under the Hood The auth stack migrated its JWT handling to `joserfc`. The `fastmcp` dev CLI gains `--host` and `--log-panel`/`--no-log-panel`. Resources created from templates now preserve annotations, meta, title, and icons; resource templates with query params work on proxied servers; OTEL spans cover the sampling step and tool execution; MCP config files are read as UTF-8; and the OAuth server metadata endpoint now answers at the `/.well-known/openid-configuration` alias. 8 new contributors this release. <!-- Release notes generated using configuration in .github/release.yml at main --> #### What's Changed ##### New Features 🎉 - Add fastmcp-remote bridge package by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4208](https://github.com/PrefectHQ/fastmcp/pull/4208) ##### Breaking Changes ⚠️ - Forward proxy initialize as bridge behavior by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4228](https://github.com/PrefectHQ/fastmcp/pull/4228) ##### Enhancements ✨ - ci: require external PRs to link a tracked issue by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4173](https://github.com/PrefectHQ/fastmcp/pull/4173) - feat: new options --host and --no-log-panel | --log-panel to cli dev apps by [@&#8203;itaru2622](https://github.com/itaru2622) in [#&#8203;4123](https://github.com/PrefectHQ/fastmcp/pull/4123) - Add valid_scopes and extra_authorize_params to WorkOSProvider by [@&#8203;tiagoskaneta](https://github.com/tiagoskaneta) in [#&#8203;4135](https://github.com/PrefectHQ/fastmcp/pull/4135) - Add token_expiry_threshold_seconds for proactive token refresh by [@&#8203;mohankumarelec](https://github.com/mohankumarelec) in [#&#8203;4142](https://github.com/PrefectHQ/fastmcp/pull/4142) - Add review-issue skill for triaging gated external contributions by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4212](https://github.com/PrefectHQ/fastmcp/pull/4212) - Add contract gate to review-issue skill by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4214](https://github.com/PrefectHQ/fastmcp/pull/4214) - Let ToolResult return an error result via is_error by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4217](https://github.com/PrefectHQ/fastmcp/pull/4217) - Update published docs after PyPI release by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4211](https://github.com/PrefectHQ/fastmcp/pull/4211) - Allow pre-bound HTTP sockets by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4222](https://github.com/PrefectHQ/fastmcp/pull/4222) - Add targeted coverage tests by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4230](https://github.com/PrefectHQ/fastmcp/pull/4230) - Upgrade ty to 0.0.39 by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4225](https://github.com/PrefectHQ/fastmcp/pull/4225) - Decouple FastMCP access token lifetime from upstream expires_in by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4254](https://github.com/PrefectHQ/fastmcp/pull/4254) ##### Security 🔒 - feat(code-mode): default sandbox limits and per-execution tool-call cap by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4170](https://github.com/PrefectHQ/fastmcp/pull/4170) - Security: Fix 3 findings in GitHub Actions workflows by [@&#8203;jpr5](https://github.com/jpr5) in [#&#8203;4183](https://github.com/PrefectHQ/fastmcp/pull/4183) - Add outbound comment guardrails by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4196](https://github.com/PrefectHQ/fastmcp/pull/4196) - Add uv dependency cooldown by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4213](https://github.com/PrefectHQ/fastmcp/pull/4213) ##### Fixes 🐞 - fix: VersionSpec eq matching normalizes versions and selects deterministically by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4058](https://github.com/PrefectHQ/fastmcp/pull/4058) - fix(tests): hoist azure-identity import out of the OBO test timeout window by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4176](https://github.com/PrefectHQ/fastmcp/pull/4176) - fix(auth): disambiguate auth-denied vs missing component messages by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4165](https://github.com/PrefectHQ/fastmcp/pull/4165) - fix: preserve annotations, meta, title, icons when creating resources from templates by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4061](https://github.com/PrefectHQ/fastmcp/pull/4061) - fix: add OTEL spans to sampling step and tool execution by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4059](https://github.com/PrefectHQ/fastmcp/pull/4059) - fix(config): read MCP config files as UTF-8 by [@&#8203;pragnyanramtha](https://github.com/pragnyanramtha) in [#&#8203;4164](https://github.com/PrefectHQ/fastmcp/pull/4164) - fix(schema): preserve root metadata on fallback by [@&#8203;yuyua9](https://github.com/yuyua9) in [#&#8203;4178](https://github.com/PrefectHQ/fastmcp/pull/4178) - fix(proxy): restore \_current_server in \_restore_request_context by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4168](https://github.com/PrefectHQ/fastmcp/pull/4168) - fix(auth): add /.well-known/openid-configuration alias for OAuth server metadata by [@&#8203;shigechika](https://github.com/shigechika) in [#&#8203;4167](https://github.com/PrefectHQ/fastmcp/pull/4167) - fix(code-mode): cancel Monty sandbox future on task cancellation by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4169](https://github.com/PrefectHQ/fastmcp/pull/4169) - fix(auth): unprefix Azure scopes echoed back to MCP clients by [@&#8203;rgillinlz](https://github.com/rgillinlz) in [#&#8203;4130](https://github.com/PrefectHQ/fastmcp/pull/4130) - fix(cli): forward stateless flag in uv run path by [@&#8203;yuyua9](https://github.com/yuyua9) in [#&#8203;4177](https://github.com/PrefectHQ/fastmcp/pull/4177) - fix(ci): scope minimize-reviews concurrency by event name by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;4174](https://github.com/PrefectHQ/fastmcp/pull/4174) - Fix docs app demo iframe assets by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4194](https://github.com/PrefectHQ/fastmcp/pull/4194) - Guard require-issue-link check job to pull_request_target events by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4209](https://github.com/PrefectHQ/fastmcp/pull/4209) - Migrate auth JWTs to joserfc by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4221](https://github.com/PrefectHQ/fastmcp/pull/4221) - Skip published docs update for prereleases by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4224](https://github.com/PrefectHQ/fastmcp/pull/4224) - Surface proxy upstream failures by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4227](https://github.com/PrefectHQ/fastmcp/pull/4227) - Close upstream OAuth clients by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4248](https://github.com/PrefectHQ/fastmcp/pull/4248) - Fix GitHub MCP resource integration test by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4253](https://github.com/PrefectHQ/fastmcp/pull/4253) - Fix resource templates with query params on proxied servers by [@&#8203;rene84](https://github.com/rene84) in [#&#8203;4251](https://github.com/PrefectHQ/fastmcp/pull/4251) - Fix MDX syntax error in changelog by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4270](https://github.com/PrefectHQ/fastmcp/pull/4270) ##### Docs 📚 - Document pip upgrade recovery for the fastmcp-slim package split by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4215](https://github.com/PrefectHQ/fastmcp/pull/4215) - Move pip upgrade recovery into a Troubleshooting section by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4219](https://github.com/PrefectHQ/fastmcp/pull/4219) - Restore Horizon docs banner by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4240](https://github.com/PrefectHQ/fastmcp/pull/4240) - fix: Trendshift link and badge in README.md by [@&#8203;bhantos](https://github.com/bhantos) in [#&#8203;4236](https://github.com/PrefectHQ/fastmcp/pull/4236) - docs: add tool fingerprinting recipe by [@&#8203;dgenio](https://github.com/dgenio) in [#&#8203;4233](https://github.com/PrefectHQ/fastmcp/pull/4233) - Backfill changelog and updates through v3.4.0 by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4269](https://github.com/PrefectHQ/fastmcp/pull/4269) ##### Dependencies 📦 - chore(deps): bump the uv group across 2 directories with 1 update by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4113](https://github.com/PrefectHQ/fastmcp/pull/4113) - chore(deps-dev): bump pydantic-monty from 0.0.16 to 0.0.17 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;4023](https://github.com/PrefectHQ/fastmcp/pull/4023) ##### Other Changes 🦾 - Exempt maintainers from MRE auto-close by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;4220](https://github.com/PrefectHQ/fastmcp/pull/4220) #### New Contributors - [@&#8203;pragnyanramtha](https://github.com/pragnyanramtha) made their first contribution in [#&#8203;4164](https://github.com/PrefectHQ/fastmcp/pull/4164) - [@&#8203;yuyua9](https://github.com/yuyua9) made their first contribution in [#&#8203;4178](https://github.com/PrefectHQ/fastmcp/pull/4178) - [@&#8203;tiagoskaneta](https://github.com/tiagoskaneta) made their first contribution in [#&#8203;4135](https://github.com/PrefectHQ/fastmcp/pull/4135) - [@&#8203;mohankumarelec](https://github.com/mohankumarelec) made their first contribution in [#&#8203;4142](https://github.com/PrefectHQ/fastmcp/pull/4142) - [@&#8203;rgillinlz](https://github.com/rgillinlz) made their first contribution in [#&#8203;4130](https://github.com/PrefectHQ/fastmcp/pull/4130) - [@&#8203;jpr5](https://github.com/jpr5) made their first contribution in [#&#8203;4183](https://github.com/PrefectHQ/fastmcp/pull/4183) - [@&#8203;bhantos](https://github.com/bhantos) made their first contribution in [#&#8203;4236](https://github.com/PrefectHQ/fastmcp/pull/4236) - [@&#8203;rene84](https://github.com/rene84) made their first contribution in [#&#8203;4251](https://github.com/PrefectHQ/fastmcp/pull/4251) **Full Changelog**: <https://github.com/PrefectHQ/fastmcp/compare/v3.3.1...v3.4.0> </details> <details> <summary>python-greenlet/greenlet (greenlet)</summary> ### [`v3.5.6`](https://github.com/python-greenlet/greenlet/blob/HEAD/CHANGES.rst#356-2026-09-14) [Compare Source](https://github.com/python-greenlet/greenlet/compare/3.5.5...3.5.6) \================== - Correct a race condition that could lead to garbage collection unintentionally being disabled. See `PR 529 <https://github.com/python-greenlet/greenlet/pull/529>`\_ by Yurii. ### [`v3.5.5`](https://github.com/python-greenlet/greenlet/blob/HEAD/CHANGES.rst#355-2026-08-10) [Compare Source](https://github.com/python-greenlet/greenlet/compare/3.5.4...3.5.5) \================== - Link the C++ runtime statically into the Windows wheels again, as the Appveyor builds did through 3.3.0. Since 3.3.1 `_greenlet.pyd` imported `MSVCP140.dll`, which no Windows CPython distribution ships, so importing greenlet failed on machines without the Visual C++ redistributable. See `issue 525 <https://github.com/python-greenlet/greenlet/issues/525>`\_. Issue and pull request by Daniel Sticker. .. note:: Binary 3.15 wheels are now built with 3.15.0rc1. This should be compatible with future 3.15 releases and is believed compatible with 3.15b4 as well (but not earlier versions). ### [`v3.5.4`](https://github.com/python-greenlet/greenlet/blob/HEAD/CHANGES.rst#354-2026-07-22) [Compare Source](https://github.com/python-greenlet/greenlet/compare/3.5.3...3.5.4) \================== - Fix a crash (segfault) on free-threaded builds of Python 3.14 and later when the garbage collector runs while a greenlet that was started from a non-empty C-stack-reference state is active. See `issue 515 <https://github.com/python-greenlet/greenlet/issues/515>`\_. Thanks to ddorian and Kumar Aditya. - Fix a potential use-after-free on free-threaded builds of Python 3.14 and later when the garbage collector runs while a greenlet is suspended holding a `_PyCStackRef` (for example, mid attribute resolution). See `issue 515 <https://github.com/python-greenlet/greenlet/issues/515>`\_. Thanks to ddorian and Kumar Aditya. - Fix a deadlock on free-threaded builds when a greenlet switch happened while a `PyCriticalSection` was held -- for example inside asyncio's `Task.__step`, which holds one on the running task for the duration of the step. See `PR 519 <https://github.com/python-greenlet/greenlet/pull/519/>`. Thanks to ddorian and Kumar Aditya. .. note:: Binary 3.15 wheels are now built with Python 3.15b4. These may not be compatible with earlier or later versions of 3.15. Binary 3.15 wheels of greenlet from previous releases (e.g., 3.5.3) may not be compatible with Python 3.15b4. ### [`v3.5.3`](https://github.com/python-greenlet/greenlet/blob/HEAD/CHANGES.rst#354-2026-07-22) [Compare Source](https://github.com/python-greenlet/greenlet/compare/3.5.2...3.5.3) \================== - Fix a crash (segfault) on free-threaded builds of Python 3.14 and later when the garbage collector runs while a greenlet that was started from a non-empty C-stack-reference state is active. See `issue 515 <https://github.com/python-greenlet/greenlet/issues/515>`\_. Thanks to ddorian and Kumar Aditya. - Fix a potential use-after-free on free-threaded builds of Python 3.14 and later when the garbage collector runs while a greenlet is suspended holding a `_PyCStackRef` (for example, mid attribute resolution). See `issue 515 <https://github.com/python-greenlet/greenlet/issues/515>`\_. Thanks to ddorian and Kumar Aditya. - Fix a deadlock on free-threaded builds when a greenlet switch happened while a `PyCriticalSection` was held -- for example inside asyncio's `Task.__step`, which holds one on the running task for the duration of the step. See `PR 519 <https://github.com/python-greenlet/greenlet/pull/519/>`. Thanks to ddorian and Kumar Aditya. .. note:: Binary 3.15 wheels are now built with Python 3.15b4. These may not be compatible with earlier or later versions of 3.15. Binary 3.15 wheels of greenlet from previous releases (e.g., 3.5.3) may not be compatible with Python 3.15b4. ### [`v3.5.2`](https://github.com/python-greenlet/greenlet/blob/HEAD/CHANGES.rst#352-2026-06-17) [Compare Source](https://github.com/python-greenlet/greenlet/compare/3.5.1...3.5.2) \================== - The minimum supported version of Python 3.15 is now 3.15b2. - Fix some garbage-collection related crashes on free-threaded Python 3.15. Thanks to Kumar Aditya in `PR #&#8203;511 <https://github.com/python-greenlet/greenlet/pull/511>`\_. - Improve garbage collection of greenlets. This mostly applies to Python 3.15. Thanks to Kumar Aditya in `PR #&#8203;512 <https://github.com/python-greenlet/greenlet/pull/512>`\_. </details> <details> <summary>KurimuzonAkuma/pyrogram (kurigram)</summary> ### [`v2.2.26`](https://github.com/kurigram-org/kurigram/releases/tag/v2.2.26) [Compare Source](https://github.com/KurimuzonAkuma/pyrogram/compare/v2.2.25...v2.2.26) #### What's Changed - fix: docstrings for send_paid_media and send_web_page by [@&#8203;penggrin12](https://github.com/penggrin12) in [kurigram-org/kurigram#329](https://github.com/kurigram-org/kurigram/pull/329) - refactor: plugin loading handler existence checks by [@&#8203;itisFarzin](https://github.com/itisFarzin) in [kurigram-org/kurigram#135](https://github.com/kurigram-org/kurigram/pull/135) - feat(proxy): add WEB proxy support with `WINDOW` flow control and per-kind proxy types by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#364](https://github.com/kurigram-org/kurigram/pull/364) - feat(proxy): add classic MTProxy support with fake-TLS (`ee`) secrets by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#365](https://github.com/kurigram-org/kurigram/pull/365) - chore(lint): add a `ruff` check, run from `make lint` in CI and `pre-commit` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#366](https://github.com/kurigram-org/kurigram/pull/366) - ci(build): run the unit suite in CI and fix its failures below 3.12 by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#371](https://github.com/kurigram-org/kurigram/pull/371) - refactor(tests): put every test under `tests/unit` or `tests/integrations` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#372](https://github.com/kurigram-org/kurigram/pull/372) - fix(typing): accept a built `JsonValue` in `init_connection_params` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#367](https://github.com/kurigram-org/kurigram/pull/367) - fix(typing): `Message.topic` also holds a `DirectMessagesTopic` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#368](https://github.com/kurigram-org/kurigram/pull/368) - fix(typing): drop `Optional` from two `_parse()` helpers that always return an object by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#369](https://github.com/kurigram-org/kurigram/pull/369) - fix(typing): reword the comment `mypy` reads as a `# type:` comment by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#370](https://github.com/kurigram-org/kurigram/pull/370) - fix(filters): let the chat filters see `MessageGenerationStopped` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#374](https://github.com/kurigram-org/kurigram/pull/374) - fix(upload): raise the failure that `save_file()` used to log and hide by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#373](https://github.com/kurigram-org/kurigram/pull/373) - fix(typing): keep the callback signature that the handler decorators erased by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#376](https://github.com/kurigram-org/kurigram/pull/376) - fix(users): give `None` back from `get_users()` when the id belongs to no user by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#378](https://github.com/kurigram-org/kurigram/pull/378) - fix(invite_links): stop `get_chat_admins_with_invite_links()` handing `types.List` an async generator by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#379](https://github.com/kurigram-org/kurigram/pull/379) - fix(typing): annotate the return of the 45 public methods that document one by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#377](https://github.com/kurigram-org/kurigram/pull/377) - chore(comments): drop the `NOTE:` prefix and the dashes standing in for punctuation by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#380](https://github.com/kurigram-org/kurigram/pull/380) - fix(docs): point the dead Sphinx cross-references at names that exist by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#383](https://github.com/kurigram-org/kurigram/pull/383) - fix(filters): read the sender and sender chat the remaining update types already carry by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#381](https://github.com/kurigram-org/kurigram/pull/381) - feat: update message bound methods params by [@&#8203;asadofc](https://github.com/asadofc) in [kurigram-org/kurigram#385](https://github.com/kurigram-org/kurigram/pull/385) - fix(typing): default `effect_id` and `is_enabled` to `None`, not to the `NoneType` class by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#390](https://github.com/kurigram-org/kurigram/pull/390) - feat(message): accept the target's remaining parameters in the `reply_*`/`answer_*` shortcuts by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#391](https://github.com/kurigram-org/kurigram/pull/391) - fix(typing): stream_media return type annotation to AsyncGenerator by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#387](https://github.com/kurigram-org/kurigram/pull/387) - fix(typing): annotate the async generators as `AsyncGenerator[T, None]`, not `AsyncIterator[T]` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#392](https://github.com/kurigram-org/kurigram/pull/392) - fix: dispatcher TypeError when user typing update parser returns None by [@&#8203;AnonymousX1025](https://github.com/AnonymousX1025) in [kurigram-org/kurigram#384](https://github.com/kurigram-org/kurigram/pull/384) - test(docs): fail when a cross-reference label is not a suffix of its target by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#395](https://github.com/kurigram-org/kurigram/pull/395) - fix(keyboards): send `KeyboardInlineButtonRow` in `ReplyInlineMarkup` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#396](https://github.com/kurigram-org/kurigram/pull/396) - fix(plugins): read `handlers` only when it is a list of handler pairs by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#397](https://github.com/kurigram-org/kurigram/pull/397) - fix(session): await the tasks `stop()` spawned instead of orphaning them by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#398](https://github.com/kurigram-org/kurigram/pull/398) - fix(session): keep a queued `restart()` from reconnecting a stopped session by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#399](https://github.com/kurigram-org/kurigram/pull/399) - fix(types): make `repr()` of a `List` work for items that are not `Object`s by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#401](https://github.com/kurigram-org/kurigram/pull/401) - fix(typing): declare what `save_file()` and `InputChatPhoto.write()` actually return by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#403](https://github.com/kurigram-org/kurigram/pull/403) - fix(decorators): register the plugin handlers an unbound `@Client.on_*()` call declares by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#402](https://github.com/kurigram-org/kurigram/pull/402) - fix(typing): name the types the seven dead annotations were meant to name by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#404](https://github.com/kurigram-org/kurigram/pull/404) - fix(types): make the three update types that reach a handler `Update`s by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#405](https://github.com/kurigram-org/kurigram/pull/405) - fix(upload): annotate `self` on the `save_file()` overloads as the implementation does by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#410](https://github.com/kurigram-org/kurigram/pull/410) - chore(typing): introduce ty static type checking, fix diagnostics incrementally by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#394](https://github.com/kurigram-org/kurigram/pull/394) - feat(deps): declare optional qrcode extra by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#408](https://github.com/kurigram-org/kurigram/pull/408) - fix(typing): drop `Optional` where the default rules out `None` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#412](https://github.com/kurigram-org/kurigram/pull/412) - docs(contributing): add setup, workflow, and review-derived conventions by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#406](https://github.com/kurigram-org/kurigram/pull/406) - refactor(tests): give the whole-tree sweeps their own `tests/guards` layer by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#413](https://github.com/kurigram-org/kurigram/pull/413) - refactor(tests): name every client double `FakeClient` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#414](https://github.com/kurigram-org/kurigram/pull/414) - chore(build): move the toolchain onto `uv`, dropping the hand-built `venv` and `hatch` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#415](https://github.com/kurigram-org/kurigram/pull/415) - chore(deps): replace every `<=` ceiling with a tested `>=` floor by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#419](https://github.com/kurigram-org/kurigram/pull/419) - ci(deps): run the suite at both ends of every dependency range by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#420](https://github.com/kurigram-org/kurigram/pull/420) - chore(python): raise the floor to `3.10`, dropping `3.8` and `3.9` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#421](https://github.com/kurigram-org/kurigram/pull/421) - chore(metadata): list a second maintainer by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#422](https://github.com/kurigram-org/kurigram/pull/422) - refactor(typing): adopt the builtin generics and defer every annotation by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#424](https://github.com/kurigram-org/kurigram/pull/424) - test(guards): sweep the suite and the compilers for the future import, not only the package by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#425](https://github.com/kurigram-org/kurigram/pull/425) - chore(ruff): format the whole tree at 100 columns and gate the formatter by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#426](https://github.com/kurigram-org/kurigram/pull/426) - chore(lint): enable the rule families the tree already passes by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#427](https://github.com/kurigram-org/kurigram/pull/427) - test(guards): fail on a long dash or a `--` used as punctuation in a comment by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#439](https://github.com/kurigram-org/kurigram/pull/439) - fix(lint): drop dead imports, unused locals and wildcard imports by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#428](https://github.com/kurigram-org/kurigram/pull/428) - docs(contributing): state the `__all__` rule the public exports guard enforces by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#440](https://github.com/kurigram-org/kurigram/pull/440) - chore(lint): group pyupgrade rules under UP, fix remaining UP032 by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#429](https://github.com/kurigram-org/kurigram/pull/429) - chore(lint): enable PYI, convert namedtuple, widen **eq** annotation by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#430](https://github.com/kurigram-org/kurigram/pull/430) - chore(lint): enable C4, drop unnecessary comprehension and map() by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#431](https://github.com/kurigram-org/kurigram/pull/431) - chore(lint): enable PLC, fix dict-items and split-maxsplit findings by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#432](https://github.com/kurigram-org/kurigram/pull/432) - fix(client): name the `kurigram[qrcode]` extra when QR login cannot import it by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#442](https://github.com/kurigram-org/kurigram/pull/442) - chore(lint): enable PLW, drop dead loop-else and self-assignment by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#433](https://github.com/kurigram-org/kurigram/pull/433) - chore(lint): enable ISC, join two explicitly-concatenated strings by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#434](https://github.com/kurigram-org/kurigram/pull/434) - chore(lint): enable SLOT, add **slots** to the str subclasses by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#435](https://github.com/kurigram-org/kurigram/pull/435) - chore(lint): enable PIE, drop redundant range() start argument by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#436](https://github.com/kurigram-org/kurigram/pull/436) - chore(lint): enable INP, add missing **init**.py under tests/unit by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#437](https://github.com/kurigram-org/kurigram/pull/437) - feat: Bot API 10.2 (3/3 - Rich Messages) by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#443](https://github.com/kurigram-org/kurigram/pull/443) - chore(lint): enable flake8-bugbear (B), fix its findings, ignore B009 by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#441](https://github.com/kurigram-org/kurigram/pull/441) - docs: mark get_stickers as usable by bots as well by [@&#8203;asadofc](https://github.com/asadofc) in [kurigram-org/kurigram#416](https://github.com/kurigram-org/kurigram/pull/416) - test(errors): count the expected rows off the table instead of hardcoding 936 by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#445](https://github.com/kurigram-org/kurigram/pull/445) - test(bots): guard the `restore` mapping in `edit_user_star_subscription()` by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#444](https://github.com/kurigram-org/kurigram/pull/444) - build(sdist): list what the archive holds instead of excluding what it must not by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#446](https://github.com/kurigram-org/kurigram/pull/446) - fix(filters): escape the command name before matching it by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#447](https://github.com/kurigram-org/kurigram/pull/447) - fix(messages): catch `StopIteration` when `click()` looks a button up by label by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#448](https://github.com/kurigram-org/kurigram/pull/448) - feat(rich-blocks): add `is_compact` parameter in InputRichBlockTable and RichBlockTable by [@&#8203;deblomperrr](https://github.com/deblomperrr) in [kurigram-org/kurigram#409](https://github.com/kurigram-org/kurigram/pull/409) - feat(uploads): accept pathlib.Path across every local-file upload parameter by [@&#8203;KrimsN](https://github.com/KrimsN) in [kurigram-org/kurigram#449](https://github.com/kurigram-org/kurigram/pull/449) - refactor(types): replace repeated `str | Path` upload hints with a `PathType` alias by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#452](https://github.com/kurigram-org/kurigram/pull/452) - feat: Bot API 10.3 (4/4 - Rich Messages) by [@&#8203;KurimuzonAkuma](https://github.com/KurimuzonAkuma) in [kurigram-org/kurigram#451](https://github.com/kurigram-org/kurigram/pull/451) - fix(keyboards): read `InlineKeyboardButton` fields off the objects that hold them by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#453](https://github.com/kurigram-org/kurigram/pull/453) - fix(keyboards): annotate `LoginUrl.request_write_access` as the `bool` the schema declares by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#454](https://github.com/kurigram-org/kurigram/pull/454) - fix(types): thread the page media mappings into list blocks and guard a missing document by [@&#8203;Danipulok](https://github.com/Danipulok) in [kurigram-org/kurigram#455](https://github.com/kurigram-org/kurigram/pull/455) #### New Contributors - [@&#8203;itisFarzin](https://github.com/itisFarzin) made their first contribution in [kurigram-org/kurigram#135](https://github.com/kurigram-org/kurigram/pull/135) - [@&#8203;KrimsN](https://github.com/KrimsN) made their first contribution in [kurigram-org/kurigram#387](https://github.com/kurigram-org/kurigram/pull/387) - [@&#8203;AnonymousX1025](https://github.com/AnonymousX1025) made their first contribution in [kurigram-org/kurigram#384](https://github.com/kurigram-org/kurigram/pull/384) - [@&#8203;deblomperrr](https://github.com/deblomperrr) made their first contribution in [kurigram-org/kurigram#409](https://github.com/kurigram-org/kurigram/pull/409) **Full Changelog**: <https://github.com/kurigram-org/kurigram/compare/v2.2.25...v2.2.26> ### [`v2.2.25`](https://github.com/kurigram-org/kurigram/releases/tag/v2.2.25) [Compare Source](https://github.com/KurimuzonAkuma/pyrogram/compare/v2.2.24...v2.2.25) #### What's Changed - feat: add TCPIntermediatePadded transport by [@&#8203;UserN0tAdmin](https://github.com/UserN0tAdmin) in [KurimuzonAkuma/kurigram#330](https://github.com/KurimuzonAkuma/kurigram/pull/330) - feat: add rich_message in CallbackQuery.edit_message_text bound method by [@&#8203;Kanha-XD](https://github.com/Kanha-XD) in [KurimuzonAkuma/kurigram#334](https://github.com/KurimuzonAkuma/kurigram/pull/334) - fix(download): resolve relative download paths against `workdir` by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#339](https://github.com/KurimuzonAkuma/kurigram/pull/339) - fix(typing): annotate every parameter that defaults to `None` as `Optional` by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#343](https://github.com/KurimuzonAkuma/kurigram/pull/343) - fix: require the parameters that cannot default to None by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#345](https://github.com/KurimuzonAkuma/kurigram/pull/345) - fix(message): guard the optional `saved_peer_id` in a direct-messages chat by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#350](https://github.com/KurimuzonAkuma/kurigram/pull/350) - fix(compiler): stop writing an empty `flags.N?Vector` the flags call absent by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#352](https://github.com/KurimuzonAkuma/kurigram/pull/352) - fix(file-id): decode photo file ids minted from minor 32 onwards by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#348](https://github.com/KurimuzonAkuma/kurigram/pull/348) - fix(filters): read the sender and the chat from any update, not only `Message` by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#346](https://github.com/KurimuzonAkuma/kurigram/pull/346) - fix(typing): overload the shape-dependent methods and stop hiding the `None`s by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#341](https://github.com/KurimuzonAkuma/kurigram/pull/341) - fix(filters): let `business`, `linked_channel` and `topic` read the message an update is about by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#354](https://github.com/KurimuzonAkuma/kurigram/pull/354) - fix(errors): raise the verification errors instead of a bare `Forbidden`, and annotate `RPCError` by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#353](https://github.com/KurimuzonAkuma/kurigram/pull/353) - feat(errors): name the value each parameterised error carries by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#356](https://github.com/KurimuzonAkuma/kurigram/pull/356) - refactor(messages): cache the `messages.GetSplitRanges` result by [@&#8203;ZeN220](https://github.com/ZeN220) in [KurimuzonAkuma/kurigram#358](https://github.com/KurimuzonAkuma/kurigram/pull/358) - fix(errors): stop errors that share a class name from shadowing each other by [@&#8203;Danipulok](https://github.com/Danipulok) in [KurimuzonAkuma/kurigram#357](https://github.com/KurimuzonAkuma/kurigram/pull/357) - feat: add return type hints to Update propagation methods by [@&#8203;zrekryu](https://github.com/zrekryu) in [KurimuzonAkuma/kurigram#288](https://github.com/KurimuzonAkuma/kurigram/pull/288) - feat: add MessageIdsEmpty exception by [@&#8203;shhimmery](https://github.com/shhimmery) in [KurimuzonAkuma/kurigram#294](https://github.com/KurimuzonAkuma/kurigram/pull/294) #### New Contributors - [@&#8203;UserN0tAdmin](https://github.com/UserN0tAdmin) made their first contribution in [KurimuzonAkuma/kurigram#330](https://github.com/KurimuzonAkuma/kurigram/pull/330) **Full Changelog**: <https://github.com/KurimuzonAkuma/kurigram/compare/v2.2.24...v2.2.25> ### [`v2.2.24`](https://github.com/kurigram-org/kurigram/releases/tag/v2.2.24) [Compare Source](https://github.com/KurimuzonAkuma/pyrogram/compare/v2.2.23...v2.2.24) #### What's Changed - feat: add waveform parameter in send_voice method by [@&#8203;MarsBatya](https://github.com/MarsBatya) in [KurimuzonAkuma/kurigram#321](https://github.com/KurimuzonAkuma/kurigram/pull/321) **Full Changelog**: <https://github.com/KurimuzonAkuma/kurigram/compare/v2.2.23...v2.2.24> </details> <details> <summary>pydantic/pydantic-settings (pydantic-settings)</summary> ### [`v2.15.0`](https://github.com/pydantic/pydantic-settings/releases/tag/v2.15.0) [Compare Source](https://github.com/pydantic/pydantic-settings/compare/v2.14.2...v2.15.0) #### Highlights ##### Behavior changes - **`case_sensitive` now applies to init kwargs and config-file sources** ([#&#8203;900](https://github.com/pydantic/pydantic-settings/pull/900)). `InitSettingsSource` and the JSON/TOML/YAML config sources previously ignored `case_sensitive`. Since it defaults to `False`, **case-insensitive matching is now the default** for these sources — e.g. `Settings(TeSt=...)` now populates a `test` field where it previously did not. Nested keys are still matched case-sensitively. - **Fields with unresolved forward references now emit a warning** ([#&#8203;901](https://github.com/pydantic/pydantic-settings/pull/901)). Settings sources can silently fail to resolve such fields; they now raise `IncompleteFieldDefinitionWarning` telling you to call `model_rebuild()`. If you have `filterwarnings = error` configured, this may surface as a new failure. - **Non-JSON env values for strict fields now raise `ValidationError`** ([#&#8203;926](https://github.com/pydantic/pydantic-settings/pull/926)) instead of a less specific error. ##### New features - **Show environment variable names in CLI help** via `cli_show_env_vars=True` ([#&#8203;860](https://github.com/pydantic/pydantic-settings/pull/860)), so generated `--help` output doubles as configuration documentation. - **`PYDANTIC_SETTINGS_DEBUG` for debugging settings resolution** ([#&#8203;906](https://github.com/pydantic/pydantic-settings/pull/906), [#&#8203;913](https://github.com/pydantic/pydantic-settings/pull/913)). Set it to a truthy value with `DEBUG` logging enabled to see each source's contribution in priority order, which source won for each value, and which `env_file`/secret files were probed, loaded, or skipped — the long-standing "why isn't my `.env` being picked up?" question. - **`toml_table_header` for regular TOML files** ([#&#8203;882](https://github.com/pydantic/pydantic-settings/pull/882), [#&#8203;886](https://github.com/pydantic/pydantic-settings/pull/886), [#&#8203;887](https://github.com/pydantic/pydantic-settings/pull/887)), letting you root settings at a nested table in any TOML file, not just `pyproject.toml`. - **`Traversable` support for JSON/TOML/YAML file sources** ([#&#8203;902](https://github.com/pydantic/pydantic-settings/pull/902)), so you can load config packaged inside a distribution — including files inside a zip or wheel — via `importlib.resources.files(...)` without casting to `Path`. - **GCP: `project_id` can come from an earlier settings source** ([#&#8203;878](https://github.com/pydantic/pydantic-settings/pull/878)), rather than only from the constructor or `GOOGLE_CLOUD_PROJECT`. ##### Bug fixes - Fix env vars not loading on Windows with `case_sensitive=True` ([#&#8203;894](https://github.com/pydantic/pydantic-settings/pull/894)). Windows upper-cases `os.environ` keys, so fields raised `Field required` instead of picking up their values. - Read secret files as UTF-8 instead of the platform locale encoding ([#&#8203;917](https://github.com/pydantic/pydantic-settings/pull/917)). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets. - Fix `AliasPath` on nested model fields not JSON-decoding env values ([#&#8203;898](https://github.com/pydantic/pydantic-settings/pull/898)). - Fix case-insensitive matching for **optional** nested models ([#&#8203;905](https://github.com/pydantic/pydantic-settings/pull/905)). - Fix dotenv extras being wrongly claimed by a complex field sharing a name prefix ([#&#8203;912](https://github.com/pydantic/pydantic-settings/pull/912)) — e.g. `dbx_token` being swallowed by a `db: dict` field. - Fix `nested_model_default_partial_update=True` corrupting discriminated unions ([#&#8203;876](https://github.com/pydantic/pydantic-settings/pull/876)). - Fix `Secret` subclasses crashing when loaded from the environment ([#&#8203;920](https://github.com/pydantic/pydantic-settings/pull/920)). - Fix enum names not parsing through nested annotations such as `Optional[Annotated[MyEnum, ...]]` with `env_parse_enums=True` ([#&#8203;910](https://github.com/pydantic/pydantic-settings/pull/910)). - An empty `yaml_config_section` now falls back to defaults instead of raising `AttributeError: 'NoneType' object has no attribute 'keys'` ([#&#8203;914](https://github.com/pydantic/pydantic-settings/pull/914)). - `NestedSecretsSettingsSource` no longer follows symlinks pointing outside `secrets_dir` ([#&#8203;889](https://github.com/pydantic/pydantic-settings/pull/889)). - GCP: skip the `list_secrets` call when `case_sensitive=True` ([#&#8203;862](https://github.com/pydantic/pydantic-settings/pull/862)), lowering the required IAM permissions to just `roles/secretmanager.secretAccessor`. - AWS: `types-boto3[secretsmanager]` is no longer required at runtime ([#&#8203;880](https://github.com/pydantic/pydantic-settings/pull/880)). ##### Documentation - Document JSON parsing of complex env values, plus a comma-separated-values recipe ([#&#8203;919](https://github.com/pydantic/pydantic-settings/pull/919)). - Recommend an async settings loading pattern ([#&#8203;908](https://github.com/pydantic/pydantic-settings/pull/908)). - Clarify behavior when an unprefixed value is present in a dotenv file ([#&#8203;895](https://github.com/pydantic/pydantic-settings/pull/895)). - Clarify environment variable helper descriptions ([#&#8203;867](https://github.com/pydantic/pydantic-settings/pull/867)) and fix assorted typos ([#&#8203;904](https://github.com/pydantic/pydantic-settings/pull/904)). <details> <summary><b>All changes</b> (including dependency bumps and internal maintenance)</summary> #### What's Changed * Update documentation link for Pydantic settings by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/863 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/865 * docs: clarify environment variable helper descriptions by @&#8203;vip892766gma in https://github.com/pydantic/pydantic-settings/pull/867 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/870 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/875 * Skip list_secrets call when case_sensitive=True by @&#8203;ecerulm in https://github.com/pydantic/pydantic-settings/pull/862 * GoogleSecretManagerSettingsSource: read project_id from previous sources by @&#8203;ecerulm in https://github.com/pydantic/pydantic-settings/pull/878 * Bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/883 * fix: move SecretsManagerClient type import under TYPE_CHECKING by @&#8203;gavin913-lss in https://github.com/pydantic/pydantic-settings/pull/880 * Skip partial update merging for discriminated union fields by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/876 * Support using a table header as root when reading a TOML file by @&#8203;whyscream in https://github.com/pydantic/pydantic-settings/pull/882 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/885 * Don't complain about missing table headers in a TOML file that isn't there by @&#8203;whyscream in https://github.com/pydantic/pydantic-settings/pull/886 * Address issues in toml table header implementation by @&#8203;whyscream in https://github.com/pydantic/pydantic-settings/pull/887 * Bump the python-packages group with 2 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/888 * Prevent NestedSecretsSettingsSource from following symlinks outside secrets_dir by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/889 * Add 'Part of the Pydantic Stack' footer to README by @&#8203;strawgate in https://github.com/pydantic/pydantic-settings/pull/891 * Bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/893 * Add support for showing environment variable names in CLI help text by @&#8203;brad-alexander in https://github.com/pydantic/pydantic-settings/pull/860 * Fix loading env vars on Windows with case_sensitive=True by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/894 * Bump the github-actions group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/896 * Bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/897 * Add explicit callout for the case where the unprefixed value is in dotenv by @&#8203;martinky24 in https://github.com/pydantic/pydantic-settings/pull/895 * Fix AliasPath on nested model fields not decoding env values (#&#8203;670) by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/898 * Support case_sensitive in InitSettingsSource and config file sources by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/900 * Warn when using fields not fully resolved at instantiation by @&#8203;Viicos in https://github.com/pydantic/pydantic-settings/pull/901 * Support Traversable for json/toml/yaml config file sources (#&#8203;299) by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/902 * docs: fix typos in docs and source comments by @&#8203;maxtaran2010 in https://github.com/pydantic/pydantic-settings/pull/904 * Apply case-insensitive field matching to optional nested models (#&#8203;903) by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/905 * Bump boto3 from 1.43.36 to 1.43.40 in the python-packages group by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/907 * Add PYDANTIC_SETTINGS_DEBUG for debugging settings sources (#&#8203;538) by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/906 * docs: recommend async settings loading pattern by @&#8203;w3lld1 in https://github.com/pydantic/pydantic-settings/pull/908 * fix: parse enum names through nested annotations by @&#8203;Sanjays2402 in https://github.com/pydantic/pydantic-settings/pull/910 * Fix dotenv extras being claimed by complex fields sharing a name prefix by @&#8203;ritsth in https://github.com/pydantic/pydantic-settings/pull/912 * Add debug logging for env_file and secret file resolution by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/913 * docs: document JSON parsing of complex env values + comma-separated recipe by @&#8203;hrithvikakb in https://github.com/pydantic/pydantic-settings/pull/919 * fix: coerce empty yaml_config_section to an empty mapping instead of crashing by @&#8203;chuenchen309 in https://github.com/pydantic/pydantic-settings/pull/914 * Bump the python-packages group with 3 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/915 * fix: read secret files as UTF-8 instead of the locale encoding by @&#8203;dchaudhari7177 in https://github.com/pydantic/pydantic-settings/pull/917 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/921 * Bump the github-actions group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/925 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/924 * fix: treat Secret subclasses as non-complex fields (#&#8203;716) by @&#8203;Rony-ZenAlden in https://github.com/pydantic/pydantic-settings/pull/920 * fix: raise ValidationError for non-JSON env values on strict fields by @&#8203;shuvamk in https://github.com/pydantic/pydantic-settings/pull/926 * test: move function-local imports to the top of test modules by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/927 * Bump the python-packages group with 4 updates by @&#8203;dependabot[bot] in https://github.com/pydantic/pydantic-settings/pull/929 * Prepare release 2.15.0 by @&#8203;hramezani in https://github.com/pydantic/pydantic-settings/pull/930 #### New Contributors * @&#8203;vip892766gma made their first contribution in https://github.com/pydantic/pydantic-settings/pull/867 * @&#8203;ecerulm made their first contribution in https://github.com/pydantic/pydantic-settings/pull/862 * @&#8203;gavin913-lss made their first contribution in https://github.com/pydantic/pydantic-settings/pull/880 * @&#8203;whyscream made their first contribution in https://github.com/pydantic/pydantic-settings/pull/882 * @&#8203;strawgate made their first contribution in https://github.com/pydantic/pydantic-settings/pull/891 * @&#8203;brad-alexander made their first contribution in https://github.com/pydantic/pydantic-settings/pull/860 * @&#8203;martinky24 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/895 * @&#8203;maxtaran2010 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/904 * @&#8203;w3lld1 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/908 * @&#8203;Sanjays2402 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/910 * @&#8203;ritsth made their first contribution in https://github.com/pydantic/pydantic-settings/pull/912 * @&#8203;hrithvikakb made their first contribution in https://github.com/pydantic/pydantic-settings/pull/919 * @&#8203;chuenchen309 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/914 * @&#8203;dchaudhari7177 made their first contribution in https://github.com/pydantic/pydantic-settings/pull/917 * @&#8203;Rony-ZenAlden made their first contribution in https://github.com/pydantic/pydantic-settings/pull/920 * @&#8203;shuvamk made their first contribution in https://github.com/pydantic/pydantic-settings/pull/926 **Full Changelog**: <https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.15.0> </details> ### [`v2.14.2`](https://github.com/pydantic/pydantic-settings/releases/tag/v2.14.2) [Compare Source](https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2) #### What's Changed This is a security patch release. - Prevent `NestedSecretsSettingsSource` from following symlinks outside `secrets_dir` by [@&#8203;hramezani](https://github.com/hramezani) in [#&#8203;889](https://github.com/pydantic/pydantic-settings/pull/889) - Prepare release 2.14.2 by [@&#8203;hramezani](https://github.com/hramezani) in [#&#8203;890](https://github.com/pydantic/pydantic-settings/pull/890) ##### Security Fixes [GHSA-4xgf-cpjx-pc3j](https://github.com/pydantic/pydantic-settings/security/advisories/GHSA-4xgf-cpjx-pc3j): `NestedSecretsSettingsSource` with `secrets_nested_subdir=True` could follow a symbolic link inside `secrets_dir` pointing outside it, reading out-of-tree files into settings values and bypassing the `secrets_dir_max_size` cap. Affected versions: `>= 2.12.0, < 2.14.2`. **Full Changelog**: <https://github.com/pydantic/pydantic-settings/compare/v2.14.1...v2.14.2> </details> <details> <summary>fastapi/sqlmodel (sqlmodel)</summary> ### [`v0.0.48`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.48) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.47...0.0.48) ##### Features - ✨ Add support for SQLAlchemy 2.1. PR [#&#8203;2112](https://github.com/fastapi/sqlmodel/pull/2112) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ⬆ Bump the python-packages group across 1 directory with 8 updates. PR [#&#8203;2110](https://github.com/fastapi/sqlmodel/pull/2110) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 3 updates. PR [#&#8203;2109](https://github.com/fastapi/sqlmodel/pull/2109) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pre-commit hooks. PR [#&#8203;2108](https://github.com/fastapi/sqlmodel/pull/2108) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). ### [`v0.0.47`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.47) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.46...0.0.47) ##### Features - ✨ Add direct support for PostgreSQL, MySQL, and MariaDB, include in CI tests. PR [#&#8203;2103](https://github.com/fastapi/sqlmodel/pull/2103) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.0.46`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.46) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.45...0.0.46) ##### Fixes - 🐛 Fix timedelta arithmetic with UTC datetime fields. PR [#&#8203;2101](https://github.com/fastapi/sqlmodel/pull/2101) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.0.45`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.45) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.44...0.0.45) ##### Breaking Changes - ✨ Use UTC datetimes by default. PR [#&#8203;2099](https://github.com/fastapi/sqlmodel/pull/2099) by [@&#8203;tiangolo](https://github.com/tiangolo). `datetime` fields now use `UTCDateTime`, a custom type based on `DateTime(timezone=True)`. It requires aware datetime parameters, normalizes them to UTC, and returns aware UTC values from database reads, including on SQLite and MySQL/MariaDB. Pydantic's `AwareDatetime` uses the same type, while `NaiveDatetime` explicitly selects `DateTime(timezone=False)`. Plain `datetime` validation still accepts both aware and naive values, but naive database parameters now raise an error. Existing databases are not changed automatically. To retain naive storage, use `NaiveDatetime` or an explicit `Field(sa_type=DateTime(timezone=False))`. Explicit SQLAlchemy types retain their existing behavior. PostgreSQL needs a column migration that explicitly specifies the timezone of existing values. SQLite and MySQL/MariaDB keep their column definitions, but existing non-UTC values need a data migration before adopting the new type. Update datetime producers, query parameters, comparisons, and any database defaults to follow the new UTC convention. Read [Datetimes and Timezones: Upgrade Existing Applications](https://sqlmodel.tiangolo.com/advanced/datetime/#upgrade-existing-applications) before upgrading. ### [`v0.0.44`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.44) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.43...0.0.44) ##### Refactors - ♻️ Replace the dataclass_transform shim with typing_extensions. PR [#&#8203;2097](https://github.com/fastapi/sqlmodel/pull/2097) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.0.43`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.43) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.42...0.0.43) ##### Fixes - 🐛 Fix SQLAlchemy type handling in `Field`. PR [#&#8203;2095](https://github.com/fastapi/sqlmodel/pull/2095) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ⬆ Bump sqlalchemy from 2.0.51 to 2.0.52. PR [#&#8203;2086](https://github.com/fastapi/sqlmodel/pull/2086) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group with 9 updates. PR [#&#8203;2085](https://github.com/fastapi/sqlmodel/pull/2085) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 4 updates. PR [#&#8203;2084](https://github.com/fastapi/sqlmodel/pull/2084) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pre-commit hooks. PR [#&#8203;2083](https://github.com/fastapi/sqlmodel/pull/2083) by [@&#8203;pr-submit\[bot\]](https://github.com/apps/pr-submit). ### [`v0.0.42`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.42) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.41...0.0.42) ##### Features - 🏷️ Allow `Discriminator` type for `discriminator` parameter in `Field`. PR [#&#8203;1729](https://github.com/fastapi/sqlmodel/pull/1729) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.0.41`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.41) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.40...0.0.41) ##### Refactors - 🗑️ Deprecate `min_items` and `max_items` parameters of `Field`. PR [#&#8203;1731](https://github.com/fastapi/sqlmodel/pull/1731) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.0.40`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.40) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.39...0.0.40) ##### Docs - ✏️ Fix grammar and typos in docs. PR [#&#8203;2058](https://github.com/fastapi/sqlmodel/pull/2058) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 📝 Fix "Decimals in SQLModel" to reference `Field()` instead of `condecimal()`. PR [#&#8203;2035](https://github.com/fastapi/sqlmodel/pull/2035) by [@&#8203;anxkhn](https://github.com/anxkhn). - 🐛 Use buttons for Termynal controls. PR [#&#8203;2063](https://github.com/fastapi/sqlmodel/pull/2063) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Add Library Skills documentation. PR [#&#8203;2052](https://github.com/fastapi/sqlmodel/pull/2052) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Recommend uv projects by default in docs. PR [#&#8203;2050](https://github.com/fastapi/sqlmodel/pull/2050) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Prevent Termynal controls from scrolling. PR [#&#8203;2051](https://github.com/fastapi/sqlmodel/pull/2051) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update help docs. PR [#&#8203;2049](https://github.com/fastapi/sqlmodel/pull/2049) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ⬆️ Bump Typer min version to `0.26.1`. PR [#&#8203;2078](https://github.com/fastapi/sqlmodel/pull/2078) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆️ Bump `setup-uv` action to `10.0.1`. PR [#&#8203;2077](https://github.com/fastapi/sqlmodel/pull/2077) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Migrate automatic labels to Latest Changes. PR [#&#8203;2074](https://github.com/fastapi/sqlmodel/pull/2074) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Remove legacy label check. PR [#&#8203;2072](https://github.com/fastapi/sqlmodel/pull/2072) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔐 Use PR Submit for pull requests. PR [#&#8203;2071](https://github.com/fastapi/sqlmodel/pull/2071) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use GitHub CLI for Git authentication. PR [#&#8203;2070](https://github.com/fastapi/sqlmodel/pull/2070) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use PR Push commit identity. PR [#&#8203;2069](https://github.com/fastapi/sqlmodel/pull/2069) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒 Replace pre-commit PAT with PR Push. PR [#&#8203;2067](https://github.com/fastapi/sqlmodel/pull/2067) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Remove Zensical docs cache. PR [#&#8203;2065](https://github.com/fastapi/sqlmodel/pull/2065) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove the old Latest Changes workflow. PR [#&#8203;2064](https://github.com/fastapi/sqlmodel/pull/2064) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group with 7 updates. PR [#&#8203;2060](https://github.com/fastapi/sqlmodel/pull/2060) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 5 updates. PR [#&#8203;2059](https://github.com/fastapi/sqlmodel/pull/2059) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆️ Upgrade latest-changes to 0.7.1. PR [#&#8203;2054](https://github.com/fastapi/sqlmodel/pull/2054) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 6 updates. PR [#&#8203;2042](https://github.com/fastapi/sqlmodel/pull/2042) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group across 1 directory with 4 updates. PR [#&#8203;2045](https://github.com/fastapi/sqlmodel/pull/2045) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Add GH workflow to bump pre-commit hook versions. PR [#&#8203;2026](https://github.com/fastapi/sqlmodel/pull/2026) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔧 Set Dependabot schedule interval to "monthly". PR [#&#8203;2025](https://github.com/fastapi/sqlmodel/pull/2025) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the python-packages group with 4 updates. PR [#&#8203;2039](https://github.com/fastapi/sqlmodel/pull/2039) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.47.2 to 1.48.0 in the pre-commit group. PR [#&#8203;2038](https://github.com/fastapi/sqlmodel/pull/2038) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Fix latest-changes checkout target. PR [#&#8203;2031](https://github.com/fastapi/sqlmodel/pull/2031) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.8.1. PR [#&#8203;2030](https://github.com/fastapi/sqlmodel/pull/2030) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update latest-changes to 0.6.1. PR [#&#8203;2029](https://github.com/fastapi/sqlmodel/pull/2029) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 8 updates. PR [#&#8203;2028](https://github.com/fastapi/sqlmodel/pull/2028) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 4 updates. PR [#&#8203;2027](https://github.com/fastapi/sqlmodel/pull/2027) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump sqlalchemy from 2.0.50 to 2.0.51. PR [#&#8203;2013](https://github.com/fastapi/sqlmodel/pull/2013) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Update release workflows, fix gitmoji emoji used. PR [#&#8203;2019](https://github.com/fastapi/sqlmodel/pull/2019) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.0.39`](https://github.com/fastapi/sqlmodel/releases/tag/0.0.39) [Compare Source](https://github.com/fastapi/sqlmodel/compare/0.0.38...0.0.39) ##### Features - ✨ Add SQLModel Agent Library Skill, install with `uvx library-skills`. PR [#&#8203;2017](https://github.com/fastapi/sqlmodel/pull/2017) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Fixes - 🐛 Fix type of `__sqlmodel_relationships__`. PR [#&#8203;1996](https://github.com/fastapi/sqlmodel/pull/1996) by [@&#8203;svlandeg](https://github.com/svlandeg). ##### Docs - 📝 Update docs badges: remove Publish badge, it doesn't give extra information. PR [#&#8203;2009](https://github.com/fastapi/sqlmodel/pull/2009) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update and simplify docs about help and management. PR [#&#8203;1978](https://github.com/fastapi/sqlmodel/pull/1978) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update docs about contributing, reference central docs. PR [#&#8203;1975](https://github.com/fastapi/sqlmodel/pull/1975) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update security policy. PR [#&#8203;1973](https://github.com/fastapi/sqlmodel/pull/1973) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update link syntax to minimal Markdown. PR [#&#8203;1800](https://github.com/fastapi/sqlmodel/pull/1800) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update admonitions, simplify and use defaults. PR [#&#8203;1915](https://github.com/fastapi/sqlmodel/pull/1915) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒️ Only allow team members to modify dependencies. PR [#&#8203;1914](https://github.com/fastapi/sqlmodel/pull/1914) by [@&#8203;svlandeg](https://github.com/svlandeg). ##### Internal - 👷 Simplify pull request workflow triggers. PR [#&#8203;2016](https://github.com/fastapi/sqlmodel/pull/2016) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Update issue-manager to 0.7.1. PR [#&#8203;2015](https://github.com/fastapi/sqlmodel/pull/2015) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.7.0. PR [#&#8203;2014](https://github.com/fastapi/sqlmodel/pull/2014) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒️ Update zizmor workflow security checks. PR [#&#8203;2010](https://github.com/fastapi/sqlmodel/pull/2010) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix alls-green test dependency. PR [#&#8203;2008](https://github.com/fastapi/sqlmodel/pull/2008) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group with 5 updates. PR [#&#8203;2006](https://github.com/fastapi/sqlmodel/pull/2006) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.47.1 to v1.47.2 in the pre-commit group. PR [#&#8203;2005](https://github.com/fastapi/sqlmodel/pull/2005) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in the github-actions group. PR [#&#8203;2004](https://github.com/fastapi/sqlmodel/pull/2004) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group with 3 updates. PR [#&#8203;2000](https://github.com/fastapi/sqlmodel/pull/2000) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.46.0 to v1.47.1 in the pre-commit group. PR [#&#8203;1999](https://github.com/fastapi/sqlmodel/pull/1999) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 2 updates. PR [#&#8203;1998](https://github.com/fastapi/sqlmodel/pull/1998) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump sqlalchemy from 2.0.49 to 2.0.50. PR [#&#8203;1992](https://github.com/fastapi/sqlmodel/pull/1992) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group across 1 directory with 9 updates. PR [#&#8203;1995](https://github.com/fastapi/sqlmodel/pull/1995) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump eps1lon/actions-label-merge-conflict from 3.0.3 to 3.1.0 in the github-actions group. PR [#&#8203;1993](https://github.com/fastapi/sqlmodel/pull/1993) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆️ Bump Pydantic to 2.13.4. PR [#&#8203;1985](https://github.com/fastapi/sqlmodel/pull/1985) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Automate release preparation. PR [#&#8203;1988](https://github.com/fastapi/sqlmodel/pull/1988) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove old package stub slim, not used nor needed. PR [#&#8203;1987](https://github.com/fastapi/sqlmodel/pull/1987) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the github-actions group with 2 updates. PR [#&#8203;1983](https://github.com/fastapi/sqlmodel/pull/1983) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Configure Dependabot to group updates and update weekly. PR [#&#8203;1972](https://github.com/fastapi/sqlmodel/pull/1972) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔥 Remove config files now in central GitHub repo. PR [#&#8203;1979](https://github.com/fastapi/sqlmodel/pull/1979) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.5. PR [#&#8203;1974](https://github.com/fastapi/sqlmodel/pull/1974) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Fix branch name in `guard-dependencies.yml`. PR [#&#8203;1916](https://github.com/fastapi/sqlmodel/pull/1916) by [@&#8203;svlandeg](https://github.com/svlandeg). - ♻️ Migrate docs to Zensical. PR [#&#8203;1913](https://github.com/fastapi/sqlmodel/pull/1913) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump ruff from 0.15.12 to 0.15.13. PR [#&#8203;1910](https://github.com/fastapi/sqlmodel/pull/1910) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔒️ Add zizmor and fix audit findings. PR [#&#8203;1871](https://github.com/fastapi/sqlmodel/pull/1871) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump ty from 0.0.34 to 0.0.35. PR [#&#8203;1904](https://github.com/fastapi/sqlmodel/pull/1904) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR [#&#8203;1900](https://github.com/fastapi/sqlmodel/pull/1900) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump actions/labeler from 6.0.1 to 6.1.0. PR [#&#8203;1902](https://github.com/fastapi/sqlmodel/pull/1902) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pydantic-settings from 2.14.0 to 2.14.1. PR [#&#8203;1903](https://github.com/fastapi/sqlmodel/pull/1903) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump prek from 0.3.11 to 0.3.13. PR [#&#8203;1901](https://github.com/fastapi/sqlmodel/pull/1901) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Add pre-commit for typos. PR [#&#8203;1899](https://github.com/fastapi/sqlmodel/pull/1899) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump ty from 0.0.32 to 0.0.34. PR [#&#8203;1898](https://github.com/fastapi/sqlmodel/pull/1898) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typer from 0.25.0 to 0.25.1. PR [#&#8203;1896](https://github.com/fastapi/sqlmodel/pull/1896) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump prek from 0.3.10 to 0.3.11. PR [#&#8203;1892](https://github.com/fastapi/sqlmodel/pull/1892) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typer from 0.24.2 to 0.25.0. PR [#&#8203;1893](https://github.com/fastapi/sqlmodel/pull/1893) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ruff from 0.15.11 to 0.15.12. PR [#&#8203;1888](https://github.com/fastapi/sqlmodel/pull/1888) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump fastapi from 0.136.0 to 0.136.1. PR [#&#8203;1887](https://github.com/fastapi/sqlmodel/pull/1887) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typer from 0.24.1 to 0.24.2. PR [#&#8203;1883](https://github.com/fastapi/sqlmodel/pull/1883) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump prek from 0.3.9 to 0.3.10. PR [#&#8203;1881](https://github.com/fastapi/sqlmodel/pull/1881) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ty from 0.0.31 to 0.0.32. PR [#&#8203;1876](https://github.com/fastapi/sqlmodel/pull/1876) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pydantic-settings from 2.13.1 to 2.14.0. PR [#&#8203;1878](https://github.com/fastapi/sqlmodel/pull/1878) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR [#&#8203;1868](https://github.com/fastapi/sqlmodel/pull/1868) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ty from 0.0.30 to 0.0.31. PR [#&#8203;1862](https://github.com/fastapi/sqlmodel/pull/1862) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR [#&#8203;1865](https://github.com/fastapi/sqlmodel/pull/1865) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR [#&#8203;1867](https://github.com/fastapi/sqlmodel/pull/1867) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump astral-sh/setup-uv from 7.6.0 to 8.1.0. PR [#&#8203;1866](https://github.com/fastapi/sqlmodel/pull/1866) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump fastapi from 0.135.3 to 0.136.0. PR [#&#8203;1869](https://github.com/fastapi/sqlmodel/pull/1869) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ruff from 0.15.10 to 0.15.11. PR [#&#8203;1870](https://github.com/fastapi/sqlmodel/pull/1870) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔒 Pin GitHub actions by commit SHA. PR [#&#8203;1840](https://github.com/fastapi/sqlmodel/pull/1840) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump ty from 0.0.29 to 0.0.30. PR [#&#8203;1861](https://github.com/fastapi/sqlmodel/pull/1861) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump prek from 0.3.8 to 0.3.9. PR [#&#8203;1859](https://github.com/fastapi/sqlmodel/pull/1859) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ruff from 0.15.9 to 0.15.10. PR [#&#8203;1856](https://github.com/fastapi/sqlmodel/pull/1856) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pytest from 9.0.2 to 9.0.3. PR [#&#8203;1855](https://github.com/fastapi/sqlmodel/pull/1855) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ty from 0.0.28 to 0.0.29. PR [#&#8203;1854](https://github.com/fastapi/sqlmodel/pull/1854) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔥 Remove outdated `needs_py310` marker from tests. PR [#&#8203;1852](https://github.com/fastapi/sqlmodel/pull/1852) by [@&#8203;stickm4n](https://github.com/stickm4n). - ⬆ Bump sqlalchemy from 2.0.48 to 2.0.49. PR [#&#8203;1850](https://github.com/fastapi/sqlmodel/pull/1850) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump ty from 0.0.26 to 0.0.28. PR [#&#8203;1849](https://github.com/fastapi/sqlmodel/pull/1849) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Replace `mypy` with `ty` in precommit. PR [#&#8203;1806](https://github.com/fastapi/sqlmodel/pull/1806) by [@&#8203;svlandeg](https://github.com/svlandeg). - ⬆ Bump ruff from 0.15.7 to 0.15.9. PR [#&#8203;1847](https://github.com/fastapi/sqlmodel/pull/1847) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump mypy from 1.19.1 to 1.20.0. PR [#&#8203;1843](https://github.com/fastapi/sqlmodel/pull/1843) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). </details> <details> <summary>Kludex/uvicorn (uvicorn)</summary> ### [`v0.54.0`](https://github.com/Kludex/uvicorn/releases/tag/0.54.0): Version 0.54.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0) #### 📨 Send metadata after the response body `uvicorn` 0.54.0 adds response trailers and `103 Early Hints` to its experimental HTTP/2 implementation through `zttp`. ```console uv add uvicorn==0.54.0 "zttp>=0.0.34" ``` - **Send HTTP/2 response trailers** ([#&#8203;3146](https://github.com/Kludex/uvicorn/pull/3146)). The ASGI `http.response.trailers` extension lets applications send metadata, such as checksums, after the response body. Clients must send `TE: trailers` to receive them. Multiple trailer messages are combined before completing the response. - **HTTP/2 remains experimental and opt-in.** Enable it with `--http zttp --http2`. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported. #### 💡 Hint at resources before the final response - **Send `103 Early Hints` over HTTP/2** ([#&#8203;3137](https://github.com/Kludex/uvicorn/pull/3137)). Applications can use the ASGI `http.response.early_hint` extension to send resource hints before the final response. Each supplied link becomes a separate `Link` header. **Full changelog:** [0.53.0...0.54.0](https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0) ### [`v0.53.0`](https://github.com/Kludex/uvicorn/releases/tag/0.53.0): Version 0.53.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0) #### 🌐 Opt-in HTTP/2 support `uvicorn` 0.53.0 adds experimental HTTP/2 through `zttp`, alongside a new `zuvloop` integration and connection-handling improvements. ```console uv add uvicorn==0.53.0 ``` - **Serve HTTP/1.1 and HTTP/2 with `zttp`** ([#&#8203;2982](https://github.com/Kludex/uvicorn/pull/2982), [#&#8203;3101](https://github.com/Kludex/uvicorn/pull/3101)). Install `zttp`, then enable HTTP/2 with `--http zttp --http2`. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge. - **HTTP/2 remains experimental.** Upgrade-based h2c and WebSockets over HTTP/2 are not supported. #### ⚙️ More event loop choice - **Run Uvicorn with `zuvloop`** ([#&#8203;3104](https://github.com/Kludex/uvicorn/pull/3104)). Install `zuvloop` separately and select it explicitly with `--loop zuvloop` on CPython 3.14 or newer. #### 🛡️ More reliable connections and proxies - **Honor `Connection: close` token lists** ([#&#8203;3103](https://github.com/Kludex/uvicorn/pull/3103)). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations. - **Trust IPv6 loopback proxies by default** ([#&#8203;3119](https://github.com/Kludex/uvicorn/pull/3119)). The default `FORWARDED_ALLOW_IPS` value now includes `::1`. - **Keep upgraded WebSockets alive** ([#&#8203;3107](https://github.com/Kludex/uvicorn/pull/3107)). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket. **Full changelog:** [0.52.4...0.53.0](https://github.com/Kludex/uvicorn/compare/0.52.4...0.53.0) ### [`v0.52.4`](https://github.com/Kludex/uvicorn/releases/tag/0.52.4): Version 0.52.4 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4) ##### Fixed - Remove duplicate `Date` headers from accepted WebSocket handshakes with `websockets-sansio` ([#&#8203;3078](https://github.com/Kludex/uvicorn/pull/3078)) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4> ### [`v0.52.3`](https://github.com/Kludex/uvicorn/releases/tag/0.52.3): Version 0.52.3 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3) ##### Changed - Update `zttp` to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance ([#&#8203;3067](https://github.com/Kludex/uvicorn/issues/3067)) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3> ### [`v0.52.2`](https://github.com/Kludex/uvicorn/releases/tag/0.52.2): Version 0.52.2 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2) ##### Fixed - Update `zttp` to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance ([#&#8203;3063](https://github.com/Kludex/uvicorn/issues/3063)) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2> ### [`v0.52.1`](https://github.com/Kludex/uvicorn/releases/tag/0.52.1): Version 0.52.1 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1) ##### Fixed - Complete the closing handshake on server-initiated WebSocket closes in the `websockets-sansio` and `wsproto` implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection ([#&#8203;3053](https://github.com/Kludex/uvicorn/issues/3053)) - Add missing write flow control to the `websockets-sansio` implementation, preventing data truncation on server-initiated closes with large in-flight payloads ([#&#8203;3048](https://github.com/Kludex/uvicorn/issues/3048)) - Handle connection loss while a WebSocket write is waiting on backpressure ([#&#8203;3050](https://github.com/Kludex/uvicorn/issues/3050)) - Remove duplicate `Content-Type` and `Content-Length` headers from WebSocket denial responses on the `websockets-sansio` implementation, and deliver non-UTF-8 denial bodies intact ([#&#8203;3041](https://github.com/Kludex/uvicorn/issues/3041)) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1> ### [`v0.52.0`](https://github.com/Kludex/uvicorn/releases/tag/0.52.0): Version 0.52.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0) This release adds an experimental HTTP/1.1 implementation backed by [zttp](https://zttp.marcelotryle.com/), a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing. It is still **experimental**, so don't put it in front of production traffic yet. Try it with `--http zttp`, and please send any feedback to the [issue tracker](https://github.com/Kludex/uvicorn/issues). ##### Added - Add an experimental `zttp` HTTP/1.1 implementation, selectable with `--http zttp` ([#&#8203;2979](https://github.com/Kludex/uvicorn/issues/2979)) ##### Fixed - Keep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 ([#&#8203;3036](https://github.com/Kludex/uvicorn/issues/3036)) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0> ### [`v0.51.0`](https://github.com/Kludex/uvicorn/releases/tag/0.51.0): Version 0.51.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.50.2...0.51.0) #### What's Changed - Restart workers with overlap on SIGHUP for near-zero-downtime reloads by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;3025](https://github.com/Kludex/uvicorn/pull/3025) - Remove colorama from the standard extra by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;3027](https://github.com/Kludex/uvicorn/pull/3027) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.50.2...0.51.0> ### [`v0.50.2`](https://github.com/Kludex/uvicorn/releases/tag/0.50.2): Version 0.50.2 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.50.1...0.50.2) #### What's Changed - Require websockets>=13.0 for the default sansio implementation by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;3021](https://github.com/Kludex/uvicorn/pull/3021) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.50.1...0.50.2> ### [`v0.50.1`](https://github.com/Kludex/uvicorn/releases/tag/0.50.1): Version 0.50.1 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.50.0...0.50.1) #### What's Changed - Split comma-separated `Sec-WebSocket-Protocol` values in the websockets-sansio implementation by [@&#8203;Aayush7352](https://github.com/Aayush7352) in [#&#8203;3019](https://github.com/Kludex/uvicorn/pull/3019) #### New Contributors - [@&#8203;Aayush7352](https://github.com/Aayush7352) made their first contribution in [#&#8203;3019](https://github.com/Kludex/uvicorn/pull/3019) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.50.0...0.50.1> ### [`v0.50.0`](https://github.com/Kludex/uvicorn/releases/tag/0.50.0): Version 0.50.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0) #### What's Changed - Memoize trusted host checks to avoid re-parsing the client IP per request by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2970](https://github.com/Kludex/uvicorn/pull/2970) - Cache the `asgi` scope sub-dict per connection by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2976](https://github.com/Kludex/uvicorn/pull/2976) - Build a fresh `asgi` scope dict per request by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2977](https://github.com/Kludex/uvicorn/pull/2977) - Replace click.style with an internal ANSI style helper by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2981](https://github.com/Kludex/uvicorn/pull/2981) - Avoid copying single-frame WebSocket payloads in websockets-sansio by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2983](https://github.com/Kludex/uvicorn/pull/2983) - Deprecate the legacy websockets implementation and default `auto` to websockets-sansio by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2985](https://github.com/Kludex/uvicorn/pull/2985) - Exit with a dedicated code on startup failure and stop the supervisor when a worker can't boot by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;3001](https://github.com/Kludex/uvicorn/pull/3001) - Skip the eager app import in the parent when spawning workers by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;3012](https://github.com/Kludex/uvicorn/pull/3012) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.49.0...0.50.0> ### [`v0.49.0`](https://github.com/Kludex/uvicorn/releases/tag/0.49.0): Version 0.49.0 [Compare Source](https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0) #### What's Changed - Bump httptools minimum version to 0.8.0 by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2962](https://github.com/Kludex/uvicorn/pull/2962) - Consume duplicate forwarding headers in ProxyHeadersMiddleware (reverses the 0.48.0 behavior of ignoring them) by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;2971](https://github.com/Kludex/uvicorn/pull/2971) **Full Changelog**: <https://github.com/Kludex/uvicorn/compare/0.48.0...0.49.0> </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/Warsaw) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 👻 **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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNDUuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE0NS4xIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbImRlcHMtY29kZSIsInJlbm92YXRlIl19-->
renovate Bot added the deps-coderenovate labels 2026-10-11 00:33:11 +00:00
renovate Bot added 1 commit 2026-10-11 00:33:11 +00:00
chore(deps): update code dependencies
renovate/stability-days Updates have met minimum release age requirement
renovate/artifacts Artifact file update failure
1f42ecbaab
renovate Bot scheduled this pull request to auto merge when all checks succeed 2026-10-11 00:33:11 +00:00

⚠️ 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/pyproject.toml
Artifact update for fastapi resolved to version 0.143.0, which is a pending version that has not yet passed the Minimum Release Age threshold.
Renovate was attempting to update to 0.142.4
This is (likely) not a bug in Renovate, but due to the way your project pins dependencies, _and_ how Renovate calls your package manager to update them.
Until Renovate supports specifying an exact update to your package manager (https://github.com/renovatebot/renovate/issues/41624), it is recommended to directly pin your dependencies (with `rangeStrategy=pin` for apps, or `rangeStrategy=widen` for libraries)
See also: https://docs.renovatebot.com/dependency-pinning/
### ⚠️ 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/pyproject.toml ``` Artifact update for fastapi resolved to version 0.143.0, which is a pending version that has not yet passed the Minimum Release Age threshold. Renovate was attempting to update to 0.142.4 This is (likely) not a bug in Renovate, but due to the way your project pins dependencies, _and_ how Renovate calls your package manager to update them. Until Renovate supports specifying an exact update to your package manager (https://github.com/renovatebot/renovate/issues/41624), it is recommended to directly pin your dependencies (with `rangeStrategy=pin` for apps, or `rangeStrategy=widen` for libraries) See also: https://docs.renovatebot.com/dependency-pinning/ ```
renovate Bot merged commit 6e4f0acddb into dev 2026-10-11 00:33:12 +00:00
renovate Bot deleted branch renovate/dev-code-dependencies 2026-10-11 00:33:12 +00:00
Sign in to join this conversation.