@@ -37,6 +37,21 @@ class GenericMeta(type): ...
3737else :
3838    GenericAlias  =  None 
3939
40+ if  sys .version_info  >=  (3 , 9 ):
41+     from  typing  import  Annotated , get_args , get_origin 
42+ else :
43+     try :
44+         from  typing_extensions  import  Annotated , get_args , get_origin 
45+     except  ImportError :
46+         Annotated  =  object ()
47+ 
48+         # For preventing NameError. Never executes 
49+         def  get_args (hint ):
50+             return  ()
51+ 
52+         def  get_origin (tp ):
53+             return  None 
54+ 
4055
4156try :
4257    import  fastapi .params 
@@ -572,6 +587,24 @@ def _unpatch_attribute(patched: PatchedAttribute) -> None:
572587    setattr (patched .member , patched .name , patched .marker )
573588
574589
590+ def  _extract_marker (parameter : inspect .Parameter ) ->  Optional ["_Marker" ]:
591+     if  get_origin (parameter .annotation ) is  Annotated :
592+         marker  =  get_args (parameter .annotation )[1 ]
593+     else :
594+         marker  =  parameter .default 
595+ 
596+     if  not  isinstance (marker , _Marker ) and  not  _is_fastapi_depends (marker ):
597+         return  None 
598+ 
599+     if  _is_fastapi_depends (marker ):
600+         marker  =  marker .dependency 
601+ 
602+         if  not  isinstance (marker , _Marker ):
603+             return  None 
604+ 
605+     return  marker 
606+ 
607+ 
575608def  _fetch_reference_injections (  # noqa: C901 
576609    fn : Callable [..., Any ],
577610) ->  Tuple [Dict [str , Any ], Dict [str , Any ]]:
@@ -596,18 +629,10 @@ def _fetch_reference_injections(  # noqa: C901
596629    injections  =  {}
597630    closing  =  {}
598631    for  parameter_name , parameter  in  signature .parameters .items ():
599-         if  not  isinstance (parameter .default , _Marker ) and  not  _is_fastapi_depends (
600-             parameter .default 
601-         ):
602-             continue 
632+         marker  =  _extract_marker (parameter )
603633
604-         marker  =  parameter .default 
605- 
606-         if  _is_fastapi_depends (marker ):
607-             marker  =  marker .dependency 
608- 
609-             if  not  isinstance (marker , _Marker ):
610-                 continue 
634+         if  marker  is  None :
635+             continue 
611636
612637        if  isinstance (marker , Closing ):
613638            marker  =  marker .provider 
0 commit comments