Typing and mypy¶
Providers are mypy
-friendly.
Providers module goes with the typing stubs. It provides typing information to mypy
and your
IDE.
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.
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"