python-dependency-injector/examples/containers/traverse.py
2021-09-30 15:16:17 -04:00

49 lines
1.3 KiB
Python

"""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>