mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +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%
 | 
					    :width: 80%
 | 
				
			||||||
    :align: center
 | 
					    :align: center
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. code-block:: python
 | 
					.. literalinclude:: ../../examples/providers/overriding_simple.py
 | 
				
			||||||
 | 
					   :language: 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)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Example:
 | 
					Example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -83,104 +47,5 @@ Example:
 | 
				
			||||||
    :width: 100%
 | 
					    :width: 100%
 | 
				
			||||||
    :align: center
 | 
					    :align: center
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.. code-block:: python
 | 
					.. literalinclude:: ../../examples/providers/overriding_users_model.py
 | 
				
			||||||
 | 
					   :language: 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
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user