From c9b8f6ff2d76e9d3d54510683abdd0d7a35ad7fa Mon Sep 17 00:00:00 2001 From: ProfiAnton Date: Thu, 16 Oct 2025 01:40:58 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Support=20Annotated=20dependencies?= =?UTF-8?q?=20in=20FastAPI=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi/applications.py | 7 ++++--- fastapi/routing.py | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/fastapi/applications.py b/fastapi/applications.py index 6db4b4e83..7379d92eb 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -333,7 +333,7 @@ class FastAPI(Starlette): ), ] = None, dependencies: Annotated[ - Optional[Sequence[Depends]], + Optional[Sequence[Depends | Any]], Doc( """ A list of global dependencies, they will be applied to each @@ -345,11 +345,12 @@ class FastAPI(Starlette): **Example** ```python + from typing import Annotated from fastapi import Depends, FastAPI from .dependencies import func_dep_1, func_dep_2 - - app = FastAPI(dependencies=[Depends(func_dep_1), Depends(func_dep_2)]) + annotated_dep=Annotated[str,lambda:"annotated"] + app = FastAPI(dependencies=[Depends(func_dep_1), Depends(func_dep_2),annotated_dep]) ``` """ ), diff --git a/fastapi/routing.py b/fastapi/routing.py index 907511081..47b9240f6 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -671,7 +671,7 @@ class APIRoute(routing.Route): return match, child_scope -def get_api_router_dep(dep: params.Depends | Any) -> params.Depends: +def get_depends_from_annotated(dep: params.Depends | Any) -> params.Depends: if isinstance(dep, params.Depends): return dep d = analyze_param( @@ -948,7 +948,9 @@ class APIRouter(routing.Router): ) self.prefix = prefix self.tags: List[Union[str, Enum]] = tags or [] - self.dependencies = [get_api_router_dep(dep) for dep in dependencies or []] + self.dependencies = [ + get_depends_from_annotated(dep) for dep in dependencies or [] + ] self.deprecated = deprecated self.include_in_schema = include_in_schema self.responses = responses or {}