"""`Dict` provider example.""" import dataclasses from typing import Dict from dependency_injector import containers, providers @dataclasses.dataclass class Module: name: str @dataclasses.dataclass class Dispatcher: modules: Dict[str, Module] class Container(containers.DeclarativeContainer): dispatcher_factory = providers.Factory( Dispatcher, modules=providers.Dict( module1=providers.Factory(Module, name='m1'), module2=providers.Factory(Module, name='m2'), ), ) if __name__ == '__main__': container = Container() dispatcher = container.dispatcher_factory() assert isinstance(dispatcher.modules, dict) assert dispatcher.modules['module1'].name == 'm1' assert dispatcher.modules['module2'].name == 'm2' # Call "dispatcher = container.dispatcher_factory()" is equivalent to: # dispatcher = Dispatcher( # modules={ # 'module1': Module(name='m1'), # 'module2': Module(name='m2'), # }, # )