From fd903dbff852de004c5afab98c35b0efeb1646fd Mon Sep 17 00:00:00 2001 From: fhdufhdu Date: Fri, 22 Mar 2024 21:50:35 +0900 Subject: [PATCH 1/2] added context manager condition to attr function --- src/inject/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/inject/__init__.py b/src/inject/__init__.py index 4c48e4c..cfe256b 100644 --- a/src/inject/__init__.py +++ b/src/inject/__init__.py @@ -73,6 +73,7 @@ def my_config(binder): inject.configure(my_config) """ +import asyncio import contextlib from inject._version import __version__ @@ -281,7 +282,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]): From 189c20d3efb921acd635b158bf7b0191e756562a Mon Sep 17 00:00:00 2001 From: fhdufhdu Date: Fri, 22 Mar 2024 22:02:06 +0900 Subject: [PATCH 2/2] remove import asyncio --- src/inject/__init__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/inject/__init__.py b/src/inject/__init__.py index cfe256b..da2eaa2 100644 --- a/src/inject/__init__.py +++ b/src/inject/__init__.py @@ -73,7 +73,6 @@ def my_config(binder): inject.configure(my_config) """ -import asyncio import contextlib from inject._version import __version__