"""Container traversal example.""" from dependency_injector import containers, providers def init_database(): return ... def init_cache(): return ... class Service: def __init__(self, database, cache): self.database = database self.cache = cache class Container(containers.DeclarativeContainer): config = providers.Configuration() service = providers.Factory( Service, database=providers.Resource( init_database, url=config.database_url, ), cache=providers.Resource( init_cache, hosts=config.cache_hosts, ), ) if __name__ == '__main__': container = Container() for provider in container.traverse(): print(provider) # <dependency_injector.providers.Configuration('config') at 0x10d37d200> # <dependency_injector.providers.Factory(<class '__main__.Service'>) at 0x10d3a2820> # <dependency_injector.providers.Resource(<function init_database at 0x10bd2cb80>) at 0x10d346b40> # <dependency_injector.providers.ConfigurationOption('config.cache_hosts') at 0x10d37d350> # <dependency_injector.providers.Resource(<function init_cache at 0x10be373a0>) at 0x10d346bc0> # <dependency_injector.providers.ConfigurationOption('config.database_url') at 0x10d37d2e0>