mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	Update examples for speech
This commit is contained in:
		
							parent
							
								
									eb6cd303de
								
							
						
					
					
						commit
						da895ea97f
					
				|  | @ -6,16 +6,21 @@ import dependency_injector.containers as containers | |||
| import dependency_injector.providers as providers | ||||
| 
 | ||||
| 
 | ||||
| Engine = collections.namedtuple('Engine', []) | ||||
| Car = collections.namedtuple('Car', ['serial_number', 'engine']) | ||||
| 
 | ||||
| 
 | ||||
| class Container(containers.DeclarativeContainer): | ||||
|     """IoC container.""" | ||||
| 
 | ||||
|     engine_factory = providers.Factory(collections.namedtuple('Engine', [])) | ||||
|     car_factory = providers.Factory(collections.namedtuple('Car', ['engine']), | ||||
|                                     engine=engine_factory) | ||||
|     engine_factory = providers.Factory(Engine) | ||||
| 
 | ||||
|     car_factory = providers.Factory(Car, engine=engine_factory) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     car1 = Container.car_factory() | ||||
|     car2 = Container.car_factory() | ||||
|     car1 = Container.car_factory(serial_number=1) | ||||
|     car2 = Container.car_factory(serial_number=2) | ||||
| 
 | ||||
|     assert car1 is not car2 | ||||
|     assert car1.serial_number == 1 and car2.serial_number == 2 | ||||
|     assert car1.engine is not car2.engine | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ from dependency_injector import providers | |||
| 
 | ||||
| object_factory = providers.Factory(object) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     object1 = object_factory() | ||||
|     object2 = object_factory() | ||||
|  |  | |||
|  | @ -5,13 +5,16 @@ import collections | |||
| import dependency_injector.providers as providers | ||||
| 
 | ||||
| 
 | ||||
| engine_factory = providers.Factory(collections.namedtuple('Engine', [])) | ||||
| car_factory = providers.Factory(collections.namedtuple('Car', ['engine']), | ||||
|                                 engine=engine_factory) | ||||
| Engine = collections.namedtuple('Engine', []) | ||||
| Car = collections.namedtuple('Car', ['serial_number', 'engine']) | ||||
| 
 | ||||
| engine_factory = providers.Factory(Engine) | ||||
| car_factory = providers.Factory(Car, engine=engine_factory) | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     car1 = car_factory() | ||||
|     car2 = car_factory() | ||||
|     car1 = car_factory(serial_number=1) | ||||
|     car2 = car_factory(serial_number=2) | ||||
| 
 | ||||
|     assert car1 is not car2 | ||||
|     assert car1.serial_number == 1 and car2.serial_number == 2 | ||||
|     assert car1.engine is not car2.engine | ||||
|  |  | |||
|  | @ -1,15 +1,24 @@ | |||
| """Overriding of factory provider example.""" | ||||
| 
 | ||||
| from dependency_injector import providers | ||||
| import collections | ||||
| 
 | ||||
| import dependency_injector.providers as providers | ||||
| 
 | ||||
| 
 | ||||
| object_factory = providers.Factory(object) | ||||
| Engine = collections.namedtuple('Engine', []) | ||||
| Car = collections.namedtuple('Car', ['serial_number', 'engine']) | ||||
| 
 | ||||
| engine_factory = providers.Factory(Engine) | ||||
| car_factory = providers.Factory(Car, engine=engine_factory) | ||||
| 
 | ||||
| EngineX = collections.namedtuple('EngineX', []) | ||||
| engine_factory.override(providers.Factory(EngineX)) | ||||
| 
 | ||||
| object_factory.override(providers.Factory(list)) | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     object1 = object_factory() | ||||
|     object2 = object_factory() | ||||
|     car1 = car_factory(serial_number=1) | ||||
|     car2 = car_factory(serial_number=2, engine=Engine()) | ||||
| 
 | ||||
|     assert object1 is not object2 | ||||
|     assert isinstance(object1, list) and isinstance(object2, list) | ||||
|     assert car1.serial_number == 1 and car2.serial_number == 2 | ||||
|     assert car1.engine.__class__ is EngineX | ||||
|     assert car2.engine.__class__ is Engine | ||||
|  |  | |||
|  | @ -5,12 +5,17 @@ from container import Container | |||
| from dependency_injector.injections import inject | ||||
| 
 | ||||
| 
 | ||||
| @inject(car1=Container.car_factory) | ||||
| @inject(car2=Container.car_factory) | ||||
| def main(car1, car2): | ||||
| @inject(car_factory=Container.car_factory.delegate()) | ||||
| @inject(extra_engine=Container.engine_factory) | ||||
| def main(car_factory, extra_engine): | ||||
|     """Main function.""" | ||||
|     assert car1 is not car2 | ||||
|     car1 = car_factory(serial_number=1) | ||||
|     car2 = car_factory(serial_number=2, engine=extra_engine) | ||||
| 
 | ||||
|     assert car1.serial_number == 1 and car2.serial_number == 2 | ||||
|     assert car1.engine is not car2.engine | ||||
|     assert car2.engine is extra_engine | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user