NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1547 most downloaded on PyPI
Dependency injection framework for Python
Last release 3 months ago
18 Jun 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
262 releases · first in 2016
Regenerate C sources using Cython 0.29.14.
Add Python 3.8 support.
Add PyPy 3.6 support.
Add support of six 1.14.0.
Add support of six 1.13.0.
Regenerate C sources using Cython 0.29.14.
Remove Python 2-ish inheritance from object in example modules.
Replace Python 2-ish super(class, self).__init__() calls with Python 3-ish super().__init__() in example modules.
Fix doc block errors in example modules, including related to PEP257-compliance.
Clean up tox.ini file.
Fix 3.14.11 degradation issue causing inability of using Delegate provider in DeclarativeContainer when this container is instantiated with overriding
Fix 3.14.11 degradation issue causing inability of using Delegate provider in DeclarativeContainer when this container is instantiated with overriding of delegating provider (thanks to GitterRemote, issue details are here #235).
One column per quarter.
Fix issue causing creation of a copy of provided object by Object provider when it was a part of DeclarativeContainer and this container was instantia
Make spelling fix for the list of contributors.
Make spelling fix for the list of contributors.
Improve README - minor English nitpicking (thanks to supakeen _).
Improve README - minor English nitpicking (thanks to supakeen).
Regenerate C sources using Cython 0.29.13.
Regenerate C sources using Cython 0.29.13.
Fix typo on "Dependency injection and inversion of control in Python" docs page (thanks to Dmitry (xotonic) _).
Fix typo on "Dependency injection and inversion of control in Python" docs page (thanks to Dmitry (xotonic)).
Fix FactoryAggregate provider copying issue.
Fix FactoryAggregate provider copying issue.
Regenerate C sources using Cython 0.29.7.
Fix issue causing ThreadLocalSingleton provider to return None after reset (thanks to Jeroen Rietveld _).
Fix issue causing ThreadLocalSingleton provider to return None after reset (thanks to Jeroen Rietveld).
Add test for ThreadLocalSingleton provider reset functionality (thanks to Jeroen Rietveld).
Regenerate C sources using Cython 0.29.6.
Fix typo in providers doc (thanks to Vlad Ghita _).
Fix typo in providers doc (thanks to Vlad Ghita).
Fix issue with copying providers that have system streams injections (sys.stdin, sys.stdout and sys.stderr).
Fix issue with copying providers that have system streams injections (sys.stdin, sys.stdout and sys.stderr).
Add support of six 1.12.0.
Regenerate C sources using Cython 0.29.2.
- Set Cython language_level=2.
Set Cython language_level=2.
Remove deprecated assertEquals from tests.
Fix bug #208: version 3.14.0 hasn't worked on Python 3.5.2 (thanks to Jeroen Entjes).
Remove deprecated assertEquals from tests.
Regenerate C sources using Cython 0.29.
Add DelegatedCoroutine provider.
Add Coroutine provider.
Add DelegatedCoroutine provider.
Add AbstractCoroutine provider.
Add CoroutineDelegate provider.
Fix type-hinting of *args & **kwargs that was specified in doc blocks of various providers and caused inspection problems in PyCharm.
Regenerate C sources using Cython 0.28.5.
Add additional benchmark of Factory provider.
Add additional benchmark of Factory provider.
Add tests and tox.ini to the distribution, so that they could be used after package is installed (thanks to Tobias Happ).
Fix typo on "Chained Factories" pattern docs page.
Fix typo on "Chained Factories" pattern docs page.
Add example of "Chained Factories" pattern.
Add Python 3.7 support.
Drop Python 3.3 support.
Drop Python 2.6 support.
Add example of "Chained Factories" pattern.
Add example of "Factory of Factories" pattern.
- Fix bug #200 _. - Make some refactoring #199 _.
Regenerate C sources using Cython 0.28.4.
Fix bug #198.
Regenerate C sources using Cython 0.28.4.
Apply code style fixes to "services_v2" example miniapp.
Apply code style fixes to "services_v2" example miniapp.
Update main page example from "services_v1" to "services_v2".
Update main page example from "services_v1" to "services_v2".
Fix few typos on main page.
Add new example miniapp "password_hashing".
Add new example miniapp "services_v2".
Rename example miniapp "services" to "services_v1".
Fix incompatibility issue between Python 3.3, pip 10.0.0 and virtualenv 16.0.0 (details) that caused failures of Python 3.3 tests on Travis.
Regenerate C sources using Cython 0.28.3.
Regenerate C sources using Cython 0.28.2.
Regenerate C sources using Cython 0.28.2.
Fix padding problem in code samples in docs.
Fix padding problem in code samples in docs.
Fix padding problem in code samples in docs.
Fix padding problem in code samples in docs.
Remove autodoc from the list of documentation dependencies.
Fix small typo in documentation (thanks to James Lafa).
Fix small typo in documentation (thanks to James Lafa).
Improve Configuration provider overriding logic.
Improve Configuration provider overriding logic.
Refactor Configuration provider.
Improve DependenciesContainer provider overriding logic.
Update "services" example miniapp.
Update "bundles" example miniapp.
Add DependenciesContainer provider.
Add DependenciesContainer provider.
Add "use_cases" example miniapp.
Update documentation requirements to use fixed version of sphinxcontrib-disqus.
Fix docs build problem (sphinx is frozen on 1.5.6 version because of incompatibility with sphinxcontrib-discus).
Fix docs build problem (sphinx is frozen on 1.5.6 version because of incompatibility with sphinxcontrib-discus).
Add badge for docs.
Change initialization of declarative container, so it accepts overriding providers as keyword arguments - DeclarativeContainer(overriding_providers).
Change initialization of declarative container, so it accepts overriding providers as keyword arguments - DeclarativeContainer(**overriding_providers).
Add method to dynamic catalog for setting groups of providers - DynamicContainer.set_providers(**providers).
Add method to dynamic catalog for overriding groups of providers - DynamicContainer.set_providers(**overriding_providers).
Rename ExternalDependency provider to Dependency.
Add default value for instance_of argument of Dependency provider - Dependency(instance_of=object).
Fix bug when copying Configuration provider.
Regenerate C sources using Cython 0.27.3.
Add "bundles" example miniapp.
Fix padding problem in code samples in docs (part 2).
Fix padding problem in code samples in docs (part 2).
Fix padding problem in code samples in docs.
Fix padding problem in code samples in docs.
Add DeclarativeContainer.containers attribute that stores dictionary of nested containers.
Add DeclarativeContainer.containers attribute that stores dictionary of nested containers.
Fix bug related to double-overridden providers (provider1 -> provider2 -> provider3).
- Add support of six 1.11.0.
Add support of six 1.11.0.
Add Provider.provider dynamic attribute that return new provider's delegate (alias of method Provider.delegate()).
Add FactoryAggregate provider.
Add Provider.provider dynamic attribute that return new provider's delegate (alias of method Provider.delegate()).
Add support of six 1.11.0.
Regenerate C sources using Cython 0.27.1.
Regenerate C sources using Cython 0.26.
Regenerate C sources using Cython 0.26.
Add SingletonDelegate provider.
Add CallableDelegate provider.
Add FactoryDelegate provider.
Add SingletonDelegate provider.
Add functionality for initializing Configuration provider with default values.
Add functionality for initializing Configuration provider with default values.
Code style fixes in providers module.
Code style fixes in providers module.
- Correct typo in changelog.
Correct typo in changelog.
Add "Useful links" section to the "Dependency injection and inversion of control in Python" article.
Add "Useful links" section to the "Dependency injection and inversion of control in Python" article.
Remove non-ascii character from README. This character created an installation problem on Debian (Python 3.4).
Remove non-ascii character from README. This character created an installation problem on Debian (Python 3.4).
Add Provider.last_overriding read-only property that points to last overriding provider, if any. If target provider is not overridden, None would be r
Add Provider.last_overriding read-only property that points to last overriding provider, if any. If target provider is not overridden, None would be returned.
Update example of writing custom providers.
Update movie lister example miniapp.
Update source of coveralls.io badge.
Update doc block for Provider.overriding_lock attribute.
Update doc block for Provider.overriding_lock attribute.
Make Provider overriding methods thread safe: Provider.override(provider), Provider.reset_last_overriding(), Provider.reset_override().
Make Provider overriding methods thread safe: Provider.override(provider), Provider.reset_last_overriding(), Provider.reset_override().
Refactor storage locking of ThreadSafeSingleton provider.
Fix few pydocstyle errors in examples.
Update movie lister example miniapp with AbstractFactory provider.
Update movie lister example miniapp with AbstractFactory provider.
Add AbstractSingleton provider.
Add AbstractCallable provider.
Add AbstractFactory provider.
Add AbstractSingleton provider.
Optimize calling of overridden providers (~15% faster).
Fix minor bug related to patch of Configuration provider in version 3.3.6 - special attributes were identified by formula __{text} - now they are iden
Fix minor bug related to patch of Configuration provider in version 3.3.6 - special attributes were identified by formula __{text} - now they are identified by formula __{text}__, that is more correct according to Python Data Model.
Patch Configuration provider to raise AttributeError when there is an attempt to access special attribute like __module__ or __name__ (this behaviour
Patch Configuration provider to raise AttributeError when there is an attempt to access special attribute like __module__ or __name__ (this behaviour is identical to behaviour of object).
Apply minor refactoring for providers module.
Remove cythonization from travis building process.
[Refactoring] Consolidate all containers in dependency_injector.containers module.
[Refactoring] Consolidate all containers in dependency_injector.containers module.
[Refactoring] Consolidate all providers in dependency_injector.providers module.
Change __module__ attribute for all members of dependency_injector.containers package to point to package, but not to package modules.
Change __module__ attribute for all members of dependency_injector.containers package to point to package, but not to package modules.
Regenerate C sources using Cython 0.25.2.
Update services miniapp example.
Update services miniapp example.
Add disqus.com _ comments for documentation.
Add disqus.com comments for documentation.
Fix reference to version in api docs.
Fix title underline in containers api docs.
Update documentation copyright year.
Update example version in installation document.
Add some improvements to the documentation.
Add some improvements to the documentation.
- Add support of Python 3.6.
Add support of Python 3.6.
Add description of structure into README.
Add description of structure into README.
Fix documentation errors.
Switch to single version of documentation for getting shorter urls (without /en/stable/). Add appropriate redirects for compatibility with previous li
Switch to single version of documentation for getting shorter urls (without /en/stable/). Add appropriate redirects for compatibility with previous links.
Update copyright date.
Make minor documentation updates.
Add examples into README.
Make minor documentation updates.
Change name of version variable to follow PEP8: VERSION -> __version__.
Change name of version variable to follow PEP8: VERSION -> __version__.
Update services miniapp example.
Update services miniapp example.
Add Configuration provider for late static binding of configuration options.
Add Configuration provider for late static binding of configuration options.
Your coding agent can read these notes before it upgrades. Set up the MCP server →