mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	Add support for Fast Stream Depends
This commit is contained in:
		
							parent
							
								
									8460465b5e
								
							
						
					
					
						commit
						2fe4c393a8
					
				|  | @ -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) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user