mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-02-07 07:00:49 +03:00
Update providers overriding docs
This commit is contained in:
parent
b0c51b0292
commit
a7ca196ee0
Binary file not shown.
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
@ -11,25 +11,25 @@ compatible one, without chaning your previously written code.
|
|||
|
||||
Provider overriding functionality has such interface:
|
||||
|
||||
.. image:: /images/provider_override.png
|
||||
.. image:: /images/providers/provider_override.png
|
||||
:width: 45%
|
||||
:align: center
|
||||
|
||||
+ ``Provider.override()`` - takes another provider that will be used instead of
|
||||
current provider. This method could be called several times. In such case,
|
||||
last passed provider would be used as overriding one.
|
||||
+ ``Provider.reset_override()`` - resets all overriding providers. Provider
|
||||
+ ``di.Provider.override()`` - takes another provider that will be used
|
||||
instead of current provider. This method could be called several times.
|
||||
In such case, last passed provider would be used as overriding one.
|
||||
+ ``di.Provider.reset_override()`` - resets all overriding providers. Provider
|
||||
starts to behave itself like usual.
|
||||
+ ``Provider.is_overridden`` - bool, ``True`` if provider is overridden.
|
||||
+ ``di.Provider.is_overridden`` - bool, ``True`` if provider is overridden.
|
||||
|
||||
.. note::
|
||||
|
||||
Actually, initial provider forms stack from overriding providers. There is
|
||||
some, not so common, but still usefull, functionality that could be used:
|
||||
|
||||
+ ``Provider.last_overriding`` - always keeps reference to last overriding
|
||||
provider.
|
||||
+ ``Provider.reset_last_overriding()`` - remove last overriding provider
|
||||
+ ``di.Provider.last_overriding`` - always keeps reference to last
|
||||
overriding provider.
|
||||
+ ``di.Provider.reset_last_overriding()`` - remove last overriding provider
|
||||
from stack of overriding providers.
|
||||
|
||||
Example:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
"""Simple providers overriding example."""
|
||||
|
||||
from dependency_injector.providers import Factory
|
||||
import dependency_injector as di
|
||||
|
||||
|
||||
class User(object):
|
||||
|
@ -8,7 +8,7 @@ class User(object):
|
|||
"""Example class User."""
|
||||
|
||||
# Users factory:
|
||||
users_factory = Factory(User)
|
||||
users_factory = di.Factory(User)
|
||||
|
||||
# Creating several User objects:
|
||||
user1 = users_factory()
|
||||
|
@ -25,7 +25,7 @@ class SuperUser(User):
|
|||
"""Example class SuperUser."""
|
||||
|
||||
# Overriding users factory:
|
||||
users_factory.override(Factory(SuperUser))
|
||||
users_factory.override(di.Factory(SuperUser))
|
||||
|
||||
# Creating some more User objects using overridden users factory:
|
||||
user3 = users_factory()
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
"""Overriding user's model example."""
|
||||
|
||||
from dependency_injector.providers import Factory
|
||||
from dependency_injector.injections import KwArg
|
||||
import dependency_injector as di
|
||||
|
||||
|
||||
class User(object):
|
||||
|
@ -29,8 +28,8 @@ class UserService(object):
|
|||
return self.user_cls(id=id, password='secret' + str(id))
|
||||
|
||||
# Users factory and UserService provider:
|
||||
users_service = Factory(UserService,
|
||||
KwArg('user_cls', User))
|
||||
users_service = di.Factory(UserService,
|
||||
user_cls=User)
|
||||
|
||||
# Getting several users and making some asserts:
|
||||
user1 = users_service().get_by_id(1)
|
||||
|
@ -76,8 +75,8 @@ class ExtendedUserService(UserService):
|
|||
return user
|
||||
|
||||
# Overriding users_service provider:
|
||||
extended_users_service = Factory(ExtendedUserService,
|
||||
KwArg('user_cls', ExtendedUser))
|
||||
extended_users_service = di.Factory(ExtendedUserService,
|
||||
user_cls=ExtendedUser)
|
||||
users_service.override(extended_users_service)
|
||||
|
||||
# Getting few other users users and making some asserts:
|
||||
|
|
Loading…
Reference in New Issue
Block a user