While dependency injection is easy to do in Python due to its support for keyword arguments, the ease with which objects can be mocked and its dynamic nature, a framework for assisting in this process ...
The changelog can be found here. When a Singleton provider is created, the Callable passed will only be called once and the result value will be cached.