mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	Add docs and example
This commit is contained in:
		
							parent
							
								
									d48e2ea972
								
							
						
					
					
						commit
						ef91b6fe2d
					
				|  | @ -54,6 +54,14 @@ provider. | |||
|    Resetting of the memorized object clears the reference to it. Further object's lifecycle is | ||||
|    managed by the garbage collector. | ||||
| 
 | ||||
| Method ``.reset()`` resets only current provider. To reset all dependent singleton providers | ||||
| call ``.full_reset()`` method. | ||||
| 
 | ||||
| .. literalinclude:: ../../examples/providers/singleton_full_resetting.py | ||||
|    :language: python | ||||
|    :lines: 3- | ||||
|    :emphasize-lines: 25 | ||||
| 
 | ||||
| Using singleton with multiple threads | ||||
| ------------------------------------- | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										31
									
								
								examples/providers/singleton_full_resetting.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								examples/providers/singleton_full_resetting.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| """`Singleton` provider full resetting example.""" | ||||
| 
 | ||||
| from dependency_injector import containers, providers | ||||
| 
 | ||||
| 
 | ||||
| class Database: | ||||
|     ... | ||||
| 
 | ||||
| 
 | ||||
| class UserService: | ||||
|     def __init__(self, db: Database): | ||||
|         self.db = db | ||||
| 
 | ||||
| 
 | ||||
| class Container(containers.DeclarativeContainer): | ||||
| 
 | ||||
|     database = providers.Singleton(Database) | ||||
| 
 | ||||
|     user_service = providers.Singleton(UserService, db=database) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     container = Container() | ||||
| 
 | ||||
|     user_service1 = container.user_service() | ||||
| 
 | ||||
|     container.user_service.full_reset() | ||||
| 
 | ||||
|     user_service2 = container.user_service() | ||||
|     assert user_service2 is not user_service1 | ||||
|     assert user_service2.db is not user_service1.db | ||||
|  | @ -9,15 +9,15 @@ class UserService: | |||
| 
 | ||||
| class Container(containers.DeclarativeContainer): | ||||
| 
 | ||||
|     user_service_provider = providers.Singleton(UserService) | ||||
|     user_service = providers.Singleton(UserService) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     container = Container() | ||||
| 
 | ||||
|     user_service1 = container.user_service_provider() | ||||
|     user_service1 = container.user_service() | ||||
| 
 | ||||
|     container.user_service_provider.reset() | ||||
|     container.user_service.reset() | ||||
| 
 | ||||
|     user_service2 = container.user_service_provider() | ||||
|     user_service2 = container.user_service() | ||||
|     assert user_service2 is not user_service1 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user