Add support for Fast Stream Depends

This commit is contained in:
AndrianEquestrian 2025-05-31 19:56:14 +03:00
parent 8460465b5e
commit 2fe4c393a8

View File

@ -66,6 +66,12 @@ except ImportError:
werkzeug = None werkzeug = None
try:
import fast_depends.dependencies
except ImportError:
fast_depends = None
from . import providers from . import providers
__all__ = ( __all__ = (
@ -583,6 +589,8 @@ def _unpatch_attribute(patched: PatchedAttribute) -> None:
def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]: def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]:
depends_available = False
if get_origin(parameter.annotation) is Annotated: if get_origin(parameter.annotation) is Annotated:
args = get_args(parameter.annotation) args = get_args(parameter.annotation)
if len(args) > 1: if len(args) > 1:
@ -592,10 +600,13 @@ def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]:
else: else:
marker = parameter.default marker = parameter.default
if not isinstance(marker, _Marker) and not _is_fastapi_depends(marker): if _is_fastapi_depends(marker) or _is_fast_stream_depends(marker):
depends_available = True
if not isinstance(marker, _Marker) and not depends_available:
return None return None
if _is_fastapi_depends(marker): if depends_available:
marker = marker.dependency marker = marker.dependency
if not isinstance(marker, _Marker): if not isinstance(marker, _Marker):
@ -721,6 +732,14 @@ def _is_fastapi_depends(param: Any) -> bool:
return fastapi and isinstance(param, fastapi.params.Depends) return fastapi and isinstance(param, fastapi.params.Depends)
if fast_depends:
def _is_fast_stream_depends(param: Any) -> bool:
return isinstance(param, fast_depends.dependencies.Depends)
else:
def _is_fast_stream_depends(param: Any) -> bool:
return False
def _is_patched(fn) -> bool: def _is_patched(fn) -> bool:
return _patched_registry.has_callable(fn) return _patched_registry.has_callable(fn)