Repository navigation
Update Python dependencies (non-major) - #12929
Conversation
a837f0d to
e7b3bdc
Compare
e7b3bdc to
d4aa84c
Compare
4486df4 to
dac9204
Compare
c908250 to
6ec7f18
Compare
0fdae43 to
f06c4d9
Compare
1d3085b to
e1b559c
Compare
7c21cdd to
76a115d
Compare
2922224 to
4bac1ee
Compare
b366d8b to
936fc1d
Compare
fd81907 to
2fa210c
Compare
9a22460 to
b4f98b4
Compare
f1de02b to
23cde32
Compare
Revert the other non-major Python bumps from this Renovate PR so it only updates fastapi, sentry-sdk and uvicorn (incl. docker/mockservices). FastAPI 0.137 turned `app.routes` into a tree of `_IncludedRouter` objects, which crashes prometheus-fastapi-instrumentator 7.1.0 on every router-included endpoint (`'_IncludedRouter' object has no attribute 'path'` -> HTTP 500). Bump it to 8.1.0, which handles the new routing; 8.x requires Starlette >=1.0, so Starlette goes 0.52.1 -> 1.8.0. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
I narrowed this PR down to FastAPI, Sentry and uvicorn (c11476d) so it's small enough to test properly and roll back easily. The other bumps (bs4, luqum, pymarc, internetarchive, pydantic-settings, mypy/ruff/pytest, etc.) are reverted and can come in separate PRs.
Why the instrumentator bump is requiredFastAPI 0.137 changed Testing
Behavior changes to know about
Heads-up: Renovate will probably stop rebasing this branch now that it has a non-Renovate commit. |
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Also drop the blank lines that were added to the Dockerfiles to force a rebuild on testing. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Update (ec16229): bumped to the latest releases, fastapi 0.143.0 and sentry-sdk 2.72.0. uvicorn 0.54.0, instrumentator 8.1.0 and Starlette 1.8.0 were already the latest.
I rebuilt the image and reran the full comparison:
I also removed the temporary Dockerfile whitespace. |
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
==3.11.2→==3.11.3==4.14.3→==4.15.0==0.136.3→==0.142.2==0.115.0→==0.142.2==6.0.12→==6.0.14==0.27.2→==0.28.1==3.5.0→==3.5.1==5.9.0→==5.11.1==0.11.0→==0.14.0==6.1.1→==6.1.3==2.1.0→==2.4.0==1.1.3→==1.4.0==3.3.5→==3.3.6==2.9.12→==2.9.13==2.13.4→==2.13.5==2.9.1→==2.15.0==5.3.1→==5.4.0==9.0.3→==9.1.1==0.16.1→==0.16.10==2.61.1→==2.71.0==0.49.0→==0.54.0==0.30.6→==0.54.0Release Notes
agronholm/apscheduler (APScheduler)
v3.11.3Compare Source
ZoneInfotime zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (#1103)fastapi/fastapi (fastapi)
v0.142.2Compare Source
Fixes
v0.142.1Compare Source
Fixes
v0.142.0Compare Source
Features
Refactors
Docs
Translations
Internal
setup-uvaction to10.0.1. PR #16249 by @YuriiMotov.commit_in_placeinput intranslate.yml. PR #16216 by @YuriiMotov.zizmor.ymlworkflow (main->master). PR #16178 by @YuriiMotov..cacheinbuild-docs.yml. PR #16156 by @YuriiMotov.v0.141.1Compare Source
Fixes
app.frontend(). PR #16105 by @tiangolo.Docs
FASTAPI_ENVin FastAPI CLI guide. PR #16104 by @tiangolo.v0.141.0Compare Source
Features
app.frontend(check_dir="auto"), to make local development more convenient withfastapi dev. PR #16102 by @tiangolo.v0.140.13Compare Source
Fixes
status_codebeing ignored for SSE and JSONL streaming endpoints. PR #15937 by @SAURABHSALVE.Docs
format_sse_eventdocstring rendering of\n\nterminator. PR #15613 by @AshNicolus.v0.140.12Compare Source
Fixes
format_sse_eventto comply with SSE spec. PR #15515 by @Zawwarsami16.v0.140.11Compare Source
Fixes
response_model_*params ignored for non-generator endpoints withIterable[..]return type. PR #15093 by @YuriiMotov.v0.140.10Compare Source
Fixes
Internal
v0.140.9Compare Source
Fixes
exclude_defaultsnot propagated to dict keys and values injsonable_encoder. PR #16043 by @MBGrao.Internal
v0.140.8Compare Source
Fixes
include_router(). PR #15077 by @alex-raw.v0.140.7Compare Source
Refactors
Internal
v0.140.6Compare Source
Refactors
v0.140.5Compare Source
Refactors
v0.140.4Compare Source
Refactors
v0.140.3Compare Source
Refactors
v0.140.2Compare Source
Refactors
Internal
v0.140.1Compare Source
Refactors
v0.140.0Compare Source
Refactors
Docs
Internal
v0.139.2Compare Source
Fixes
v0.139.1Compare Source
Fixes
/users/john.doe. PR #16011 by @tiangolo.Docs
skip_usersnot being applied. PR #15995 by @YuriiMotov.Translations
llm-prompt.mdfor Hindi. PR #15810 by @YuriiMotov.Internal
FASTAPI_LATEST_CHANGEStoken inbump-pre-commit-hooksworkflow. PR #15984 by @YuriiMotov.v0.139.0Compare Source
Features
app.frontend(), e.g. for automatic cookie authentication for the frontend. PR #15908 by @tiangolo.Translations
Internal
allow-unsafe-pr-checkout: true. PR #15876 by @YuriiMotov.v0.138.2Compare Source
Refactors
app.frontend()return 404 for methods other thanGETorHEADwith no static file matches. PR #15863 by @tiangolo.Internal
v0.138.1Compare Source
Refactors
Internal
v0.138.0Compare Source
Features
app.frontend("/", directory="dist")androuter.frontend("/", directory="dist"). PR #15800 by @tiangolo.Docs
app.frontend()instructions to Agent Library Skill. PR #15805 by @tiangolo.Translations
Internal
release-notes.mdfor typos. PR #15796 by @YuriiMotov.gpt-5.5model intranslate.py, specify-chatto avoid warnings. PR #15792 by @YuriiMotov.v0.137.2Compare Source
Features
iter_route_contexts()for advanced use cases that used to userouter.routes(e.g. Jupyverse). PR #15785 by @tiangolo.Translations
Internal
coverage.sh. PR #15772 by @tiangolo.v0.137.1Compare Source
Fixes
v0.137.0Compare Source
Breaking Changes
APIRouterandAPIRouteinstances. PR #15745 by @tiangolo.Unblocks ✨ SO MANY THINGS ✨
Before this,
router.include_router(other_router)would take each path operation fromother_routerand "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.routesis no longer a plain list ofAPIRouteobjects, it can contain these intermediate objects that can contain additional routers, forming a tree.Any logic that depended on iterating on the
router.routesdirectly 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.routesto modify them would now also see these new objects, and would not see all the routes in the app.router.routesshould be considered an internal implementation detail, only passed around to the FastAPI functions that need it.Features
subrouterinmainroutercan be done before adding routes (path operations) tosubrouter, because now the the entire object is stored instead of copying the routes.Alpha Features
This is not documented yet, so it's not officially supported yet and could change in the future.
But, as
APIRouteandAPIRouterinstances are now preserved, they could be customized.APIRouterhas two new methods,.matches()and.handle(), counterpart to the existing ones inAPIRoute. 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
APIRoutesubclasses (undocumented, but alraedy works as desccribed above)APIRoutersubclasses (undocumented, but already works as described above)Docs
Annotatedin inline example indocs/en/docs/tutorial/body-multiple-params.md. PR #15591 by @TheArchons.