"""Complex example of the injecting of provided instance attributes and items.""" from dependency_injector import providers class Service: def __init__(self, value): self.value = value def get_value(self): return self.value 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__': assert demo_list() == [ 10, 22, service(), 42, 42, ]