"""Complex example of the injecting of provided instance attributes and items.""" from dependency_injector import containers, providers class Service: def __init__(self, value): self.value = value def get_value(self): return self.value class Container(containers.DeclarativeContainer): service = providers.Singleton(Service, value=42) dependency = providers.Object( { "foo": { "bar": 10, "baz": lambda arg: {"arg": arg} }, }, ) demo_list = providers.List( dependency.provided["foo"]["bar"], dependency.provided["foo"]["baz"].call(22)["arg"], dependency.provided["foo"]["baz"].call(service)["arg"], dependency.provided["foo"]["baz"].call(service)["arg"].value, dependency.provided["foo"]["baz"].call(service)["arg"].get_value.call(), ) if __name__ == "__main__": container = Container() assert container.demo_list() == [ 10, 22, container.service(), 42, 42, ]