mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-22 17:47:02 +03:00
Replacing providers overriding documentation examples with literalincludes
This commit is contained in:
parent
cbe7069227
commit
abcd8f5369
|
@ -38,44 +38,8 @@ Example:
|
|||
:width: 80%
|
||||
:align: center
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
"""Simple providers overriding example."""
|
||||
|
||||
from objects.providers import Factory
|
||||
|
||||
|
||||
class User(object):
|
||||
|
||||
"""Example class User."""
|
||||
|
||||
# Users factory:
|
||||
users_factory = Factory(User)
|
||||
|
||||
# Creating several User objects:
|
||||
user1 = users_factory()
|
||||
user2 = users_factory()
|
||||
|
||||
# Making some asserts:
|
||||
assert user1 is not user2
|
||||
assert isinstance(user1, User) and isinstance(user2, User)
|
||||
|
||||
|
||||
# Extending User:
|
||||
class SuperUser(User):
|
||||
|
||||
"""Example class SuperUser."""
|
||||
|
||||
# Overriding users factory:
|
||||
users_factory.override(Factory(SuperUser))
|
||||
|
||||
# Creating some more User objects using overridden users factory:
|
||||
user3 = users_factory()
|
||||
user4 = users_factory()
|
||||
|
||||
# Making some asserts:
|
||||
assert user4 is not user3
|
||||
assert isinstance(user3, SuperUser) and isinstance(user4, SuperUser)
|
||||
.. literalinclude:: ../../examples/providers/overriding_simple.py
|
||||
:language: python
|
||||
|
||||
Example:
|
||||
|
||||
|
@ -83,104 +47,5 @@ Example:
|
|||
:width: 100%
|
||||
:align: center
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
"""Overriding user's model example."""
|
||||
|
||||
from objects.providers import Factory
|
||||
from objects.injections import KwArg
|
||||
|
||||
|
||||
class User(object):
|
||||
|
||||
"""Example class User."""
|
||||
|
||||
def __init__(self, id, password):
|
||||
"""Initializer."""
|
||||
self.id = id
|
||||
self.password = password
|
||||
super(User, self).__init__()
|
||||
|
||||
|
||||
class UserService(object):
|
||||
|
||||
"""Example class UserService."""
|
||||
|
||||
def __init__(self, user_cls):
|
||||
"""Initializer."""
|
||||
self.user_cls = user_cls
|
||||
super(UserService, self).__init__()
|
||||
|
||||
def get_by_id(self, id):
|
||||
"""Find user by his id and return user model."""
|
||||
return self.user_cls(id=id, password='secret' + str(id))
|
||||
|
||||
# Users factory and UserService provider:
|
||||
users_service = Factory(UserService,
|
||||
KwArg('user_cls', User))
|
||||
|
||||
# Getting several users and making some asserts:
|
||||
user1 = users_service().get_by_id(1)
|
||||
user2 = users_service().get_by_id(2)
|
||||
|
||||
assert isinstance(user1, User)
|
||||
assert user1.id == 1
|
||||
assert user1.password == 'secret1'
|
||||
|
||||
assert isinstance(user2, User)
|
||||
assert user2.id == 2
|
||||
assert user2.password == 'secret2'
|
||||
|
||||
assert user1 is not user2
|
||||
|
||||
# Extending user model and user service for adding custom attributes without
|
||||
# making any changes to client's code.
|
||||
|
||||
|
||||
class ExtendedUser(User):
|
||||
|
||||
"""Example class ExtendedUser."""
|
||||
|
||||
def __init__(self, id, password, first_name=None, last_name=None,
|
||||
gender=None):
|
||||
"""Initializer."""
|
||||
self.first_name = first_name
|
||||
self.last_name = last_name
|
||||
self.gender = gender
|
||||
super(ExtendedUser, self).__init__(id, password)
|
||||
|
||||
|
||||
class ExtendedUserService(UserService):
|
||||
|
||||
"""Example class ExtendedUserService."""
|
||||
|
||||
def get_by_id(self, id):
|
||||
"""Find user by his id and return user model."""
|
||||
user = super(ExtendedUserService, self).get_by_id(id)
|
||||
user.first_name = 'John' + str(id)
|
||||
user.last_name = 'Smith' + str(id)
|
||||
user.gender = 'male'
|
||||
return user
|
||||
|
||||
# Overriding users_service provider:
|
||||
extended_users_service = Factory(ExtendedUserService,
|
||||
KwArg('user_cls', ExtendedUser))
|
||||
users_service.override(extended_users_service)
|
||||
|
||||
# Getting few other users users and making some asserts:
|
||||
user3 = users_service().get_by_id(3)
|
||||
user4 = users_service().get_by_id(4)
|
||||
|
||||
assert isinstance(user3, ExtendedUser)
|
||||
assert user3.id == 3
|
||||
assert user3.password == 'secret3'
|
||||
assert user3.first_name == 'John3'
|
||||
assert user3.last_name == 'Smith3'
|
||||
|
||||
assert isinstance(user4, ExtendedUser)
|
||||
assert user4.id == 4
|
||||
assert user4.password == 'secret4'
|
||||
assert user4.first_name == 'John4'
|
||||
assert user4.last_name == 'Smith4'
|
||||
|
||||
assert user3 is not user4
|
||||
.. literalinclude:: ../../examples/providers/overriding_users_model.py
|
||||
:language: python
|
||||
|
|
Loading…
Reference in New Issue
Block a user