From a606baa6370c7a0fd109db912874d391dc49d7d7 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Sun, 30 Aug 2020 14:32:00 -0400 Subject: [PATCH] Update factory init injections example and picture --- .../providers/factory_init_injections.png | Bin 32985 -> 0 bytes docs/providers/factory.rst | 11 +--- .../images/factory_init_injections.png | Bin 0 -> 11212 bytes examples/providers/factory_init_injections.py | 62 +++++++++--------- 4 files changed, 32 insertions(+), 41 deletions(-) delete mode 100644 docs/images/providers/factory_init_injections.png create mode 100644 docs/providers/images/factory_init_injections.png diff --git a/docs/images/providers/factory_init_injections.png b/docs/images/providers/factory_init_injections.png deleted file mode 100644 index f39b44d702ef647978f50b17ef9cf02b704e64bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32985 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 JrttXr{{t|Im6ZSh diff --git a/docs/providers/factory.rst b/docs/providers/factory.rst index d972cf83..28015e1d 100644 --- a/docs/providers/factory.rst +++ b/docs/providers/factory.rst @@ -24,18 +24,11 @@ injected following these rules: + Keyword context arguments have the priority over the ``Factory`` keyword dependencies with the same name. -For example, if injectable value of injection is a :py:class:`Factory`, it -will provide new one instance (as a result of its call) every time, when -injection needs to be done. - -Example below is a little bit more complicated. It shows how to create -:py:class:`Factory` of particular class with ``__init__()`` injections which -injectable values are also provided by another factories: - -.. image:: /images/providers/factory_init_injections.png +.. image:: images/factory_init_injections.png .. literalinclude:: ../../examples/providers/factory_init_injections.py :language: python + :lines: 3- Factory providers and building complex object graphs ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/providers/images/factory_init_injections.png b/docs/providers/images/factory_init_injections.png new file mode 100644 index 0000000000000000000000000000000000000000..389bdd28d45f7a9f5897969dff9597f67163109a GIT binary patch literal 11212 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 UzxU;%zfjWA)Ym{?y%+l50DtVdN&o-= literal 0 HcmV?d00001 diff --git a/examples/providers/factory_init_injections.py b/examples/providers/factory_init_injections.py index 2bdb0b24..ed37fd09 100644 --- a/examples/providers/factory_init_injections.py +++ b/examples/providers/factory_init_injections.py @@ -1,39 +1,37 @@ """`Factory` providers init injections example.""" -import collections - -import dependency_injector.providers as providers +from dependency_injector import providers -CreditCard = collections.namedtuple('CreditCard', []) -Photo = collections.namedtuple('Photo', []) -User = collections.namedtuple('User', ['uid', 'main_photo', 'credit_card']) - -# User, Photo and CreditCard factories: -credit_cards_factory = providers.Factory(CreditCard) -photos_factory = providers.Factory(Photo) -users_factory = providers.Factory(User, - main_photo=photos_factory, - credit_card=credit_cards_factory) - -# Creating several User objects: -user1 = users_factory(1) -# Same as: user1 = User(1, -# main_photo=Photo(), -# credit_card=CreditCard()) -user2 = users_factory(2) -# Same as: user2 = User(2, -# main_photo=Photo(), -# credit_card=CreditCard()) +class Photo: + ... -# Context keyword arguments have priority on keyword argument injections: -main_photo = Photo() -credit_card = CreditCard() +class User: -user3 = users_factory(3, - main_photo=main_photo, - credit_card=credit_card) -# Same as: user3 = User(3, -# main_photo=main_photo, -# credit_card=credit_card) + def __init__(self, uid: int, main_photo: Photo): + self.uid = uid + self.main_photo = main_photo + + +photo_factory = providers.Factory(Photo) +user_factory = providers.Factory( + User, + main_photo=photo_factory, +) + + +if __name__ == '__main__': + user1 = user_factory(1) + # Same as: # user1 = User(1, main_photo=Photo()) + + user2 = user_factory(2) + # Same as: # user2 = User(2, main_photo=Photo()) + + # Context keyword arguments have a priority: + another_photo = Photo() + user3 = user_factory( + uid=3, + main_photo=another_photo, + ) + # Same as: # user3 = User(uid=3, main_photo=another_photo)