mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-27 09:00:38 +03:00
Refactor Resource provider to use async mode api
This commit is contained in:
parent
2c911ff1f2
commit
141843e62f
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -202,7 +202,6 @@ cdef class Resource(Provider):
|
||||||
cdef bint __initialized
|
cdef bint __initialized
|
||||||
cdef object __shutdowner
|
cdef object __shutdowner
|
||||||
cdef object __resource
|
cdef object __resource
|
||||||
cdef bint __async
|
|
||||||
|
|
||||||
cdef tuple __args
|
cdef tuple __args
|
||||||
cdef int __args_len
|
cdef int __args_len
|
||||||
|
|
|
@ -2706,7 +2706,6 @@ cdef class Resource(Provider):
|
||||||
self.__initialized = False
|
self.__initialized = False
|
||||||
self.__resource = None
|
self.__resource = None
|
||||||
self.__shutdowner = None
|
self.__shutdowner = None
|
||||||
self.__async = False
|
|
||||||
|
|
||||||
self.__args = tuple()
|
self.__args = tuple()
|
||||||
self.__args_len = 0
|
self.__args_len = 0
|
||||||
|
@ -2838,7 +2837,7 @@ cdef class Resource(Provider):
|
||||||
def shutdown(self):
|
def shutdown(self):
|
||||||
"""Shutdown resource."""
|
"""Shutdown resource."""
|
||||||
if not self.__initialized:
|
if not self.__initialized:
|
||||||
if self.__async:
|
if self.is_async_mode_enabled():
|
||||||
result = asyncio.Future()
|
result = asyncio.Future()
|
||||||
result.set_result(None)
|
result.set_result(None)
|
||||||
return result
|
return result
|
||||||
|
@ -2857,20 +2856,13 @@ cdef class Resource(Provider):
|
||||||
self.__initialized = False
|
self.__initialized = False
|
||||||
self.__shutdowner = None
|
self.__shutdowner = None
|
||||||
|
|
||||||
if self.__async:
|
if self.is_async_mode_enabled():
|
||||||
result = asyncio.Future()
|
result = asyncio.Future()
|
||||||
result.set_result(None)
|
result.set_result(None)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
cpdef object _provide(self, tuple args, dict kwargs):
|
cpdef object _provide(self, tuple args, dict kwargs):
|
||||||
if self.__initialized:
|
if self.__initialized:
|
||||||
if self.__async:
|
|
||||||
if __isawaitable(self.__resource):
|
|
||||||
return self.__resource
|
|
||||||
result = asyncio.Future()
|
|
||||||
result.set_result(self.__resource)
|
|
||||||
return result
|
|
||||||
|
|
||||||
return self.__resource
|
return self.__resource
|
||||||
|
|
||||||
if self._is_resource_subclass(self.__initializer):
|
if self._is_resource_subclass(self.__initializer):
|
||||||
|
@ -2897,7 +2889,6 @@ cdef class Resource(Provider):
|
||||||
self.__kwargs_len,
|
self.__kwargs_len,
|
||||||
)
|
)
|
||||||
self.__initialized = True
|
self.__initialized = True
|
||||||
self.__async = True
|
|
||||||
return self._create_init_future(async_init, initializer.shutdown)
|
return self._create_init_future(async_init, initializer.shutdown)
|
||||||
elif inspect.isgeneratorfunction(self.__initializer):
|
elif inspect.isgeneratorfunction(self.__initializer):
|
||||||
initializer = __call(
|
initializer = __call(
|
||||||
|
@ -2922,7 +2913,6 @@ cdef class Resource(Provider):
|
||||||
self.__kwargs_len,
|
self.__kwargs_len,
|
||||||
)
|
)
|
||||||
self.__initialized = True
|
self.__initialized = True
|
||||||
self.__async = True
|
|
||||||
return self._create_init_future(initializer)
|
return self._create_init_future(initializer)
|
||||||
elif isasyncgenfunction(self.__initializer):
|
elif isasyncgenfunction(self.__initializer):
|
||||||
initializer = __call(
|
initializer = __call(
|
||||||
|
@ -2935,7 +2925,6 @@ cdef class Resource(Provider):
|
||||||
self.__kwargs_len,
|
self.__kwargs_len,
|
||||||
)
|
)
|
||||||
self.__initialized = True
|
self.__initialized = True
|
||||||
self.__async = True
|
|
||||||
return self._create_init_future(initializer.__anext__(), initializer.asend)
|
return self._create_init_future(initializer.__anext__(), initializer.asend)
|
||||||
elif callable(self.__initializer):
|
elif callable(self.__initializer):
|
||||||
self.__resource = __call(
|
self.__resource = __call(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user