mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +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