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): |         def get_origin(tp): | ||||||
|             return None |             return None | ||||||
| 
 | 
 | ||||||
|  | MARKER_EXTRACTORS = [] | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     import fastapi.params |     from fastapi.params import Depends as FastApiDepends | ||||||
| except ImportError: | 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: | try: | ||||||
|  | @ -67,10 +75,16 @@ except ImportError: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| try: | try: | ||||||
|     import fast_depends.dependencies |     from fast_depends.dependencies import Depends as FastDepends | ||||||
| except ImportError: | 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 | from . import providers | ||||||
| 
 | 
 | ||||||
|  | @ -102,23 +116,6 @@ if TYPE_CHECKING: | ||||||
| else: | else: | ||||||
|     Container = Any |     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: | class PatchedRegistry: | ||||||
| 
 | 
 | ||||||
|  | @ -606,8 +603,6 @@ 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: | ||||||
|  | @ -617,18 +612,14 @@ def _extract_marker(parameter: inspect.Parameter) -> Optional["_Marker"]: | ||||||
|     else: |     else: | ||||||
|         marker = parameter.default |         marker = parameter.default | ||||||
| 
 | 
 | ||||||
|     if any(depends_checker(marker) for depends_checker in _DEPENDS_CHECKERS): |     for marker_extractor in MARKER_EXTRACTORS: | ||||||
|         depends_available = True |         if _marker := marker_extractor(marker): | ||||||
|  |             marker = _marker | ||||||
|  |             break | ||||||
| 
 | 
 | ||||||
|     if not isinstance(marker, _Marker) and not depends_available: |     if not isinstance(marker, _Marker): | ||||||
|         return None |         return None | ||||||
| 
 | 
 | ||||||
|     if depends_available: |  | ||||||
|         marker = marker.dependency |  | ||||||
| 
 |  | ||||||
|         if not isinstance(marker, _Marker): |  | ||||||
|             return None |  | ||||||
| 
 |  | ||||||
|     return marker |     return marker | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user