diff --git a/src/inject/__init__.py b/src/inject/__init__.py index 4c48e4c..da2eaa2 100644 --- a/src/inject/__init__.py +++ b/src/inject/__init__.py @@ -281,7 +281,14 @@ def __init__(self, cls: Binding) -> None: self._cls = cls def __get__(self, obj: Any, owner: Any) -> Injectable: - return instance(self._cls) + inst = instance(self._cls) + if isinstance(inst, contextlib._AsyncGeneratorContextManager): + raise InjectorException( + 'Fail to load _AsyncGeneratorContextManager, Use autoparams, param or params instead of attr funcion') + elif isinstance(inst, contextlib._GeneratorContextManager): + with contextlib.ExitStack() as sync_stack: + inst = sync_stack.enter_context(inst) + return inst class _AttributeInjectionDataclass(Generic[T]):