mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	fixup! Add support for Fast Stream Depends
This commit is contained in:
		
							parent
							
								
									575d0e4609
								
							
						
					
					
						commit
						1cb1d66d7c
					
				|  | @ -47,11 +47,19 @@ else: | |||
|         def get_origin(tp): | ||||
|             return None | ||||
| 
 | ||||
| MARKER_EXTRACTORS = [] | ||||
| 
 | ||||
| try: | ||||
|     import fastapi.params | ||||
|     from fastapi.params import Depends as FastApiDepends | ||||
| except ImportError: | ||||
|     fastapi = None | ||||
|     pass | ||||
| else: | ||||
|     def extract_marker_from_fastapi(param: Any) -> Any: | ||||
|         if isinstance(param, FastApiDepends): | ||||
|             return param.dependency | ||||
|         return None | ||||
| 
 | ||||
|     MARKER_EXTRACTORS.append(extract_marker_from_fastapi) | ||||
| 
 | ||||
| 
 | ||||
| try: | ||||
|  | @ -67,10 +75,16 @@ except ImportError: | |||
| 
 | ||||
| 
 | ||||
| try: | ||||
|     import fast_depends.dependencies | ||||
|     from fast_depends.dependencies import Depends as FastDepends | ||||
| except ImportError: | ||||
|     fast_depends = None | ||||
|     pass | ||||
| else: | ||||
|     def extract_marker_from_fast_depends(param: Any) -> Any: | ||||
|         if isinstance(param, FastDepends): | ||||
|             return param.dependency | ||||
|         return None | ||||
| 
 | ||||
|     MARKER_EXTRACTORS.append(extract_marker_from_fast_depends) | ||||
| 
 | ||||
| from . import providers | ||||
| 
 | ||||
|  | @ -102,23 +116,6 @@ if TYPE_CHECKING: | |||
| else: | ||||
|     Container = Any | ||||
| 
 | ||||
| def _is_fastapi_depends(param: Any) -> bool: | ||||
|     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 | ||||
| 
 | ||||
| 
 | ||||
| _DEPENDS_CHECKERS = ( | ||||
|     _is_fastapi_depends, | ||||
|     _is_fast_stream_depends, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| class PatchedRegistry: | ||||
| 
 | ||||
|  | @ -606,8 +603,6 @@ def _unpatch_attribute(patched: PatchedAttribute) -> None: | |||
| 
 | ||||
| 
 | ||||
| def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]: | ||||
|     depends_available = False | ||||
| 
 | ||||
|     if get_origin(parameter.annotation) is Annotated: | ||||
|         args = get_args(parameter.annotation) | ||||
|         if len(args) > 1: | ||||
|  | @ -617,14 +612,10 @@ def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]: | |||
|     else: | ||||
|         marker = parameter.default | ||||
| 
 | ||||
|     if any(depends_checker(marker) for depends_checker in _DEPENDS_CHECKERS): | ||||
|         depends_available = True | ||||
| 
 | ||||
|     if not isinstance(marker, _Marker) and not depends_available: | ||||
|         return None | ||||
| 
 | ||||
|     if depends_available: | ||||
|         marker = marker.dependency | ||||
|     for marker_extractor in MARKER_EXTRACTORS: | ||||
|         if _marker := marker_extractor(marker): | ||||
|             marker = _marker | ||||
|             break | ||||
| 
 | ||||
|     if not isinstance(marker, _Marker): | ||||
|         return None | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user