From 812d6107234f14910322c2b31e26c3d3bb0f27e4 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Thu, 20 Aug 2020 17:23:22 -0400 Subject: [PATCH] Add example of the provided instance usage --- examples/providers/provided_instance.py | 38 +++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 examples/providers/provided_instance.py diff --git a/examples/providers/provided_instance.py b/examples/providers/provided_instance.py new file mode 100644 index 00000000..e2ab2874 --- /dev/null +++ b/examples/providers/provided_instance.py @@ -0,0 +1,38 @@ +"""Example of the injecting of provided instance attributes and items.""" + +from dependency_injector import providers + + +class Service: + def __init__(self): + self.value = 'foo' + self.values = [self.value] + + def get_value(self): + return self.value + + def __getitem__(self, item): + return self.values[item] + + +class Client: + def __init__(self, value1, value2, value3): + self.value1 = value1 + self.value2 = value2 + self.value3 = value3 + + +service = providers.Singleton(Service) + +client_factory = providers.Factory( + Client, + value1=service.provided.value, + value2=service.provided.values[0], + value3=service.provided.get_value.call(), +) + + +if __name__ == '__main__': + client = client_factory() + + assert client.value1 == client.value2 == client.value3 == 'foo'