@@ -3801,24 +3801,27 @@ cdef class Resource(Provider):
38013801
38023802 def shutdown (self ):
38033803 """ Shutdown resource."""
3804- if not self ._initialized:
3804+ if not self ._initialized :
3805+ self ._reset_all_contex_vars()
38053806 if self ._async_mode == ASYNC_MODE_ENABLED:
38063807 return NULL_AWAITABLE
38073808 return
38083809
38093810 if self ._shutdowner:
38103811 future = self ._shutdowner(None , None , None )
3811-
38123812 if __is_future_or_coroutine(future):
3813- return ensure_future(self ._shutdown_async(future))
3814-
3815- self ._resource = None
3816- self ._initialized = False
3817- self ._shutdowner = None
3813+ self ._reset_all_contex_vars()
3814+ return ensure_future(future)
38183815
3816+ self ._reset_all_contex_vars()
38193817 if self ._async_mode == ASYNC_MODE_ENABLED:
38203818 return NULL_AWAITABLE
38213819
3820+ def _reset_all_contex_vars (self ):
3821+ self ._initialized = False
3822+ self ._resource = None
3823+ self ._shutdowner = None
3824+
38223825 @property
38233826 def related (self ):
38243827 """ Return related providers generator."""
@@ -3827,14 +3830,6 @@ cdef class Resource(Provider):
38273830 yield from filter (is_provider, self .kwargs.values())
38283831 yield from super ().related
38293832
3830- async def _shutdown_async(self , future) - > None :
3831- try :
3832- await future
3833- finally :
3834- self ._resource = None
3835- self ._initialized = False
3836- self ._shutdowner = None
3837-
38383833 async def _handle_async_cm(self , obj) - > None :
38393834 try :
38403835 resource = await obj.__aenter__()
@@ -3858,7 +3853,6 @@ cdef class Resource(Provider):
38583853
38593854 return resource, shutdowner
38603855
3861-
38623856 cpdef object _provide(self , tuple args, dict kwargs):
38633857 if self ._initialized:
38643858 return self ._resource
@@ -3911,8 +3905,6 @@ cdef class Resource(Provider):
39113905
39123906
39133907cdef class ContextLocalResource(Resource):
3914- _none = object ()
3915-
39163908 def __init__ (self , provides = None , *args , **kwargs ):
39173909 self ._initialized_context_var = ContextVar(" _initialized_context_var" , default = False )
39183910 self ._resource_context_var = ContextVar(" _resource_context_var" , default = None )
@@ -3950,31 +3942,6 @@ cdef class ContextLocalResource(Resource):
39503942 self ._shutdowner_context_var.set(value)
39513943
39523944
3953- def shutdown (self ):
3954- """ Shutdown resource."""
3955- if not self ._initialized :
3956- self ._reset_all_contex_vars()
3957- if self ._async_mode == ASYNC_MODE_ENABLED:
3958- return NULL_AWAITABLE
3959- return
3960-
3961- if self ._shutdowner != None :
3962- future = self ._shutdowner(None , None , None )
3963- if __is_future_or_coroutine(future):
3964- self ._reset_all_contex_vars()
3965- return ensure_future(future)
3966-
3967-
3968- self ._reset_all_contex_vars()
3969- if self ._async_mode == ASYNC_MODE_ENABLED:
3970- return NULL_AWAITABLE
3971-
3972- def _reset_all_contex_vars (self ):
3973- self ._initialized= False
3974- self ._resource = None
3975- self ._shutdowner = None
3976-
3977-
39783945cdef class Container(Provider):
39793946 """ Container provider provides an instance of declarative container.
39803947
0 commit comments