Changelog

This document describes all the changes in Dependency Injector framework that were made in every particular version.

From version 0.7.6 Dependency Injector framework strictly follows Semantic versioning

4.5.1

  • Fix flake8 issue in Commands  and Handlers example.

4.5.0

  • Add support of non-string keys for Dict provider.

  • Add simple FastAPI example.

  • Add Commands  and Handlers example from issue #327.

  • Add extra typing test for provided instance of DependenciesContainer provider.

4.4.1

  • Improve FastAPI integration: handle Depends(Provide[...]).

  • Update FastAPI example.

  • Remove a typo from the Flask tutorial.

4.4.0

  • Add @inject decorator. It helps to fix a number of wiring bugs and make wiring be more resilient.

  • Refactor wiring module.

  • Update documentation and examples to use @inject decorator.

  • Add Flask blueprints example.

  • Fix wiring bug when wiring doesn’t work with the class-based decorators.

  • Fix wiring bug when wiring doesn’t work with the decorators that doesn’t use functools.wraps(...).

  • Fix wiring bug with @app.route(...) -style decorators (Flask, Sanic, FastAPI, etc.).

  • Fix wiring bug when wiring doesn’t work with Flask blueprints.

4.3.9

  • Add FastAPI example.

4.3.8

  • Add a hotfix to support wiring for FastAPI endpoints.

4.3.7

4.3.6

  • Fix changelog typo.

