chore(deps): bump the python-minor-and-patch group with 21 updates
Bumps the python-minor-and-patch group with 21 updates:
| Package | From | To |
|---|---|---|
| aiohttp | 3.14.3 | 3.14.5 |
| azure-identity | 1.25.0 | 1.26.0 |
| boto3 | 1.43.78 | 1.43.114 |
| gitpython | 3.1.62 | 3.2.1 |
| starlette | 1.6.0 | 1.8.0 |
| pyjwt | 2.13.0 | 2.15.1 |
| python-gitlab | 8.3.0 | 8.6.0 |
| starlette-context | 0.3.6 | 0.5.1 |
| uvicorn | 0.52.4 | 0.54.0 |
| a2a-sdk[http-server] | 1.0.3 | 1.2.2 |
| pydantic | 2.13.3 | 2.14.1 |
| pydantic-settings | 2.14.2 | 2.16.0 |
| prometheus-client | 0.21.1 | 0.26.0 |
| langchain | 1.3.11 | 1.4.6 |
| langchain-core | 1.4.8 | 1.6.12 |
| langchain-openai | 1.3.3 | 1.7.2 |
| pandas | 3.0.3 | 3.0.6 |
| lancedb | 0.38.0 | 0.40.0 |
| qdrant-client | 1.15.1 | 1.19.1 |
| pre-commit | 4.6.0 | 4.7.0 |
| ruff | 0.16.8 | 0.17.1 |
Updates aiohttp from 3.14.3 to 3.14.5
Updates azure-identity from 1.25.0 to 1.26.0
Release notes
Sourced from azure-identity's releases.
azure-identity_1.26.0
1.26.0 (2026-09-30)
Features Added
ManagedIdentityCredentialnow supports user-assigned managed identities on Azure Arc-enabled servers. An identity can be selected by client ID, object ID, or resource ID. Token responses that do not confirm the requested identity are rejected. (#48967)Bugs Fixed
- Fixed synchronous Service Fabric managed identity authentication with MSAL 1.39.0 and later. Service Fabric now uses the session from an Azure Core
RequestsTransport. (#48967)- Fixed an issue where
AuthorizationCodeCredentialand the asynchronousOnBehalfOfCredentialcould return a cached token for another account when multiple credentials shared a token cache. (#49001)Other Changes
- Added
RequestIdPolicyto the default pipeline policies to ensure a uniquex-ms-client-request-idheader is sent with each request. (#46070)CertificateCredentialnow passes the PEM private key to MSAL as astrrather thanbytes, matching MSAL's documentedclient_credentialcontract. (#46801)- Bumped the minimum dependency on
msalto>=1.39.0.
Commits
30d8bb9[identity] prepare azure-identity 1.26.0 release (#49290)c7148b7[identity] Enable user-assigned managed identity for AzureArcCredential (#48967)c5b1f4f[Identity] Fix identity cache issue (#49001)9d085c1[AutoPR azure-mgmt-compute-bulkaction]-generated-from-SDK Generation - Python...efc412d[TA] fix release error (#49261)3d9b8b3Prepare Responses 2.3.0b2 release (#49281)8e49d15[AutoPR azure-mgmt-resiliencemanagement]-generated-from-SDK Generation - Pyth...ef68c78Preserve canonical agent reference in response snapshots (#49256)3754db9Configurations: 'specification/applink/AppLink.Management/tspconfig.yaml', a...0929352[Mgmt] Make review drafts and incomplete outcomes reliable (#49275)- Additional commits viewable in compare view
Updates boto3 from 1.43.78 to 1.43.114
Commits
432fa17Merge branch 'release-1.43.114'bf4aed7Bumping version to 1.43.114fa3e3f2Add changelog entries from botocore69ed308Merge branch 'release-1.43.113'3abaa49Merge branch 'release-1.43.113' into develop741f8d9Bumping version to 1.43.113ad1c6b5Add changelog entries from botocore9ca5e36Merge branch 'release-1.43.112'f5581baMerge branch 'release-1.43.112' into develop6f065c3Bumping version to 1.43.112- Additional commits viewable in compare view
Updates gitpython from 3.1.62 to 3.2.1
Release notes
Sourced from gitpython's releases.
3.2.1
What's Changed
- prepare for next release, v3.2 by
@Byronin gitpython-developers/GitPython#2260- objects: decode a byte mode before reading its digits by
@SashaMITin gitpython-developers/GitPython#2261- build(deps): bump https://github.com/astral-sh/ruff-pre-commit from v0.16.5 to 0.16.9 in the pre-commit group by
@dependabot[bot] in gitpython-developers/GitPython#2263- fix(submodule): validate destinations before mutation by
@Byronin gitpython-developers/GitPython#2264- fix(util): create lock files in one exclusive step by
@radhika1314in gitpython-developers/GitPython#2267- fix(commit): accumulate gpgsig continuation lines in linear time by
@Keerthana-64in gitpython-developers/GitPython#2268- fix(index): accept a single PathLike in checkout by
@kokotatanin gitpython-developers/GitPython#2269- fix(util): redact URL credentials without corrupting the host by
@yunaremaiain gitpython-developers/GitPython#2270- change line for changelogs by
@CrowZhenin gitpython-developers/GitPython#2272- fix(commit): reject identity fields that alter commit headers by
@Keerthana-64in gitpython-developers/GitPython#2271- fix: stop stalled remote commands when their timeout expires by
@Byronin gitpython-developers/GitPython#2277- fix(util): reject symbolic links that alias
.gitmodulesby@Keerthana-64in gitpython-developers/GitPython#2278- fix: send one object name or path per git stdin record by
@Keerthana-64in gitpython-developers/GitPython#2279- fix(stats): preserve whitespace in filenames by
@v1shayin gitpython-developers/GitPython#2280- fix(config): preserve exact large integer values by
@xiehuanyiin gitpython-developers/GitPython#2281- fix: resolve IterableList names independently of list attributes by
@FanWu-aiin gitpython-developers/GitPython#2283- fix relative blocking lock 20261011 by
@Byronin gitpython-developers/GitPython#2284New Contributors
@SashaMITmade their first contribution in gitpython-developers/GitPython#2261@kokotatanmade their first contribution in gitpython-developers/GitPython#2269@yunaremaiamade their first contribution in gitpython-developers/GitPython#2270@CrowZhenmade their first contribution in gitpython-developers/GitPython#2272@v1shaymade their first contribution in gitpython-developers/GitPython#2280@xiehuanyimade their first contribution in gitpython-developers/GitPython#2281@FanWu-aimade their first contribution in gitpython-developers/GitPython#2283Full Changelog: https://github.com/gitpython-developers/GitPython/compare/3.2.0...3.2.1
3.2.0 - Security
What's Changed
- test: cover subdirectory discovery and pathspec commands in bare-repository worktrees by
@christianvueringsin gitpython-developers/GitPython#2228- Read git's yes/no and on/off booleans in get_value by
@rawsun007in gitpython-developers/GitPython#2229- Clarify detached HEAD access and isolate test branch state by
@Byronin gitpython-developers/GitPython#2231- Reject submodule move destinations through intermediate symlinks by
@Byronin gitpython-developers/GitPython#2232- fix: validate checkout positional reference options by
@Byronin gitpython-developers/GitPython#2233- Fix timeout child-process lookup on non-GNU systems by
@aprylewuin gitpython-developers/GitPython#2236- Preserve implicit boolean config keys by
@Byronin gitpython-developers/GitPython#2238- Reject comments after implicit boolean config keys by
@Byronin gitpython-developers/GitPython#2239- Fix case-insensitive Git config name matching by
@Byronin gitpython-developers/GitPython#2241- Move project metadata to pyproject.toml by
@mwtoewsin gitpython-developers/GitPython#2242- Move [doc] extra to a PEP 735 dependency group; add uv-sync CI check by
@mwtoewsin gitpython-developers/GitPython#2243- fix: strip inline config comments the way git does by
@rawsun007in gitpython-developers/GitPython#2245- Drop Python 3.7 by
@mwtoewsin gitpython-developers/GitPython#2246- fix: preserve positional operands in high-level Git commands by
@Byronin gitpython-developers/GitPython#2247- submodule: option to update without fetching by
@jeffro256in gitpython-developers/GitPython#2244- bump minor version to indicate drop of python 3.7 support by
@Byronin gitpython-developers/GitPython#2248- fix: skip a UTF-8 BOM when reading config files by
@geek-alphain gitpython-developers/GitPython#2249
... (truncated)
Changelog
Sourced from gitpython's changelog.
3.2.1
Security fixes for
If you can, also try and provide feedback on the upcoming v4 branch gitpython-developers/GitPython#2274 - patches welcome.
See the following for all changes. https://github.com/gitpython-developers/GitPython/releases/tag/3.2.1
3.2.0
Drops support for Python 3.7 (5 years after its EOL).
Security fixes for
- Deprecate the pure-Python
GitDBobject database backend due to security and performance issues. Selecting it or a subclass throughodbtnow emits aDeprecationWarning. Removeodbt=GitDBto useGitCmdObjectDB, the existing default, or selectodbt=GitCmdObjectDBexplicitly. Thegitdbpackage remains a dependency for shared types and utilities.- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-gq48-pqfc-9p58
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-23mf-xhv8-69c2
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-f9j4-qggq-h239
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-w8jc-g24h-crhw
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-m64x-33q8-m5h7
- https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-fx3j-rwgx-fr94
If you can, also try and provide feedback on the upcoming v4 branch gitpython-developers/GitPython#2274 - patches welcome.
See the following for all changes. https://github.com/gitpython-developers/GitPython/releases/tag/3.2.0
Commits
c179357prepare changelog prior to release97eadb8fix(submodule): validate destinations before mutation6a7180aprepare for next release, v3.20b64501refactor(db): deprecate the pure-PythonGitDBbackend9349ff5fix(repo): preserve literal separate Git directory paths8290c98fix: bound actor and date parsing9ad28ccfix: complete safety checks in Git command wrappersce2093bbump minor version to indicate drop of python 3.7 supportdafafffMerge pull request #2247 from gitpython-developers/pos-arg-sanitization790bb31fix(remote): reject option-shaped pull operands- Additional commits viewable in compare view
Updates starlette from 1.6.0 to 1.8.0
Release notes
Sourced from starlette's releases.
Version 1.8.0
This release adds HTTP 103 Early Hints, preserves response trailers through
GZipMiddleware, and stopsFileResponsetransfers when clients disconnect. Starlette now requires Python 3.11.Added
- Add
Request.send_early_hints()for HTTP 103 Early Hints through the ASGIhttp.response.early_hintextension #3435.Changed
- Require Python 3.11 or later, dropping support for Python 3.10 #3592.
- Exclude native gRPC media types (
application/grpcandapplication/grpc+...) fromGZipMiddlewarecompression by default #3565.- Send
http.response.startimmediately inGZipMiddlewarefor responses with an existingContent-Encoding, status206, or an excluded content type, instead of waiting for the first body chunk #3631.- Resolve the multipart charset once per request instead of once per field #3618.
Fixed
- Preserve response trailers through
GZipMiddleware#3565.- Stop
FileResponsetransfers when the client disconnects #3523.- Stop multipart range responses when the file ends before a range is complete, instead of looping forever #3583.
- Ignore
RangewhenIf-Rangecontains a weak ETag #3567.- Include
Allow: GET, HEADinStaticFiles405responses #3640.- Close
Request.stream()generators deterministically, avoiding "Exception ignored" errors with stackedBaseHTTPMiddleware#3628.- Add
Vary: CookiewhenSession.pop()removes an existing key #3186.- Emit
Max-Age=0on the session cookie whenSessionMiddlewareusesmax_age=0#3651.- Bracket IPv6 hostnames in
URL.replace()#3617.Full changelog: 1.7.0...1.8.0
Version 1.7.0
This release adds experimental OpenTelemetry tracing, HTTP
QUERYsupport, and response trailers inTestClient. Starlette now requires AnyIO 4.[!WARNING]
OpenTelemetryMiddlewareis experimental. Its API and emitted telemetry may change in minor releases without a deprecation period.Added
- Add experimental
OpenTelemetryMiddlewarefor HTTP server spans, with URL exclusions and custom tracer providers #3438, #3463, and #3520.- Expose the matched route through
scope["route"]#3438.- Support the
QUERYHTTP method inHTTPEndpoint, CORS, and OpenAPI 3.2 schema generation #3489.- Capture HTTP response trailers in
TestClientand expose them throughresponse.extensions["http.response.trailers"]#3563.- Support partitioned cookies in
SessionMiddleware#3510.- Add
partitionedtoResponse.delete_cookie()on Python 3.14 and later #3376.- Support IPv6 hosts in
TrustedHostMiddlewareandTestClient#3471.- Support Python 3.15 #3508.
Changed
... (truncated)
Changelog
Sourced from starlette's changelog.
1.8.0 (October 13, 2026)
This release drops Python 3.10 support and adds HTTP 103 Early Hints.
Added
- Add
Request.send_early_hints()for HTTP 103 Early Hints through the ASGIhttp.response.early_hintextension #3435.Changed
- Require Python 3.11 or later, dropping support for Python 3.10 #3592.
- Exclude native gRPC media types (
application/grpcandapplication/grpc+...) fromGZipMiddlewarecompression by default #3565.- Send
http.response.startimmediately inGZipMiddlewarefor responses with an existingContent-Encoding, status206, or an excluded content type, instead of waiting for the first body chunk #3631.- Resolve the multipart charset once per request instead of once per field #3618.
Fixed
- Preserve response trailers through
GZipMiddleware#3565.- Stop
FileResponsetransfers when the client disconnects #3523.- Stop multipart range responses when the file ends before a range is complete, instead of looping forever #3583.
- Ignore
RangewhenIf-Rangecontains a weak ETag #3567.- Include
Allow: GET, HEADinStaticFiles405responses #3640.- Close
Request.stream()generators deterministically, avoiding "Exception ignored" errors with stackedBaseHTTPMiddleware#3628.- Add
Vary: CookiewhenSession.pop()removes an existing key #3186.- Emit
Max-Age=0on the session cookie whenSessionMiddlewareusesmax_age=0#3651.- Bracket IPv6 hostnames in
URL.replace()#3617.1.7.0 (September 23, 2026)
This release adds experimental OpenTelemetry tracing and requires AnyIO 4.
!!! warning "OpenTelemetryMiddleware is experimental" Its API and emitted telemetry may change in minor releases without a deprecation period #3574.
Added
- Add experimental
OpenTelemetryMiddlewarefor HTTP server spans, with URL exclusions and custom tracer providers #3438, #3463, and #3520.- Expose the matched route through
scope["route"]#3438.- Support the
QUERYHTTP method inHTTPEndpoint, CORS, and OpenAPI 3.2 schema generation #3489.- Capture HTTP response trailers in
TestClientand expose them throughresponse.extensions["http.response.trailers"]#3563.- Support partitioned cookies in
SessionMiddleware#3510.- Add
partitionedtoResponse.delete_cookie()on Python 3.14 and later #3376.- Support IPv6 hosts in
TrustedHostMiddlewareandTestClient#3471.- Support Python 3.15 #3508.
Changed
... (truncated)
Commits
7b2948fVersion 1.8.0 (#3660)5b544ceSend response start immediately when GZipMiddleware cannot compress (#3631)96d5023EmitMax-Age=0on session cookie whenmax_age=0(#3651)0a15da3Include allowed methods in StaticFiles 405 responses (#3640)ff5b4dfCloseRequest.stream()generators withaclosing(#3628)7cb2f09Mark sessions as accessed when popping existing keys (#3186)c67ca4eAdd HTTP 103 Early Hints support (#3435)04741d0Update broken external documentation links (#3621)470f986Correct the documented WebSocket and Request constructor signatures (#3580)b2e8750Bracket IPv6 hostnames inURL.replace()(#3617)- Additional commits viewable in compare view
Updates pyjwt from 2.13.0 to 2.15.1
Release notes
Sourced from pyjwt's releases.
2.15.1
See the 2.15.1 changelog for complete release details.
2.15.0
See the 2.15.0 changelog for complete release details.
2.14.0
See the 2.14.0 changelog for the complete release details and related security advisories.
Changelog
Sourced from pyjwt's changelog.
v2.15.1 <https://github.com/jpadilla/pyjwt/compare/2.15.0...2.15.1>__Fixed
- Accept trailing Base64URL ``=`` padding when decoding JWS segments, so tokens issued by AWS ALB and similar systems verify instead of raising ``DecodeError: Invalid crypto padding``. Non-alphabet junk such as ``!!!!`` remains rejected (`[#1209](https://github.com/jpadilla/pyjwt/issues/1209) <https://github.com/jpadilla/pyjwt/issues/1209>`__).
v2.15.0 <https://github.com/jpadilla/pyjwt/compare/2.14.0...2.15.0>__
Security
- Wrap recursion errors from deeply nested JWT payloads in
DecodeErrorinstead of exposing a rawRecursionError.Added
- Support Python 3.15 by @kytta in `[#1202](https://github.com/jpadilla/pyjwt/issues/1202) <https://github.com/jpadilla/pyjwt/pull/1202>`__
Changed
JWKSetCachenow stores the parsedPyJWKSetrather than the raw JWKS payload, so a cache hit no longer re-parses every key.JWKSetCache.put()accepts either form and raisesPyJWKSetErrorfor anything else. As a result,PyJWKClient.get_jwk_set()returns the samePyJWKSetinstance for as long as it stays cached, rather than a freshly built one per call in[#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>__PyJWKClient.fetch_data()now raisesPyJWKClientError("The JWKS endpoint did not return a JSON object")when the endpoint response is not a JSON object, instead of returning it forget_jwk_set()to reject. Callers reaching the JWKS throughget_jwk_set()see the same error as before in[#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>__Fixed
- Return cached ``PyJWKSet`` values from ``PyJWKClient.get_jwk_set()`` instead of raising ``PyJWKClientError("The JWKS endpoint did not return a JSON object")``. ``JWKSetCache.put()`` documents ``PyJWKSet`` as the cached value, so callers pre-populating the cache to avoid a network round-trip could not read it back in `[#914](https://github.com/jpadilla/pyjwt/issues/914) <https://github.com/jpadilla/pyjwt/issues/914>`__ and `[#1208](https://github.com/jpadilla/pyjwt/issues/1208) <https://github.com/jpadilla/pyjwt/pull/1208>`__ </tr></table>
... (truncated)
Commits
7d5ef55chore: prepare 2.15.1 release7bf3252Accept canonical Base64URL padding in JWT segments (#1216)1d41a64chore: prepare 2.15.0 release9bc0665fix: make recursive payload tests deterministic5fde08afix: normalize recursive JWT payload errors171062dutils: mention bytes in force_bytes type error (#1173)c9d4d53docs/conf: drop duplicate 'and' from read() docstring (#1174)2763752Add support for Python 3.15 (#1202)4adcd02Catch http.client.HTTPException in PyJWKClient.fetch_data (#1201)9e501d9fix: correct docstring typo in _validate_jti (#1179)- Additional commits viewable in compare view
Updates python-gitlab from 8.3.0 to 8.6.0
Release notes
Sourced from python-gitlab's releases.
v8.6.0 (2026-09-28)
This release is published under the LGPL-3.0-or-later License.
Bug Fixes
COPYING: Use the combined LGPGL and GPL license text. (
b6e65dd)renovate: Add a 7-day cooldown for updates (
6bb4216)Features
- hooks: Add all available project hook attributes (
f57c33b)Testing
- Don't delete source branch by default for projects (
aff7954)
Detailed Changes: v8.5.0...v8.6.0
v8.5.0 (2026-07-28)
This release is published under the LGPL-3.0-or-later License.
Bug Fixes
Typo (
72134f5)api: Allow ProjectMergeRequestDiscussionNote.resolved to be updated (
b411e5a)client: Retry fetching server version after an unknown result (
046fbac)Continuous Integration
- Run the pre-commit rst checks in the CI (
a9c5d17)Documentation
Correct error with backticks (
e57559e)discussions: Add example of resolving a single project merge request discussion note (
2ef6452)Features
... (truncated)
Changelog
Sourced from python-gitlab's changelog.
v8.6.0 (2026-09-28)
Bug Fixes
COPYING: Use the combined LGPGL and GPL license text. (
b6e65dd)renovate: Add a 7-day cooldown for updates (
6bb4216)Features
- hooks: Add all available project hook attributes (
f57c33b)Testing
- Don't delete source branch by default for projects (
aff7954)v8.5.0 (2026-07-28)
Bug Fixes
Typo (
72134f5)api: Allow ProjectMergeRequestDiscussionNote.resolved to be updated (
b411e5a)client: Retry fetching server version after an unknown result (
046fbac)Continuous Integration
- Run the pre-commit rst checks in the CI (
a9c5d17)Documentation
Correct error with backticks (
e57559e)discussions: Add example of resolving a single project merge request discussion note (
2ef6452)Features
- api: Add ListMixin to remaining *DiscussionNoteManagers
... (truncated)
Commits
51eb17echore: release v8.6.0ce92c8fchore(deps): update all non-major dependenciesa3e3713chore(deps): update gitlab/gitlab-ee docker tag to v19.3.2-ee.0 (#3448)a47b5e0chore(deps): update all non-major dependenciesc58ca36chore(deps): update pre-commit hook pycqa/isort to v950b7c1echore(deps): update dependency isort to v9dc9afedchore(deps): update all non-major dependenciesc56d5fdchore(deps): update gitlab/gitlab-ee docker tag to v19.3.1-ee.0 (#3443)3032667chore(deps): update dependency types-setuptools to v84f4a643fchore(deps): update pre-commit hook maxbrunet/pre-commit-renovate to v44- Additional commits viewable in compare view
Updates starlette-context from 0.3.6 to 0.5.1
Release notes
Sourced from starlette-context's releases.
v0.5.1
- Fix
HeaderKeysenumstr()behavior inconsistency across Python versions (#192). On Python 3.11+,str(HeaderKeys.api_key)returned"HeaderKeys.api_key"instead of"X-API-Key". Now usesStrEnumfor consistent behavior across all supported Python versions.v0.5.0
- Add support for Python 3.13 and 3.14
- Drop support for Python 3.9. Now only 3.10+ is supported
- Migrate from Poetry to uv as the package manager and build tool
- Switch build backend from poetry-core to hatchling
- Replace
assertwithConfigurationErrorinPlugin.process_requestfor clearer error messages- Replace Black with
ruff formatfor code formatting- Replace deprecated
HTTP_422_UNPROCESSABLE_ENTITYwithHTTP_422_UNPROCESSABLE_CONTENTv0.4.0
- Drop support for Python 3.8. Now only 3.9+ is supported ( tomwojcik/starlette-context#152 )
- Drop support for Starlette versions below 0.27.0 ( released May 16, 2023) ( tomwojcik/starlette-context#152 )
- Drop
ContextMiddlewaredeprecation warning as Starlette no longer plans to deprecate it ( https://github.com/encode/starlette/discussions/2160#discussioncomment-6053386 )- Fix
starlette-contextpotentially breaking ifContextMiddlewareis used along withstarlette>=0.41.3( tomwojcik/starlette-context#151 )
Commits
9ac3634Bump version to 0.5.1, update changelog and authors0ee5c58improve codecov after tomwojcik/starlette-context#192...ad81772Added test for consistent enum behavior410805dMake pre-3.11 behavior with post-3.110c5470fimprove docs and tests post https://github.com/tomwojcik/starlette-context/pu...bc0a78fAdd background task context tests and update documentation2ed7b74Bump astral-sh/setup-uv from 5 to 7e0e57ffOnly upload codecov for latest Python/Starlette matrix entrycde2259Limit sdist contents to package source and essential filesaf8d901Fix documentation examples and modernize project tooling- Additional commits viewable in compare view
Updates uvicorn from 0.52.4 to 0.54.0
Release notes
Sourced from uvicorn's releases.
Version 0.54.0
📨 Send metadata after the response body
uvicorn0.54.0 adds response trailers and103 Early Hintsto its experimental HTTP/2 implementation throughzttp.uv add uvicorn==0.54.0 "zttp>=0.0.34"
- Send HTTP/2 response trailers (#3146). The ASGI
http.response.trailersextension lets applications send metadata, such as checksums, after the response body. Clients must sendTE: trailersto 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 Hintsover HTTP/2 (#3137). Applications can use the ASGIhttp.response.early_hintextension to send resource hints before the final response. Each supplied link becomes a separateLinkheader.Full changelog: 0.53.0...0.54.0
Version 0.53.0
🌐 Opt-in HTTP/2 support
uvicorn0.53.0 adds experimental HTTP/2 throughzttp, alongside a newzuvloopintegration and connection-handling improvements.uv add uvicorn==0.53.0
- Serve HTTP/1.1 and HTTP/2 with
zttp(#2982, #3101). Installzttp, 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). Installzuvloopseparately and select it explicitly with--loop zuvloopon CPython 3.14 or newer.🛡️ More reliable connections and proxies
- Honor
Connection: closetoken lists (#3103). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.- Trust IPv6 loopback proxies by default (#3119). The default
FORWARDED_ALLOW_IPSvalue 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
Changelog
Sourced from uvicorn's changelog.
0.54.0 (September 24, 2026)
HTTP/2 support remains experimental. Install
zttp>=0.0.34and enable it with--http zttp --http2.Added
- Add HTTP/2 response trailers through the ASGI
http.response.trailersextension. Clients must sendTE: trailersto receive them (#3146)- Add HTTP/2
103 Early Hintsthrough the ASGIhttp.response.early_hintextension (#3137)0.53.0 (September 14, 2026)
This release adds experimental HTTP/2 support through
zttp. Enable it with--http zttp --http2. Upgrade-based h2c and WebSockets over HTTP/2 are not supported.Added
Fixed
Commits
3eb9a9aVersion 0.54.0 (#3161)cd7ef6dRemove races from supervisor tests (#3134)a56c7ccSupport HTTP/2 response trailers (#3146)9bd4404chore(deps): bump anyio from 4.13.0 to 4.14.2 (#3145)21f39efAdd HTTP/2 Early Hints support (#3137)421708fVersion 0.53.0 (#3136)f1a1bffUnset the keep-alive timer when upgrading to WebSocket (#3107)63971edDocument HTTP/2 support (#3130)gitpython3.2.x drops Python 3.7, deprecates theGitDBbackend, and bundles security fixes.starlette1.8.0 requires Python 3.11+ and adds HTTP 103 Early Hints support.starlette-context0.5.x drops Python 3.9 support.pyjwt2.15.x applies security fixes and changesJWKSetCacheto store parsedPyJWKSetobjects instead of raw JWKS payloads.
Description has been truncated
Summary by cubic
Bumps 21 Python dependencies in the python-minor-and-patch group across runtime, similar-issue, and dev dependencies, updating both exact pins and locked transitive versions in pyproject.toml and uv.lock.
Review notes