From 61fd6ae26d654dfc3c7a622b77dfef9aef85c4b3 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Sun, 8 Jan 2023 18:31:17 +0200 Subject: [PATCH 1/2] Add overloads to param functions --- fastapi/param_functions.py | 111 ++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/fastapi/param_functions.py b/fastapi/param_functions.py index 1932ef065..266307812 100644 --- a/fastapi/param_functions.py +++ b/fastapi/param_functions.py @@ -1,4 +1,15 @@ -from typing import Any, Callable, Dict, Optional, Sequence +from typing import ( + Any, + AsyncIterator, + Awaitable, + Callable, + Dict, + Iterator, + Optional, + Sequence, + TypeVar, + overload, +) from fastapi import params from pydantic.fields import Undefined @@ -275,12 +286,110 @@ def File( # noqa: N802 ) +T = TypeVar("T") + + +@overload +def Depends( + dependency: None = None, + *, + use_cache: bool = True, +) -> Any: # noqa: N802 + pass + + +@overload +def Depends( # noqa: N802 + dependency: Callable[..., Awaitable[T]], + *, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Depends( # noqa: N802 + dependency: Callable[..., Iterator[T]], + *, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Depends( # noqa: N802 + dependency: Callable[..., AsyncIterator[T]], + *, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Depends( # noqa: N802 + dependency: Callable[..., T], + *, + use_cache: bool = True, +) -> T: + pass + + def Depends( # noqa: N802 dependency: Optional[Callable[..., Any]] = None, *, use_cache: bool = True ) -> Any: return params.Depends(dependency=dependency, use_cache=use_cache) +@overload +def Security( # noqa: N802 + dependency: None = None, + *, + scopes: Optional[Sequence[str]] = None, + use_cache: bool = True, +) -> Any: + pass + + +@overload +def Security( # noqa: N802 + dependency: Callable[..., Awaitable[T]], + *, + scopes: Optional[Sequence[str]] = None, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Security( # noqa: N802 + dependency: Callable[..., Iterator[T]], + *, + scopes: Optional[Sequence[str]] = None, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Security( # noqa: N802 + dependency: Callable[..., AsyncIterator[T]], + *, + scopes: Optional[Sequence[str]] = None, + use_cache: bool = True, +) -> T: + pass + + +@overload +def Security( # noqa: N802 + dependency: Callable[..., T], + *, + scopes: Optional[Sequence[str]] = None, + use_cache: bool = True, +) -> T: + pass + + def Security( # noqa: N802 dependency: Optional[Callable[..., Any]] = None, *, From d76aa94c13439261f4e3ff6c37e7f2601ee90dfd Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Sun, 8 Jan 2023 19:32:16 +0200 Subject: [PATCH 2/2] Fix coverage issue --- fastapi/param_functions.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/fastapi/param_functions.py b/fastapi/param_functions.py index 266307812..d9ac9807e 100644 --- a/fastapi/param_functions.py +++ b/fastapi/param_functions.py @@ -290,11 +290,11 @@ T = TypeVar("T") @overload -def Depends( +def Depends( # noqa: N802 dependency: None = None, *, use_cache: bool = True, -) -> Any: # noqa: N802 +) -> Any: # pragma: nocover pass @@ -303,7 +303,7 @@ def Depends( # noqa: N802 dependency: Callable[..., Awaitable[T]], *, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -312,7 +312,7 @@ def Depends( # noqa: N802 dependency: Callable[..., Iterator[T]], *, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -321,7 +321,7 @@ def Depends( # noqa: N802 dependency: Callable[..., AsyncIterator[T]], *, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -330,7 +330,7 @@ def Depends( # noqa: N802 dependency: Callable[..., T], *, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -346,7 +346,7 @@ def Security( # noqa: N802 *, scopes: Optional[Sequence[str]] = None, use_cache: bool = True, -) -> Any: +) -> Any: # pragma: nocover pass @@ -356,7 +356,7 @@ def Security( # noqa: N802 *, scopes: Optional[Sequence[str]] = None, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -366,7 +366,7 @@ def Security( # noqa: N802 *, scopes: Optional[Sequence[str]] = None, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -376,7 +376,7 @@ def Security( # noqa: N802 *, scopes: Optional[Sequence[str]] = None, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass @@ -386,7 +386,7 @@ def Security( # noqa: N802 *, scopes: Optional[Sequence[str]] = None, use_cache: bool = True, -) -> T: +) -> T: # pragma: nocover pass