4.3.5

  • Fix a bug in wiring module that caused multiple imports of the modules when .wire(packages=[...]) is used (See issue #320). Thanks to Federico iskorini for reporting the issue.

4.3.4

  • Fix a bug in Configuration provider that resulted in not working .reset_override() (See issue #319). Thanks to Jun lust4life for reporting the issue and suggesting a fix.

4.3.3

  • Fix a bug in wiring with improper patching of @classmethod and @staticmethod decorated methods (See issue #318).

4.3.2

  • Fix a bug in wiring with mistakenly initialized and shutdown resource with Closing marker on context argument providing.

4.3.1

  • Fix README.

4.3.0

  • Implement per-function execution scope for Resource provider in tandem with wiring.Closing.

4.2.0

  • Add support of Python 3.9.

  • Update readme.

4.1.8

  • Update asyncio daemon, single- and multi-container examples to use Resource provider.

4.1.7

  • Add CI job to build and push documentation to S3 bucket.

4.1.6

  • Fix wiring of multiple containers (see issue #313). Thanks to iskorini for reporting the issue.

  • Fix wiring for @classmethod.

4.1.5

  • Fix Travis CI windows and MacOS builds.

4.1.4

  • Fix version of cibuildwheel==1.63.

  • Update Travis CI webhooks to fix builds triggering.

4.1.3

  • Migrate from travis-ci.org to travis-ci.com to fix build issues.

  • Add explicit installation of certifi for Windows build to resolve build problems.

4.1.2

  • Bump version of cibuildwheel>=1.5.1 to resolve Windows build problem.

4.1.1

  • Fix a few typos in Resource provider docs.

4.1.0

  • Add Resource provider.

  • Add Dict provider.

  • “Un-deprecate” @containers.override() and @containers.copy() decorators ( see Issue 301 for more information).

  • Add favicon.

  • Remove redirects that occur while getting badge images to optimize docs load speed.

  • Update license year.

  • Update short description on PyPI.

4.0.6

  • Fix wiring for top-level package __init__.py.

4.0.5

  • Move .provided attribute to providers.Provider.

  • Update all links in documentation and examples to use https:// instead of http.

4.0.4

  • Fix typing stubs for container.override() method.

4.0.3

  • Deprecate @containers.override() and @containers.copy() decorators.

  • Update changelog of version 4.0.0 so it lists all deprecated features.

4.0.2

  • Fix typing stubs for @container.override() and @containers.copy() decorators ( see PR 302). Thanks to JarnoRFB for reporting the issue.

4.0.1

  • Extend Configuration.from_ini() and Configuration.from_yaml() typing stubs to accept pathlib.Path. The methods were already compatible with pathlib.Path and just did not accept it in their signatures (see PR 300). Fix was provided by JarnoRFB. Many thanks to you again, JarnoRFB.

4.0.0

New features:

  • Add wiring feature.

Deprecations:

  • Deprecate ext.aiohttp module in favor of wiring feature.

  • Deprecate ext.flask module in favor of wiring feature.

  • Deprecate .delegate() provider method in favor of .provider attribute.

Removals:

  • Remove deprecated types module.

Tutorials:

  • Update flask tutorial.

  • Update aiohttp tutorial.

  • Update asyncio daemon tutorial.

  • Update CLI application tutorial.

Examples:

  • Add django example.

  • Add sanic example.

  • Update aiohttp example.

  • Update flask example.

  • Update asyncio daemon example.

  • Update movie-lister example.

  • Update CLI application example.

Misc:

  • Regenerate C sources using Cython 0.29.21.

  • Improve documentation and README (typos removal, rewording, etc).

3.44.0

  • 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.

  • Update README.

3.43.1

  • Fix a typo in README.

3.43.0

  • Update API documentation.

  • Remove not relevant “speech” example.

  • Fix a few typos.

3.42.0

  • Update “DI in Python” documentation page.

  • Delete “What is DI?” documentation page.

  • Delete “engines cars” example mini app.

  • Update README.

3.41.0

  • Refactor “use cases” example.

  • Refactor “password hashing” example.

  • Refactor “chained factories” pattern example.

  • Refactor “factory of factories” pattern example.

  • Fix declarative container mypy stub to __init__ to accept not only providers.

  • Refactor main module of the “decoupled packages” example.

  • Delete “api client” example mini app.

  • Delete “mail service” example mini app.

3.40.0

  • Add “Decoupled packages” example.

  • Delete “Bundles” examples mini application.

3.39.0

  • Add application examples with single and multiple containers.

  • Remove “Services” application examples.

  • Split examples page into “Examples” with main examples and “Other Examples” with secondary examples.

  • Move “Installation” page to “Introduction” section.

3.38.1

  • Fix README.

3.38.0

  • Update “What is What is dependency injection?” documentation page.

  • Update README.

  • Fix a bunch of typos.

3.37.0

  • Update index documentation page.

  • Make multiple improvements and fixes for the providers documentation.

  • Update “Key Features” documentation page.

  • Remove “Structure of Dependency Injector” documentation page.

  • Edit “Feedback” documentation page.

3.36.0

  • Update providers overriding documentation and rework examples.

  • Update documentation on injecting provided object attributes, items or method calls.

  • Update documentation and example on creating a custom provider.

  • Update providers index documentation page to give better overview of providers functionality.

  • Fix mypy stub of the Provider to specify the protected ._copy_overridings() method.

  • Update copyright year in the documentation.

3.35.1

  • Fix minor issues in the providers documentation and examples.

3.35.0

  • Update documentation and rework examples for: Singleton, Callable, Coroutine, Object, List, Configuration, Selector, and Dependency providers.

  • Fix mypy stub of the DeclarativeContainer to specify the __init__ interface.

3.34.0

  • Update Factory provider documentation.

  • Rework Factory provider examples.

3.33.0

  • Add typing stubs.

3.32.3

  • Fix few typos on README and docs main pages.

3.32.2

  • Make a fix in the factory delegation example (thanks to Joël Bourgault for finding and reporting the issue).

3.32.1

  • Update DI Demo 2 example and READ to make typed configuration option injection.

3.32.0

  • Add a feature that helps to explicitly specify the type of the configuration option value before the injection.

  • Add disqus comments to the docs page on injecting provided instance attributes, items, etc.

3.31.0

  • Add a feature that helps to inject provided instance attribute, item, or method call result (see Issue 281). Design for this feature was provided by JarnoRFB. Many thanks to you, JarnoRFB.

3.30.4

  • Update README.

3.30.3

  • Update README.

  • Update containers documentation and examples.

3.30.2

  • Update README.

3.30.1

  • Update README.

  • Add one more example.

3.30.0

  • Rework Movie Lister example.

  • Add tutorial for building Movie Lister.

  • Make some rewording for the other tutorials.

  • Fix a couple of typos.

3.29.0

  • Update README with the more direct message on what is Dependency Injector and how is it different from the other frameworks.

  • Change the example code in the README.

  • Add FAQ to the README.

  • Update documentation key features and index pages.

3.28.1

  • Fix typos in the asyncio + Dependency Injector monitoring daemon tutorial.

3.28.0

  • Add asyncio + Dependency Injector example monitoring-daemon-asyncio.

  • Add asyncio + Dependency Injector monitoring daemon tutorial.

  • Fix a typo in the docblock of the Configuration provider.

  • Fix multiple typos in the flask and aiohttp tutorials.

  • Fix Makefile to run aiohttp integration tests on Python 3.5+.

3.27.0

  • Add deep init injections overriding for Factory provider.

  • Add asyncio monitoring daemon example.

3.26.0

  • Add configuration itemselector feature (see Issue 274).

  • Re-design Configuration provider implementation.

  • Update giphynav-aiohttp to remove doubled “if not query” (many thanks to Oleg Baranov for the feedback).

3.25.1

  • Fix aiohttp tutorial typos.

3.25.0

  • Add aiohttp tutorial.

  • Fix Flask tutorial typos and change some wording.

3.24.1

  • Update Google Search Console verification meta tag.

  • Update meta description.

3.24.0

  • Add Aiohttp integration module dependency_injector.ext.aiohttp.

  • Add Aiohttp + Dependency Injector example giphynav-aiohttp.

3.23.2

  • Fix Flask tutorial code issues, typos and change some wording.

3.23.1

3.23.0

  • Add Flask tutorial.

  • Add PyPI classifiers.

3.22.0

  • Migrate docs to alabaster theme.

  • Add Bootstrap extension to the ghnav-flask example.

  • Add stubs for the tutorials to the docs.

3.21.2

  • Hotfix changelog typo.

3.21.1

  • Hotfix ghnav-flask example to read Github token from environment variable.

3.21.0

  • Re-design Flask integration.

  • Make cosmetic fixes for Selector provider docs.

3.20.1

  • Hotfix Windows builds.

3.20.0

  • Add Flask integration module dependency_injector.ext.flask.

  • Add Flask + Dependency Injector example ghnav-flask.

  • Add Factory.provides attribute. It is an alias to the Factory.cls.

  • New README.

3.19.2

  • Add logo.

3.19.1

  • Start distributing wheels for Linux, MacOS, and Windows (thanks to Travis CI and cibuildwheel).

  • Start using twine for publishing package on PyPI.

  • Fix Travis CI configuration file warnings.

3.19.0

  • Add Selector provider.

  • Fix Configuration.override() to return OverridingContext for non-dictionary values.

3.18.1

  • Add interpolation of environment variables to Configuration.from_yaml() and Configuration.from_ini().

  • Add ignoring of IOError to Configuration.from_yaml().

3.18.0

  • Add Configuration.from_yaml() method to load configuration from the yaml file.

  • Add Configuration.from_ini() method to load configuration from the ini file.

  • Add Configuration.from_dict() method to load configuration from the dictionary.

  • Add Configuration.from_env() method to load configuration from the environment variable.

  • Add default value for name argument of Configuration provider.

  • Add documentation for Configuration provider.

  • Remove undocumented positional parameter of DependenciesContainer provider.

3.17.1

  • Fix DynamicContainer deep-copying bug.

3.17.0

  • Add Container provider.

  • Add Configuration providers linking.

3.16.1

  • Update singleton_thread_locals.py to support Python 3 (thanks to RobinsonMa, PR #252).

  • Fix Disqus comments.

  • Fix warnings in API docs.

3.16.0

3.15.6

  • Fix changelog typo.

3.15.5

  • Add downloads badge.

3.15.4

  • Update a link to the PyPi page on the README page.

3.15.3

  • Fix a typo in the link to the PyPi on the “Dependency Injection in Python” documentation page.

  • Fix a couple of typos in the list of key features on the “Key Features” and index documentation pages.

  • Update a link to the PyPi page on a couple of documentation pages.

3.15.2

  • Fix a typo in the installation instructions on the README page and in the documentation.

3.15.1

  • Fix a couple of typos in the README.

  • Fix a couple of types in the diagram of “Engines-Cars” example.

3.15.0

  • 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.

3.14.12

  • 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).

3.14.11

  • Fix issue causing creation of a copy of provided object by Object provider when it was a part of DeclarativeContainer and this container was instantiated (thanks to davidcim, issue details are here #231).

3.14.10

  • Make spelling fix for the list of contributors.

3.14.9

  • Improve README - minor English nitpicking (thanks to supakeen).

3.14.8

  • Regenerate C sources using Cython 0.29.13.

3.14.7

  • Fix typo on “Dependency injection and inversion of control in Python” docs page (thanks to Dmitry (xotonic)).

3.14.6

  • Fix FactoryAggregate provider copying issue.

  • Regenerate C sources using Cython 0.29.7.

3.14.5

  • 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.

3.14.4

  • Fix typo in providers doc (thanks to Vlad Ghita).

3.14.3

  • 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.

3.14.2

  • Set Cython language_level=2.

3.14.1

  • 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.

3.14.0

  • 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.

3.13.2

  • 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).

3.13.1

  • Fix typo on “Chained Factories” pattern docs page.

3.13.0

  • 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.

3.12.4

  • Fix bug #200.

  • Make some refactoring #199.

3.12.3

  • Fix bug #198.

  • Regenerate C sources using Cython 0.28.4.

3.12.2

  • Apply code style fixes to “services_v2” example miniapp.

3.12.1

  • 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.

3.12.0

  • Regenerate C sources using Cython 0.28.2.

3.11.3

  • Fix padding problem in code samples in docs.

3.11.2

  • Fix padding problem in code samples in docs.

  • Remove autodoc from the list of documentation dependencies.

3.11.1

  • Fix small typo in documentation (thanks to James Lafa).

3.11.0

  • Improve Configuration provider overriding logic.

  • Refactor Configuration provider.

  • Improve DependenciesContainer provider overriding logic.

  • Update “services” example miniapp.

  • Update “bundles” example miniapp.

3.10.0

  • Add DependenciesContainer provider.

  • Add “use_cases” example miniapp.

  • Update documentation requirements to use fixed version of sphinxcontrib-disqus.

3.9.1

  • Fix docs build problem (sphinx is frozen on 1.5.6 version because of incompatibility with sphinxcontrib-discus).

  • Add badge for docs.

3.9.0

  • 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.

3.8.2

  • Fix padding problem in code samples in docs (part 2).

3.8.1

  • Fix padding problem in code samples in docs.

3.8.0

  • Add DeclarativeContainer.containers attribute that stores dictionary of nested containers.

  • Fix bug related to double-overridden providers (provider1 -> provider2 -> provider3).

3.7.1

  • Add support of six 1.11.0.

3.7.0

  • 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.

3.6.1

  • Regenerate C sources using Cython 0.26.

3.6.0

  • Add CallableDelegate provider.

  • Add FactoryDelegate provider.

  • Add SingletonDelegate provider.

3.5.0

  • Add functionality for initializing Configuration provider with default values.

3.4.8

  • Code style fixes in providers module.

3.4.7

  • Correct typo in changelog.

3.4.6

  • Add “Useful links” section to the “Dependency injection and inversion of control in Python” article.

3.4.5

  • Remove non-ascii character from README. This character created an installation problem on Debian (Python 3.4).

3.4.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 returned.

  • Update example of writing custom providers.

  • Update movie lister example miniapp.

  • Update source of coveralls.io badge.

3.4.3

  • Update doc block for Provider.overriding_lock attribute.

3.4.2

  • 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.

3.4.1

  • Update movie lister example miniapp with AbstractFactory provider.

3.4.0

  • Add AbstractCallable provider.

  • Add AbstractFactory provider.

  • Add AbstractSingleton provider.

  • Optimize calling of overridden providers (~15% faster).

3.3.7

  • 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.

3.3.6

  • 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.

3.3.5

  • [Refactoring] Consolidate all containers in dependency_injector.containers module.

  • [Refactoring] Consolidate all providers in dependency_injector.providers module.

3.3.4

  • 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.

3.3.3

  • Update services miniapp example.

3.3.2

  • 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.

3.3.1

  • Add some improvements to the documentation.

3.3.0

  • Add support of Python 3.6.

3.2.5

  • Add description of structure into README.

  • Fix documentation errors.

3.2.4

  • Switch to single version of documentation for getting shorter urls (without /en/stable/). Add appropriate redirects for compatibility with previous links.

  • Update copyright date.

3.2.3

  • Add examples into README.

  • Make minor documentation updates.

3.2.2

  • Change name of version variable to follow PEP8: VERSION -> __version__.

3.2.1

  • Update services miniapp example.

3.2.0

  • Add Configuration provider for late static binding of configuration options.

3.1.5

  • Refactor provider internals: C functions naming scheme and code layout.

  • Add Terrence Brannon (metaperl) to the list of contributors.

3.1.4

  • Move inline functions from class level to module level for removing them from virtual table and enable inlining.

3.1.3

  • Fix flake8 E305 error in examples.

3.1.2

  • Remove public (extern) modifier utils constants.

  • Fix flake8 E305 error in examples.

3.1.1

  • Fix minor typo in README.

3.1.0

  • Add “Services mini application” example.

  • Fix minor error in Factory provider API doc.

3.0.1

  • Add *.c source files under version control.

  • Change keywords.

3.0.0

  • Providers

    1. All providers from dependency_injector.providers package are implemented as C extension types using Cython.

    2. Add BaseSingleton super class for all singleton providers.

    3. Make Singleton provider not thread-safe. It makes performance of Singleton provider 10x times faster.

    4. Add ThreadSafeSingleton provider - thread-safe version of Singleton provider.

    5. Add ThreadLocalSingleton provider - Singleton provider that uses thread-local storage.

    6. Remove provides attribute from Factory and Singleton providers.

    7. Add set_args() and clear_args() methods for Callable, Factory and Singleton providers.

  • Containers

    1. Module dependency_injector.containers was split into submodules without any functional changes.

  • Utils

    1. Module dependency_injector.utils is split into dependency_injector.containers and dependency_injector.providers.

  • Miscellaneous

    1. Remove @inject decorator.

    2. Add makefile (clean, test, build, install, uninstall & publish commands).

    3. Update repository structure:

    1. Sources are moved under src/ folder.

    2. Tests are moved under tests/unit/ folder.

2.2.10

  • Fix typo in README.

2.2.9

  • Add github badges to readme and docs index pages.

  • Update service names in services example miniapp.

  • Create engines & cars example miniapp.

2.2.8

  • Move fixtures to separate module in movie lister example.

2.2.7

  • Fix typo in README.

2.2.6

  • Update README.

  • Update docs index page.

2.2.5

  • Fix typo in README.

2.2.4

  • Update README.

2.2.3

  • Update README.

2.2.2

  • Update README.

2.2.1

  • Update examples.

2.2.0

  • Deprecate inject decorator.

2.1.1

  • Normalize package names by PEP-503.

2.1.0

  • Add ThreadLocalSingleton and DelegatedThreadLocalSingleton providers.

  • Add documentation section about singleton providers and multi-threading.

  • Update API docs of creational providers.

2.0.0

  • Introduce new injections style for Callable, Factory & Singleton providers.

  • Drop providers: Static, Value, Function, Class, Config.

  • Increase performance of making injections in 2 times (+100%).

  • Drop method injections.

  • Simplify providers overriding system.

  • Replace catalogs package with containers module.

  • Drop all backward compatibilities for 1.x.

  • Refactor most of the components.

  • Update documentation.

1.17.0

  • Add add_injections() method to Callable, DelegatedCallable, Factory, DelegatedFactory, Singleton and DelegatedSingleton providers.

  • Fix bug with accessing to declarative catalog attributes from instance level.

1.16.8

  • Fix some typos in introduction section of documentation.

1.16.7

  • Add some changes into introduction section of documentation.

1.16.5

  • Move project to https://github.com/ets-labs/python-dependency-injector.

  • Move project docs to http://python-dependency-injector.ets-labs.org/.

1.16.4

  • Add some documentation improvements.

1.16.1

  • Add @copy decorator for copying declarative catalog providers.

  • Add line numbers for all code samples in documentation.

  • Add “Examples” section into documentation.

  • Add “Movie Lister” example.

  • Add “Services” example.

  • Move project documentation into organisation’s domain (dependency-injector.ets-labs.org).

1.15.2

  • [Refactoring] split catalogs module into smaller modules, catalogs module become a package.

  • [Refactoring] split providers module into smaller modules, providers module become a package.

  • Update introduction documentation.

1.15.1

  • Update package information and documentation.

1.15.0

  • Add Provider.provide() method. Provider.__call__() become a reference to Provider.provide().

  • Add provider overriding context.

  • Update main examples and README.

1.14.11

  • Update README.

1.14.10

  • Add “catalog-providing-callbacks” example and several tests for it.

1.14.9

  • Add override decorator in providers module.

  • Add storing of originally decorated instance in inject decorator.

  • Add several refactorings.

  • Switch to pydocstyle tool from pep257.

1.14.8

  • Update README.

1.14.7

  • Add one more example in README (inline providers and injections).

1.14.6

  • Add cls alias for provides attributes of Factory, DelegatedFactory, Singleton and DelegatedSingleton providers.

1.14.5

  • Fix typo in provider’s error message.

1.14.4

  • Update documentation.

1.14.3

  • Optimize internals of providers.

  • Optimize Callable provider.

  • Optimize Factory provider.

  • Optimize Singleton provider.

1.14.2

  • Update documentation and description.

1.14.1

  • Add meta description & keywords on docs index page.

1.14.0

  • Drop support of Python 3.2.

1.13.2

  • Update PyPi info.

1.13.1

1.13.0

  • Add DelegatedCallable provider.

  • Add DelegatedFactory provider.

  • Add DelegatedSingleton provider.

  • Add some documentation improvements.

1.12.0

  • Add possibility to specialize Factory provided type.

  • Add possibility to specialize Singleton provided type.

  • Add possibility to specialize DeclarativeCatalog provider type.

  • Add possibility to specialize DynamicCatalog provider type.

  • Make some refactorings for providers.

1.11.2

  • Improve representation of providers and injections.

1.11.1

Previous state of Dependency Injector framework (0.11.0 version) is considered to be production ready / stable, so current release is considered to be the first major release.

  • Increase major version.

  • Backward compatibility with all previous versions above 0.7.6 has been saved.

0.11.0

  • Rename AbstractCatalog to DeclarativeCatalog (with backward compatibility).

  • Rename catalog module to catalogs with backward compatibility.

  • Implement dynamic binding of providers for DeclarativeCatalog.

  • Add DynamicCatalog.

  • Change restrictions for providers-to-catalogs bindings - provider could be bound to several catalogs with different names.

  • Restrict overriding of providers by themselves.

  • Restrict overriding of catalogs by themselves.

  • Make DeclarativeCatalog.last_overriding attribute to be None by default.

  • Make Provider.last_overriding attribute to be None by default.

  • Refactor catalogs and providers modules.

  • Add API documentation

  • Improve user’s guides and examples.

0.10.5

  • Add more representable implementation for AbstractCatalog and AbstractCatalog.Bundle.

0.10.4

  • Remove VERSION file from MANIFEST.in.

0.10.3

  • Update example docblocks.

0.10.2

  • Fix bug with injecting entities that implement __getattr__.

0.10.1

  • Update some examples.

0.10.0

  • Add functionality for creating AbstractCatalog provider bundles.

  • Improve AbstractCatalog inheritance.

  • Improve AbstractCatalog overriding.

  • Add images for catalog “Writing catalogs” and “Operating with catalogs” examples.

  • Add functionality for using positional argument injections with Factory, Singleton, Callable providers and inject decorator.

  • Add functionality for decorating classes with @inject.

  • Add Singleton.injections attribute that represents a tuple of all Singleton injections (including args, kwargs, attributes and methods).

  • Add Callable.injections attribute that represents a tuple of all Callable injections (including args and kwargs).

  • Add optimization for Injection.value property that will compute type of injection once, instead of doing this on every call.

  • Add VERSION constant for verification of currently installed version.

  • Add support of Python 3.5.

  • Add support of six 1.10.0.

  • Add minor refactorings and code style fixes.

0.9.5

  • Change provider attributes scope to public.

  • Add Factory.injections attribute that represents a tuple of all Factory injections (including kwargs, attributes and methods).

0.9.4

  • Add minor documentation fixes.

0.9.3

  • Implement thread safety.

0.9.2

  • Add minor refactorings.

0.9.1

  • Add simplified syntax of kwarg injections for di.Factory and di.Singleton providers: di.Factory(SomeClass, dependency1=injectable_provider_or_value).

  • Add simplified syntax of kwarg injections for di.Callable provider: di.Callable(some_callable, dependency1=injectable_provider_or_value)

  • Add simplified syntax of kwarg injections for @di.inject decorator: @di.inject(dependency1=injectable_provider_or_value).

  • Optimize @di.inject() decorations when they were made several times for the same callback.

  • Add minor refactorings.

  • Fix of minor documentation issues.

0.8.1

  • Objects is renamed to Dependency Injector.

0.7.8

  • Fixing @inject import bug in examples.

0.7.7

  • Fixing minor bug in concept example.

0.7.6

  • Adding support of six from 1.7.0 to 1.9.0.

  • Factory / Singleton providers are free from restriction to operate with classes only. This feature gives a change to use factory method and functions with Factory / Singleton providers.

  • All attributes of all entities that have to be protected was renamed using _protected manner.

  • Providers extending was improved by implementing overriding logic in Provider.__call__() and moving providing logic into Provider._provide().

  • NewInstance provider was renamed to Factory provider. NewInstance still can be used, but it considered to be deprecated and will be removed in further releases.

  • @inject decorator was refactored to keep all injections in _injections attribute of decorated callback. It will give a possibility to track all the injections of particular callbacks and gives some performance boost due minimizing number of calls for doing injections.

  • A lot of documentation updates were made.

  • A lot of examples were added.

  • Some minor refactorings were done.

Previous versions

  • While Objects was in alpha state, changes were not tracked.