From 2de38bae1f84a2f0368bb0df4b074d61299c1e3e Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Thu, 20 Aug 2020 20:56:48 -0400 Subject: [PATCH] Add complex provided instance example --- examples/providers/provided_instance.py | 1 - .../providers/provided_instance_complex.py | 41 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 examples/providers/provided_instance_complex.py diff --git a/examples/providers/provided_instance.py b/examples/providers/provided_instance.py index e2ab2874..c019c5b1 100644 --- a/examples/providers/provided_instance.py +++ b/examples/providers/provided_instance.py @@ -34,5 +34,4 @@ client_factory = providers.Factory( if __name__ == '__main__': client = client_factory() - assert client.value1 == client.value2 == client.value3 == 'foo' diff --git a/examples/providers/provided_instance_complex.py b/examples/providers/provided_instance_complex.py new file mode 100644 index 00000000..0e5ea107 --- /dev/null +++ b/examples/providers/provided_instance_complex.py @@ -0,0 +1,41 @@ +"""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, + ]