From 63367915ede5582347214f4f6e6f3f7c423f46c9 Mon Sep 17 00:00:00 2001 From: Peter Volf Date: Wed, 23 Jul 2025 09:51:09 +0200 Subject: [PATCH] fix: store special dependand names in sets instead of lists --- fastapi/dependencies/models.py | 14 +++++++------- fastapi/dependencies/utils.py | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fastapi/dependencies/models.py b/fastapi/dependencies/models.py index 62fd4cc89..ae1a370ba 100644 --- a/fastapi/dependencies/models.py +++ b/fastapi/dependencies/models.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, field -from typing import Any, Callable, List, Optional, Sequence, Tuple +from typing import Any, Callable, List, Optional, Sequence, Set, Tuple from fastapi._compat import ModelField from fastapi.security.base import SecurityBase @@ -22,12 +22,12 @@ class Dependant: security_requirements: List[SecurityRequirement] = field(default_factory=list) name: Optional[str] = None call: Optional[Callable[..., Any]] = None - request_param_names: List[str] = field(default_factory=list) - websocket_param_names: List[str] = field(default_factory=list) - http_connection_param_names: List[str] = field(default_factory=list) - response_param_names: List[str] = field(default_factory=list) - background_tasks_param_names: List[str] = field(default_factory=list) - security_scopes_param_names: List[str] = field(default_factory=list) + request_param_names: Set[str] = field(default_factory=set) + websocket_param_names: Set[str] = field(default_factory=set) + http_connection_param_names: Set[str] = field(default_factory=set) + response_param_names: Set[str] = field(default_factory=set) + background_tasks_param_names: Set[str] = field(default_factory=set) + security_scopes_param_names: Set[str] = field(default_factory=set) security_scopes: Optional[List[str]] = None use_cache: bool = True path: Optional[str] = None diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index 3b0650251..ee3e1f3e5 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -318,22 +318,22 @@ def add_non_field_param_to_dependency( *, param_name: str, type_annotation: Any, dependant: Dependant ) -> Optional[bool]: if lenient_issubclass(type_annotation, Request): - dependant.request_param_names.append(param_name) + dependant.request_param_names.add(param_name) return True elif lenient_issubclass(type_annotation, WebSocket): - dependant.websocket_param_names.append(param_name) + dependant.websocket_param_names.add(param_name) return True elif lenient_issubclass(type_annotation, HTTPConnection): - dependant.http_connection_param_names.append(param_name) + dependant.http_connection_param_names.add(param_name) return True elif lenient_issubclass(type_annotation, Response): - dependant.response_param_names.append(param_name) + dependant.response_param_names.add(param_name) return True elif lenient_issubclass(type_annotation, StarletteBackgroundTasks): - dependant.background_tasks_param_names.append(param_name) + dependant.background_tasks_param_names.add(param_name) return True elif lenient_issubclass(type_annotation, SecurityScopes): - dependant.security_scopes_param_names.append(param_name) + dependant.security_scopes_param_names.add(param_name) return True return None