mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-05-22 21:46:17 +03:00
Add docs page
This commit is contained in:
parent
a52729177f
commit
878ccf36c9
|
@ -78,7 +78,7 @@ Key features of the ``Dependency Injector``:
|
|||
and dictionaries. See :ref:`configuration-provider`.
|
||||
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
||||
- **Performance**. Fast. Written in ``Cython``.
|
||||
- **Typing**. Provides typing stubs, ``mypy``-friendly.
|
||||
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
||||
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
||||
|
||||
.. code-block:: python
|
||||
|
|
|
@ -20,7 +20,7 @@ Key features of the ``Dependency Injector``:
|
|||
and dictionaries. See :ref:`configuration-provider`.
|
||||
- **Containers**. Provides declarative and dynamic containers. See :ref:`containers`.
|
||||
- **Performance**. Fast. Written in ``Cython``.
|
||||
- **Typing**. Provides typing stubs, ``mypy``-friendly.
|
||||
- **Typing**. Provides typing stubs, ``mypy``-friendly. See :ref:`provider-typing`.
|
||||
- **Maturity**. Mature and production-ready. Well-tested, documented and supported.
|
||||
|
||||
The framework stands on two principles:
|
||||
|
|
|
@ -11,6 +11,7 @@ Develop
|
|||
-------
|
||||
- Add native support of the generics to the providers: ``some_provider = providers.Provider[SomeClass]``.
|
||||
- Deprecate module ``types``.
|
||||
- Add documentation page on providers typing and ``mypy`` support.
|
||||
|
||||
3.43.1
|
||||
------
|
||||
|
|
|
@ -49,3 +49,4 @@ Providers module API docs - :py:mod:`dependency_injector.providers`
|
|||
overriding
|
||||
provided_instance
|
||||
custom
|
||||
typing_mypy
|
||||
|
|
58
docs/providers/typing_mypy.rst
Normal file
58
docs/providers/typing_mypy.rst
Normal file
|
@ -0,0 +1,58 @@
|
|||
.. _provider-typing:
|
||||
|
||||
Typing and mypy
|
||||
===============
|
||||
|
||||
.. meta::
|
||||
:keywords: Python,DI,Dependency injection,IoC,Inversion of Control,Providers,Typing,Mypy,
|
||||
Pattern,Example
|
||||
:description: Dependency Injector providers are mypy-friendly. Providers module goes with the
|
||||
typing stubs to provide the typing information to ``mypy``, IDEs and editors.
|
||||
|
||||
Providers are ``mypy``-friendly.
|
||||
|
||||
Providers module goes with the typing stubs. It provides typing information to ``mypy`` and your
|
||||
IDE.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from dependency_injector import providers
|
||||
|
||||
|
||||
class Animal:
|
||||
...
|
||||
|
||||
|
||||
class Cat(Animal)
|
||||
...
|
||||
|
||||
|
||||
provider = providers.Factory(Cat)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
animal = provider() # mypy knows that animal is of type "Cat"
|
||||
|
||||
|
||||
You can use ``Provider`` as a generic type. This helps when a provider is an argument of a
|
||||
function or method.
|
||||
|
||||
.. code-block:: python
|
||||
:emphasize-lines: 12
|
||||
|
||||
from dependency_injector import providers
|
||||
|
||||
|
||||
class Animal:
|
||||
...
|
||||
|
||||
|
||||
class Cat(Animal)
|
||||
...
|
||||
|
||||
|
||||
provider: providers.Provider[Animal] = providers.Factory(Cat)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
animal = provider() # mypy knows that animal is of type "Animal"
|
Loading…
Reference in New Issue
Block a user