mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			735 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			735 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from dependency_injector import containers, providers
 | 
						|
from dependency_injector.wiring import Provide, Closing
 | 
						|
 | 
						|
 | 
						|
class Service:
 | 
						|
    init_counter: int = 0
 | 
						|
    shutdown_counter: int = 0
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def reset_counter(cls):
 | 
						|
        cls.init_counter = 0
 | 
						|
        cls.shutdown_counter = 0
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def init(cls):
 | 
						|
        cls.init_counter += 1
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def shutdown(cls):
 | 
						|
        cls.shutdown_counter += 1
 | 
						|
 | 
						|
 | 
						|
def init_service():
 | 
						|
    service = Service()
 | 
						|
    service.init()
 | 
						|
    yield service
 | 
						|
    service.shutdown()
 | 
						|
 | 
						|
 | 
						|
class Container(containers.DeclarativeContainer):
 | 
						|
 | 
						|
    service = providers.Resource(init_service)
 | 
						|
 | 
						|
 | 
						|
def test_function(service: Service = Closing[Provide[Container.service]]):
 | 
						|
    return service
 |