.. _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"