mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-25 02:53:56 +03:00
Update docs on creating custom providers with a requirement to specify `.related
` property
This commit is contained in:
parent
2fe0e00cef
commit
19a2f551ae
|
@ -13,6 +13,7 @@ Development version
|
|||
- Fix ``container.reset_singleton()`` to reset all provider types, not only ``Singleton``.
|
||||
- Improve ``container.traverse(types=[...])`` and ``provider.traverse(types=[...])`` typing stubs
|
||||
to return ``types`` -typed iterator.
|
||||
- Update docs on creating custom providers with a requirement to specify ``.related`` property.
|
||||
|
||||
4.18.0
|
||||
------
|
||||
|
|
|
@ -20,8 +20,11 @@ To create a custom provider you need to follow these rules:
|
|||
from the ``providers`` module. After the a new provider object is created use
|
||||
``Provider._copy_overriding()`` method to copy all overriding providers. See the example
|
||||
below.
|
||||
4. If the new provider has a ``__init__()`` method, it should call the parent
|
||||
4. If new provider has a ``__init__()`` method, it should call the parent
|
||||
``Provider.__init__()``.
|
||||
5. If new provider stores any other providers, these providers should be listed in
|
||||
``.related`` property. Property ``.related`` also should yield providers from parent
|
||||
``.related`` property.
|
||||
|
||||
.. literalinclude:: ../../examples/providers/custom_factory.py
|
||||
:language: python
|
||||
|
|
|
@ -25,6 +25,12 @@ class CustomFactory(providers.Provider):
|
|||
|
||||
return copied
|
||||
|
||||
@property
|
||||
def related(self):
|
||||
"""Return related providers generator."""
|
||||
yield from [self._factory]
|
||||
yield from super().related
|
||||
|
||||
def _provide(self, args, kwargs):
|
||||
return self._factory(*args, **kwargs)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user