python-dependency-injector/docs/main/changelog.rst

1566 lines
47 KiB
ReStructuredText
Raw Normal View History

2015-07-28 09:46:35 +03:00
Changelog
=========
2015-08-31 16:31:38 +03:00
This document describes all the changes in *Dependency Injector* framework
that were made in every particular version.
2015-08-31 16:31:38 +03:00
From version 0.7.6 *Dependency Injector* framework strictly
follows `Semantic versioning`_
2021-02-09 15:35:55 +03:00
4.20.2
------
- Move docs on container "self" injections to "Providers" section.
2021-02-07 22:17:40 +03:00
4.20.1
------
- Refactor containers module.
2021-02-07 22:14:22 +03:00
4.20.0
------
- Add container "self" injections.
See issue: `#364 <https://github.com/ets-labs/python-dependency-injector/issues/364>`_.
Thanks to `@shaunc <https://github.com/shaunc>`_ for suggesting the feature.
2021-02-06 02:28:26 +03:00
4.19.0
------
- Add ``singleton.full_reset()`` method to reset all underlying singleton providers.
- Fix ``container.reset_singleton()`` to reset all provider types, not only ``Singleton``.
- Improve ``container.traverse(types=[...])`` and ``provider.traverse(types=[...])`` typing stubs
to return ``types`` -typed iterator.
- Update docs on creating custom providers with a requirement to specify ``.related`` property.
2021-02-06 01:23:10 +03:00
4.18.0
------
- Add ``container.reset_singleton()`` method to reset container singletons.
- Refactor ``container.apply_container_providers_overridings()`` to use ``container.traverse()``.
This enables deep lazy initialization of ``Container`` providers.
2021-02-05 16:30:27 +03:00
- Add tests for ``Selector`` provider.
2021-02-05 16:48:25 +03:00
- Add tests for ``ProvidedInstance`` and ``MethodCaller`` providers.
- Update Makefile to make Python 3 tests to be a default test command: ``make test``.
2021-02-05 16:30:27 +03:00
2021-02-05 02:19:40 +03:00
4.17.0
------
- Add ``FastAPI`` + ``SQLAlchemy`` example.
Thanks to `@ShvetsovYura <https://github.com/ShvetsovYura>`_ for providing initial example:
`FastAPI_DI_SqlAlchemy <https://github.com/ShvetsovYura/FastAPI_DI_SqlAlchemy>`_.
2021-02-03 23:40:41 +03:00
4.16.0
------
2021-02-03 23:33:16 +03:00
- Add container base class ``containers.Container``. ``DynamicContainer``
and ``DeclarativeContainer`` become subclasses of the ``Container``.
See issue: `#386 <https://github.com/ets-labs/python-dependency-injector/issues/386>`_.
Thanks to `@ventaquil <https://github.com/ventaquil>`_ for reporting the issue.
2021-02-03 17:22:40 +03:00
4.15.0
------
- Add ``Configuration.from_pydantic()`` method to load configuration from a ``pydantic`` settings.
2021-02-01 17:55:21 +03:00
4.14.0
------
- Add container providers traversal.
- Fix an issue with ``container.init_resource()`` and ``container.shutdown_resource()`` ignoring
nested resources that are not present on the root level.
See issue: `#380 <https://github.com/ets-labs/python-dependency-injector/issues/380>`_.
Thanks to `@approxit <https://github.com/approxit>`_ for finding and reporting the issue.
- Add ``.provides`` attribute to ``Singleton`` and its subclasses.
It's a consistency change to make ``Singleton`` match ``Callable``
and ``Factory`` interfaces.
- Add ``.initializer`` attribute to ``Resource`` provider.
- Update string representation of ``Resource`` provider.
2021-01-30 00:58:30 +03:00
4.13.2
------
- Fix PyCharm typing warning "Expected type 'Optional[Iterable[ModuleType]]',
got 'List[module.py]' instead" in ``container.wire()`` method.
2021-01-30 00:42:30 +03:00
4.13.1
------
- Fix declarative container metaclass bug: parent container providers replaced child container providers.
See issue: `#367 <https://github.com/ets-labs/python-dependency-injector/issues/367>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for finding and report the issue.
2021-01-29 21:50:53 +03:00
4.13.0
------
- Add ``default`` argument to the dependency provider: ``Dependency(..., default=...)``.
See issue: `#336 <https://github.com/ets-labs/python-dependency-injector/issues/336>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for providing the use case.
2021-01-29 03:50:35 +03:00
4.12.0
------
- Add wiring import hook that auto-wires dynamically imported modules.
See issue: `#365 <https://github.com/ets-labs/python-dependency-injector/issues/365>`_.
Thanks to `@Balthus1989 <https://github.com/Balthus1989>`_ for providing a use case.
2021-01-28 16:44:10 +03:00
4.11.3
------
- Replace weakrefs with normal refs in ``ConfigurationOption`` to support
``Container().provider()`` use case. Test that it does not introduce a memory leak.
See issue: `#358#issuecomment-764482059 <https://github.com/ets-labs/python-dependency-injector/issues/358#issuecomment-764482059>`_.
Many thanks to `@Minitour <https://github.com/Minitour>`_ for reporting the issue.
2021-01-27 22:03:08 +03:00
4.11.2
------
- Fix a bug in ``providers.Container`` when it's declared not at class root level.
See issue `#379 <https://github.com/ets-labs/python-dependency-injector/issues/379>`_.
Many thanks to `@approxit <https://github.com/approxit>`_ for reporting the issue.
4.11.1
------
- Fix a bug in ``@containers.copy`` to improve replacing of subcontainer providers.
See issue `#378 <https://github.com/ets-labs/python-dependency-injector/issues/378>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for reporting the issue.
2021-01-27 15:39:38 +03:00
4.11.0
------
- Add ``loader`` argument to the configuration provider ``Configuration.from_yaml(..., loader=...)``
to override the default YAML loader.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for suggesting an improvement.
- Make security improvement: change default YAML loader to the custom ``yaml.SafeLoader`` with a support
of environment variables interpolation.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for suggesting an improvement.
- Update configuration provider ``.from_*()`` methods to raise an exception in strict mode if
configuration file does not exist or configuration data is undefined.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for suggesting an improvement.
- Add ``required`` argument to the configuration provider ``.from_*()`` methods to specify
mandatory configuration sources.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for suggesting an improvement.
- Fix a bug with asynchronous injections: async providers do not work with async dependencies.
See issue: `#368 <https://github.com/ets-labs/python-dependency-injector/issues/368>`_.
Thanks `@kolypto <https://github.com/kolypto>`_ for the bug report.
2021-01-21 19:20:21 +03:00
- Refactor asynchronous injections.
- Add extra tests for asynchronous injections.
2021-01-27 15:39:38 +03:00
- Migrate CI to Github Actions.
2021-01-20 17:04:11 +03:00
4.10.3
------
- Fix a bug in the ``Configuration`` provider: strict mode didn't work when provider
is overridden by ``None``.
See issue: `#358#issuecomment-761607432 <https://github.com/ets-labs/python-dependency-injector/issues/358#issuecomment-761607432>`_.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for reporting the issue.
2021-01-20 01:50:46 +03:00
4.10.2
------
- Fix a bug in ``Resource`` that cause failure when async resource depends on
another async resource.
See issue `#361 <https://github.com/ets-labs/python-dependency-injector/issues/361>`_.
Thanks `@kolypto <https://github.com/kolypto>`_ for the bug report.
2021-01-19 05:02:56 +03:00
4.10.1
------
- Fix a Python 3.9 specific bug in ``wiring`` module: introspection doesn't work for
builtin ``types.GenericAlias``. This resulted in wiring failure for modules
importing ``queue.Queue``.
See issue `#362 <https://github.com/ets-labs/python-dependency-injector/issues/362>`_.
Thanks `@ventaquil <https://github.com/ventaquil>`_ for the bug report.
- Switch Coveralls reporting Travis Job to run on Python 3.9.
2021-01-16 16:55:00 +03:00
4.10.0
------
- Add ``strict`` mode and ``required`` modifier for ``Configuration`` provider.
See issue `#341 <https://github.com/ets-labs/python-dependency-injector/issues/341>`_.
Thanks `ms-lolo <https://github.com/ms-lolo>`_ for the feature request.
2021-01-16 00:22:12 +03:00
4.9.1
-----
- Fix a bug in the ``Configuration`` provider to correctly handle undefined values.
See issue `#358 <https://github.com/ets-labs/python-dependency-injector/issues/358>`_.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for reporting the issue.
2021-01-15 15:23:45 +03:00
4.9.0
-----
- Add ``.dependencies`` attribute to the ``DeclarativeContainer`` and ``DynamicContainer``.
It returns dictionary of container ``Dependency`` and ``DependenciesContainer`` providers.
See issue `#357 <https://github.com/ets-labs/python-dependency-injector/issues/357>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for suggesting the feature.
2021-01-15 14:44:41 +03:00
4.8.3
-----
- Fix a bug in the ``Configuration`` provider to correctly handle overriding by ``None``.
See issue `#358 <https://github.com/ets-labs/python-dependency-injector/issues/358>`_.
Many thanks to `Stefano Frazzetto <https://github.com/StefanoFrazzetto>`_ for reporting the issue.
2021-01-14 01:08:26 +03:00
4.8.2
-----
- Fix ``Container`` provider to apply context overridings on root container initialization.
See issue `#354 <https://github.com/ets-labs/python-dependency-injector/issues/354>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for submitting the issue.
- Hotfix for version ``4.8.0``: fix side effect in ``Container`` provider overriding.
2021-01-13 01:50:11 +03:00
4.8.1
-----
- Fix declarative container multi-level inheritance issue.
See issue `#350 <https://github.com/ets-labs/python-dependency-injector/issues/350>`_.
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for submitting the issue.
2021-01-12 16:42:14 +03:00
4.8.0
-----
- Add support of overriding ``Container`` provider.
See issue `#354 <https://github.com/ets-labs/python-dependency-injector/issues/354>`_.
2021-01-13 01:50:11 +03:00
Many thanks to `Shaun Cutts <https://github.com/shaunc>`_ for submitting the issue.
2021-01-12 16:42:14 +03:00
2021-01-11 16:19:34 +03:00
4.7.0
-----
- Add container injection support for wiring.
2021-01-11 04:02:46 +03:00
4.6.1
-----
- Add Disqus comments widget to the provider's async injections docs page.
2021-01-11 03:31:59 +03:00
4.6.0
-----
Async resources and injections (#352) * Add support of async injections into wiring * Add support of async functions and async generators for resources * Update resource provider typing stub for stutdown * Add resource base class for async resources * Fix tests * Add tests for async injections in wiring @inject * Refactor provider tests * Add tests for async resources * Rework async resources callbacks to .add_done_callback() style (fixes pypy3 issue) * Add awaits into async resource class test * Refactor FastAPI tests * Implement async resources initialization in container * Move container async resource tests to a separate module for Python 3.6+ * Fix init async resources in container on Python 2 * Add first dirty async injections implementation * Fix isawaitable error * Turm asyncio import to conditional for safer Py2 usage * Refactor kwargs injections * Implement positional injections, add tests and make refactoring * Implement attribute injections and add tests * Add singleton implementation + tests for all singleton types * Implement injections in thread-local and thread-safe singleton providers * Update .provided + fix resource concurent initialization issue * Implement async mode for Dependency provider * Add async mode for the provider * Add overload for Factory typing * Add typing stubs for async resource * Refactor abstract* providers __call__() * Add async mode API + tests * Add typing stubs & tests for async mode API * Add tests for async mode auto configuration * Refactor Provider.__call__() to use async mode api * Refactor Dependency provider to use async mode api * Add tests for Dependency provider async mode * Add support of async mode for FactoryAggregate provider + tests * Refactor Singleton provider to use async mode api * Refactor ThreadSafeSingleton provider to use async mode api * Refactor ThreadLocalSingleton provider to use async mode api * Finish Singleton refactoring to use async mode api * Refactor Resource provider to use async mode api * Add Provider.async_() method + tests * Add typing stubs for async_() method + tests * Refactor Singleton typing stubs to return singleton from argument methods * Refactor provider typing stubs * Improve resource typing stub * Add tests for async context kwargs injections * Fix typo in resource provider tests * Cover shutdown of not initialized resource * Add test to cover resource initialization with an error * Fix Singleton and ThreadLocalSingleton to handle initialization errors * Add FastAPI + Redis example * Make cosmetic fixes to FastAPI + Redis example * Add missing development requirements * Update module docblock in fastapi + redis example * Add FastAPI + Redis example docs * Add references to FastAPI + Redis example * Refactor resource docs * Add asynchronous resources docs * Refactor wiring docs * Add async injections docs for wiring * Add async injections page and update docs index, readme, and key features pages * Add providers async injections example * Add docs on provider async mode enabling * Reword async provider docs * Add provider async mode docs * Add cross links to async docs * Mute flake8 errors in async provider examples * Update changelog * Make cosmetic fix to containers.pyx
2021-01-11 03:26:15 +03:00
- Add support of async injections for providers.
- Add support of async injections for wiring.
- Add support of async initializers for ``Resource`` provider.
- Add ``FastAPI`` + ``Redis`` example.
- Add ARM wheel builds.
See issue `#342 <https://github.com/ets-labs/python-dependency-injector/issues/342>`_ for details.
- Fix a typo in `ext.flask` deprecation warning.
See PR `#345 <https://github.com/ets-labs/python-dependency-injector/pull/345>`_ for details.
Thanks to `Fotis Koutoupas <https://github.com/kootoopas>`_ for the fix.
2021-01-11 03:31:01 +03:00
- Update copyright year.
2020-12-11 02:28:29 +03:00
4.5.4
-----
- Fix manylinux wheels uploading issue.
See issue `#333 <https://github.com/ets-labs/python-dependency-injector/issues/333>`_ for details.
Thanks to `Richard Jones <https://github.com/RichardDRJ>`_ for reporting the issue.
2020-12-06 06:14:35 +03:00
4.5.3
-----
- Fix ``4.5.2`` degradation bug in wiring ``@inject`` with not working ``FastAPI.Depends`` directive.
See issue `#331 <https://github.com/ets-labs/python-dependency-injector/issues/331>`_ for details.
Thanks to `Juan Esteban Marín <https://github.com/juanmarin96>`_ for reporting the issue.
- Add ``FastAPI`` tests.
2020-12-05 04:18:39 +03:00
4.5.2
-----
- Fix a bug in wiring ``@inject`` with not properly working ``FastAPI.Depends`` directive.
See issue `#330 <https://github.com/ets-labs/python-dependency-injector/issues/330>`_ for details.
Thanks to `Lojka-oops <https://github.com/Lojka-oops>`_ for reporting the issue.
2020-11-21 02:16:29 +03:00
4.5.1
-----
- Fix flake8 issue in ``Commands and Handlers`` example.
2020-11-21 02:10:04 +03:00
4.5.0
-----
- Add support of non-string keys for ``Dict`` provider.
2020-11-18 19:13:31 +03:00
- Add simple ``FastAPI`` example.
2020-11-21 02:09:34 +03:00
- Add ``Commands and Handlers`` example from
issue `#327 <https://github.com/ets-labs/python-dependency-injector/issues/327>`_.
- Add extra typing test for provided instance of ``DependenciesContainer`` provider.
2020-11-18 19:13:31 +03:00
2020-11-18 07:58:44 +03:00
4.4.1
-----
2020-11-18 07:44:32 +03:00
- Improve ``FastAPI`` integration: handle ``Depends(Provide[...])``.
2020-11-18 07:46:30 +03:00
- Update ``FastAPI`` example.
2020-11-18 07:50:56 +03:00
- Remove a typo from the ``Flask`` tutorial.
2020-11-18 07:44:32 +03:00
2020-11-16 02:19:34 +03:00
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.
2020-11-13 00:31:09 +03:00
4.3.8
-----
- Add a hotfix to support wiring for ``FastAPI`` endpoints.
2020-11-11 01:02:42 +03:00
4.3.7
-----
- Fix race in ``ThreadSafeSingleton``. Many thanks to
`Dmitry Rassoshenko aka rda-dev <https://github.com/rda-dev>`_ for the pull request
(See PR `#322 <https://github.com/ets-labs/python-dependency-injector/pull/322>`_).
2020-11-05 20:37:25 +03:00
4.3.6
-----
- Fix changelog typo.
2020-11-05 20:23:47 +03:00
4.3.5
-----
- Fix a bug in ``wiring`` module that caused multiple imports of the modules
when ``.wire(packages=[...])`` is used
(See issue `#320 <https://github.com/ets-labs/python-dependency-injector/issues/320>`_). Thanks
2020-11-05 20:37:25 +03:00
to `Federico iskorini <https://github.com/iskorini>`_ for reporting the issue.
2020-11-05 20:23:47 +03:00
2020-11-05 18:20:23 +03:00
4.3.4
-----
- Fix a bug in ``Configuration`` provider that resulted in not working ``.reset_override()``
(See issue `#319 <https://github.com/ets-labs/python-dependency-injector/issues/319>`_). Thanks
to `Jun lust4life <https://github.com/lust4life>`_ for reporting the issue and suggesting a fix.
2020-11-04 00:06:42 +03:00
4.3.3
-----
- Fix a bug in ``wiring`` with improper patching of ``@classmethod`` and ``@staticmethod`` decorated methods
(See issue `#318 <https://github.com/ets-labs/python-dependency-injector/issues/318>`_).
2020-10-30 23:56:13 +03:00
4.3.2
-----
- Fix a bug in ``wiring`` with mistakenly initialized and shutdown resource with ``Closing``
marker on context argument providing.
2020-10-30 06:00:43 +03:00
4.3.1
-----
- Fix README.
2020-10-30 05:57:14 +03:00
4.3.0
-----
- Implement per-function execution scope for ``Resource`` provider in tandem
with ``wiring.Closing``.
2020-10-29 22:48:04 +03:00
4.2.0
-----
- Add support of Python 3.9.
- Update readme.
2020-10-29 05:30:52 +03:00
4.1.8
-----
- Update asyncio daemon, single- and multi-container examples to use ``Resource`` provider.
2020-10-29 04:02:21 +03:00
4.1.7
-----
- Add CI job to build and push documentation to S3 bucket.
2020-10-28 21:23:00 +03:00
4.1.6
2020-10-28 20:11:07 +03:00
-----
2020-10-28 20:44:11 +03:00
- Fix wiring of multiple containers
(see issue `#313 <https://github.com/ets-labs/python-dependency-injector/issues/313>`_).
Thanks to `iskorini <https://github.com/iskorini>`_ for reporting the issue.
2020-10-28 20:11:07 +03:00
- Fix wiring for ``@classmethod``.
2020-10-28 00:48:05 +03:00
4.1.5
-----
- Fix Travis CI windows and MacOS builds.
2020-10-27 21:36:11 +03:00
4.1.4
-----
- Fix version of ``cibuildwheel==1.63``.
- Update Travis CI webhooks to fix builds triggering.
2020-10-27 21:05:16 +03:00
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.
2020-10-27 20:28:02 +03:00
4.1.2
-----
- Bump version of ``cibuildwheel>=1.5.1`` to resolve Windows build problem.
2020-10-27 20:28:02 +03:00
2020-10-26 20:39:13 +03:00
4.1.1
-----
- Fix a few typos in ``Resource`` provider docs.
2020-10-25 03:57:48 +03:00
4.1.0
-----
- Add ``Resource`` provider.
- Add ``Dict`` provider.
- "Un-deprecate" ``@containers.override()`` and ``@containers.copy()`` decorators (
see `Issue 301 <https://github.com/ets-labs/python-dependency-injector/issues/301>`_
for more information).
2020-10-22 00:01:31 +03:00
- Add favicon.
2020-10-21 23:54:10 +03:00
- Remove redirects that occur while getting badge images to optimize docs load speed.
2020-10-22 00:06:12 +03:00
- Update license year.
- Update short description on PyPI.
2020-10-21 23:54:10 +03:00
2020-10-21 00:50:20 +03:00
4.0.6
-----
- Fix wiring for top-level package ``__init__.py``.
2020-10-20 00:35:12 +03:00
4.0.5
-----
- Move ``.provided`` attribute to ``providers.Provider``.
- Update all links in documentation and examples to use ``https://`` instead of ``http``.
2020-10-19 05:27:53 +03:00
4.0.4
-----
- Fix typing stubs for ``container.override()`` method.
2020-10-17 04:44:12 +03:00
4.0.3
-----
- Deprecate ``@containers.override()`` and ``@containers.copy()`` decorators.
- Update changelog of version ``4.0.0`` so it lists all deprecated features.
2020-10-16 23:38:37 +03:00
4.0.2
-----
- Fix typing stubs for ``@container.override()`` and ``@containers.copy()`` decorators (
see `PR 302 <https://github.com/ets-labs/python-dependency-injector/pull/302>`_). Thanks
to `JarnoRFB <https://github.com/JarnoRFB>`_ for reporting the issue.
2020-10-16 21:10:14 +03:00
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 <https://github.com/ets-labs/python-dependency-injector/pull/300>`_). Fix
was provided by `JarnoRFB <https://github.com/JarnoRFB>`_. Many thanks to you again,
JarnoRFB.
Develop 4.0 (#298) * Add wiring (#294) * Add wiring module * Fix code style * Fix package test * Add version fix * Try spike for 3.6 * Try another fix with metaclass * Downsample required version to 3.6 * Introduce concept with annotations * Fix bugs * Add debug message * Add extra tests * Add extra debugging * Update config resolving * Remove 3.6 generic meta fix * Fix Flake8 * Add spike for 3.6 * Add Python 3.6 spike * Add unwire functionality * Add support of corouting functions * Bump version to 4.0 * Updaet demo example * Add pydocstyle ignore for demo * Add flake8 ignore for demo * Update aiohttp example * Update flask example * Rename aiohttp example directory * Rename views module to handlers in aiohttp example * Add sanic example * Remove not needed images * Update demo * Implement wiring for Provide[foo.provider] * Implement Provide[foo.provided.bar.baz.call()] * Make flake8 happy * Wiring refactoring (#296) * Refactor wiring * Add todos to wiring * Implement wiring of config invariant * Implement sub containers wiring + add tests * Add test for wiring config invariant * Add container.unwire() typing stub * Deprecate ext package modules and remove types module * Deprecate provider.delegate() method * Add __all__ for wiring module * Add protection for wiring only declarative container instances * Bump version to 4.0.0a2 * Add wiring docs * Add wiring of class methods * Remove unused import * Add a note on individuals import to wiring docs * Add minor improvement to wiring doc * Update DI in Python page * Update key features * Update README concep and FAQ * Add files via upload * Update README.rst * Update README.rst * Update README.rst * Update docs index page * Update README * Remove API docs for flask and aiohttp ext * Add wiring API docs * Update docs index * Update README * Update readme and docs index * Change wording in README * Django example (#297) * Add rough django example * Remove sqlite db * Add gitignore * Fix flake8 and pydocstyle errors * Add tests * Refactor settings * Move web app to to the root of the project * Add bootstrap 4 * Add doc blocks for web app * Add coverage * Fix typo in flask * Remove not needed newlines * Add screenshot * Update django app naming * Add django example to the docs * Update changelog * Update Aiohttp example * Add sanic example to the docs * Make a little fix in django example docs page * Add flask example to the docs * Add aiohttp example to the docs * Update installation docs page * Fix .delegate() deprecation * Refactor movie lister to use wiring * Make micro cosmetic changes to flask, aiohttp & sanic examples * Refactor single container example to use wiring * Refactor multiple container example to use wiring * Add return type to main() in application examples * Refactor decoupled packages example to use wiring * Refactor code layout for DI demo example * Update wiring feature message * Add more links to the examples * Change code layout in miniapps * Update sanic example * Update miniapp READMEs * Update wiring docs * Refactor part of cli tutorial * Refactor CLI app tutorial * Update test coverage results in movie lister example and tutorial * Make some minor updates to aiohttp and cli tutorials * Refactor flask tutorial * Make cosmetic fix in flask example * Refactor Flask tutorial: Connect to the GitHub * Refactor Flask tutorial: Search service * Refactor Flask tutorial: Inject search service into view * Refactor Flask tutorial: Make some refactoring * Finish flask tutorial refactoring * Update tutorials * Refactor asyncio monitoring daemon example application * Fix tutorial links * Rename asyncio miniapp * Rename tutorial image dirs * Rename api docs tol-level page * Refactor initial sections of asyncio daemon tutorial * Refactor asyncio tutorial till Example.com monitor section * Refactor asyncio tutorial example.com monitor section * Refactor asyncio tutorial httpbin.org monitor tutorial * Refactor tests section of asyncio daemon tutorial * Update conclusion of asyncio daemon tutorial * Rename tutorial images * Make cosmetic update to flask tutorial * Refactor aiohttp tutorial: Minimal application section * Refactor aiohttp tutorial: Giphy API client secion * Refactor aiohttp tutorial secion: Make the search work * Refactor aiohttp tutorial tests section * Refactor aiohttp tutorial conclusion * Upgrade Cython to 0.29.21 * Update changelog * Update demo example * Update wording on index pages * Update changelog * Update code layout for main demo
2020-10-09 22:16:27 +03:00
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).
2020-09-14 03:51:10 +03:00
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.
2020-09-14 03:51:10 +03:00
- Update README.
2020-09-10 06:48:08 +03:00
3.43.1
------
- Fix a typo in README.
2020-09-10 06:36:13 +03:00
3.43.0
------
- Update API documentation.
2020-09-10 04:34:30 +03:00
- Remove not relevant "speech" example.
2020-09-10 06:36:13 +03:00
- Fix a few typos.
2020-09-10 04:34:30 +03:00
2020-09-10 01:02:37 +03:00
3.42.0
------
2020-09-10 00:39:49 +03:00
- Update "DI in Python" documentation page.
- Delete "What is DI?" documentation page.
2020-09-10 00:39:49 +03:00
- Delete "engines cars" example mini app.
2020-09-10 00:53:19 +03:00
- Update README.
2020-09-10 00:39:49 +03:00
2020-09-08 05:07:09 +03:00
3.41.0
------
2020-09-07 19:34:49 +03:00
- Refactor "use cases" example.
2020-09-07 18:50:32 +03:00
- Refactor "password hashing" example.
- Refactor "chained factories" pattern example.
- Refactor "factory of factories" pattern example.
2020-09-07 18:53:03 +03:00
- Fix declarative container mypy stub to ``__init__`` to accept not only providers.
- Refactor main module of the "decoupled packages" example.
2020-09-08 05:02:33 +03:00
- Delete "api client" example mini app.
2020-09-08 05:04:50 +03:00
- Delete "mail service" example mini app.
2020-09-07 18:50:32 +03:00
2020-09-07 04:54:58 +03:00
3.40.0
------
- Add "Decoupled packages" example.
- Delete "Bundles" examples mini application.
2020-09-05 06:22:58 +03:00
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.
2020-09-04 06:25:32 +03:00
3.38.1
------
- Fix README.
2020-09-04 06:22:11 +03:00
3.38.0
------
- Update "What is What is dependency injection?" documentation page.
2020-09-04 06:22:11 +03:00
- Update README.
- Fix a bunch of typos.
2020-09-04 01:05:45 +03:00
3.37.0
------
- Update index documentation page.
2020-09-04 01:03:21 +03:00
- Make multiple improvements and fixes for the providers documentation.
2020-09-03 20:36:19 +03:00
- Update "Key Features" documentation page.
- Remove "Structure of Dependency Injector" documentation page.
2020-09-03 23:26:32 +03:00
- Edit "Feedback" documentation page.
2020-09-03 20:36:19 +03:00
2020-09-03 04:28:09 +03:00
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.
2020-09-03 04:28:09 +03:00
- 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.
2020-09-02 04:58:13 +03:00
3.35.1
------
- Fix minor issues in the providers documentation and examples.
2020-09-02 04:40:14 +03:00
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.
2020-09-01 23:05:58 +03:00
2020-09-01 04:29:05 +03:00
3.34.0
------
- Update ``Factory`` provider documentation.
- Rework ``Factory`` provider examples.
2020-08-27 05:25:22 +03:00
3.33.0
------
- Add typing stubs.
2020-08-26 23:35:31 +03:00
3.32.3
------
- Fix few typos on README and docs main pages.
2020-08-26 23:24:59 +03:00
3.32.2
------
- Make a fix in the factory delegation example (thanks to
`Joël Bourgault <https://github.com/ojob>`_ for finding and reporting the issue).
2020-08-25 17:27:24 +03:00
3.32.1
------
- Update DI Demo 2 example and READ to make typed configuration option injection.
2020-08-24 20:38:08 +03:00
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.
2020-08-21 04:59:09 +03:00
3.31.0
------
- Add a feature that helps to inject provided instance attribute, item, or method call result
(see `Issue 281 <https://github.com/ets-labs/python-dependency-injector/issues/281>`_). Design
for this feature was provided by `JarnoRFB <https://github.com/JarnoRFB>`_. Many thanks to you,
JarnoRFB.
2020-08-16 08:16:25 +03:00
3.30.4
------
- Update README.
2020-08-16 08:13:32 +03:00
3.30.3
------
- Update README.
- Update containers documentation and examples.
2020-08-14 05:57:34 +03:00
3.30.2
------
- Update README.
2020-08-14 04:53:13 +03:00
3.30.1
------
- Update README.
- Add one more example.
2020-08-13 00:06:40 +03:00
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.
2020-08-11 05:32:29 +03:00
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.
2020-08-10 22:50:51 +03:00
3.28.1
------
- Fix typos in the ``asyncio`` + ``Dependency Injector`` monitoring daemon tutorial.
2020-08-08 21:49:08 +03:00
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+.
2020-08-06 23:42:49 +03:00
3.27.0
------
- Add deep init injections overriding for ``Factory`` provider.
- Add ``asyncio`` monitoring daemon example.
2020-08-06 23:42:49 +03:00
2020-08-04 01:08:53 +03:00
3.26.0
------
- Add configuration itemselector feature (see
`Issue 274 <https://github.com/ets-labs/python-dependency-injector/issues/274>`_).
- Re-design ``Configuration`` provider implementation.
- Update ``giphynav-aiohttp`` to remove doubled "if not query" (many thanks to
`Oleg Baranov <https://github.com/mrbish>`_ for the feedback).
2020-07-30 20:53:37 +03:00
3.25.1
------
- Fix ``aiohttp`` tutorial typos.
2020-07-30 05:20:34 +03:00
3.25.0
------
- Add ``aiohttp`` tutorial.
- Fix ``Flask`` tutorial typos and change some wording.
2020-07-29 19:18:09 +03:00
3.24.1
------
- Update Google Search Console verification meta tag.
- Update meta description.
2020-07-29 02:26:41 +03:00
3.24.0
------
- Add ``Aiohttp`` integration module ``dependency_injector.ext.aiohttp``.
- Add ``Aiohttp`` + ``Dependency Injector`` example ``giphynav-aiohttp``.
2020-07-24 03:49:08 +03:00
3.23.2
------
- Fix ``Flask`` tutorial code issues, typos and change some wording.
2020-07-22 19:17:37 +03:00
3.23.1
------
- Fix an issue with creating ``Dependency`` provider with ``abc.ABCMeta``.
Thanks to `awaizman1 <https://github.com/awaizman1>`_. More info:
`Issue #266 <https://github.com/ets-labs/python-dependency-injector/issues/266>`_,
`PR #267 <https://github.com/ets-labs/python-dependency-injector/pull/267>`_.
2020-07-21 00:02:32 +03:00
3.23.0
------
- Add ``Flask`` tutorial.
- Add PyPI classifiers.
2020-07-18 07:45:06 +03:00
3.22.0
------
2020-07-18 07:44:11 +03:00
- Migrate docs to ``alabaster`` theme.
- Add ``Bootstrap`` extension to the ``ghnav-flask`` example.
- Add stubs for the tutorials to the docs.
2020-07-14 06:29:32 +03:00
3.21.2
------
- Hotfix changelog typo.
3.21.1
2020-07-14 06:09:42 +03:00
------
- Hotfix ``ghnav-flask`` example to read Github token from environment variable.
2020-07-14 05:50:02 +03:00
3.21.0
------
2020-07-14 05:45:15 +03:00
- Re-design ``Flask`` integration.
- Make cosmetic fixes for ``Selector`` provider docs.
2020-07-11 19:42:55 +03:00
3.20.1
------
- Hotfix Windows builds.
2020-07-11 19:16:08 +03:00
3.20.0
------
- Add ``Flask`` integration module ``dependency_injector.ext.flask``.
Readme update (#263) * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Add files via upload * Update README.rst * Rename Blank Diagram (1).svg to di-map.svg * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Add files via upload * Rename Blank Diagram (2).svg to di-map2.svg * Update README.rst * Update README.rst * Update README.rst * Update README.rst * Add files via upload * Add files via upload * Rename README.svg to di-map3.svg * Update README.rst * Add files via upload * Rename README - Page 3.svg to di-map4.svg * Update README.rst * Add files via upload * Rename README - Copy of Page 3.svg to di-map5.svg * Update README.rst * Delete di-map.svg * Delete di-map2.svg * Delete di-map3.svg * Delete di-map4.svg * Update README.rst * Update README.rst * Add Github Navigator - Flask application * Do more refactoring for ghnav-flask * More refactoring * Update README * Add tests * Update readme * Add Flask extension * Add Factory.provides attribute * Add Flask extension module * User flask extension in githubnavigator example * Add README for ghnav-flask * Update ghnav-flask README * Update ghnav-flask README * Update README with ghnav container example * Move ghnav-flask to miniapps/ folder * Fix auth token reading from env for ghnav-flask * Update readme * Fix ghnav-flask linter errors * Add downloads and wheel badge * Add tests for flask extension * Fix flask tests * Add requirements-ext.txt installation to tox.ini * Add API docs for ext.flask module * Update setup.py * Add Flask to the list of keywords * Update badges on docs README * Update docs README title * Fix ext.flask tests * Fix syntax of ext.flask for Python 2.7, 3.4, 3.5 * Fix syntax of ext.flask for Python 2.7, 3.4, 3.5 * Fix imports in ext.flask for Python 2.7, 3.4, 3.5 * Update ghfnav-flask README * Update ghfnav-flask README * Remove setting of empty github token * Add flask extras * Update requirements * Update requirements * Add flask extra to python 3.4 tox.ini * Update changelog * Update changelog
2020-07-11 19:15:00 +03:00
- Add ``Flask`` + ``Dependency Injector`` example ``ghnav-flask``.
- Add ``Factory.provides`` attribute. It is an alias to the ``Factory.cls``.
- New README.
2020-07-03 05:08:12 +03:00
3.19.2
------
- Add logo.
2020-07-02 06:17:29 +03:00
3.19.1
------
- Start distributing wheels for Linux, MacOS, and Windows (thanks to
`Travis CI <https://travis-ci.org/>`_ and
`cibuildwheel <https://github.com/joerick/cibuildwheel>`_).
2020-06-30 23:44:01 +03:00
- Start using ``twine`` for publishing package on PyPI.
2020-07-01 00:32:16 +03:00
- Fix Travis CI configuration file warnings.
2020-06-30 23:44:01 +03:00
2020-06-29 23:34:05 +03:00
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()``.
2020-06-26 06:37:01 +03:00
- Add ignoring of ``IOError`` to ``Configuration.from_yaml()``.
2020-06-26 01:06:37 +03:00
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.
2020-06-26 00:12:16 +03:00
- Add documentation for ``Configuration`` provider.
- Remove undocumented positional parameter of ``DependenciesContainer`` provider.
2020-06-23 23:46:24 +03:00
2020-06-23 19:48:01 +03:00
3.17.1
------
- Fix ``DynamicContainer`` deep-copying bug.
2020-06-23 19:14:06 +03:00
3.17.0
------
- Add ``Container`` provider.
- Add ``Configuration`` providers linking.
2020-06-17 05:34:19 +03:00
3.16.1
2020-06-15 00:49:57 +03:00
------
2020-06-17 05:34:19 +03:00
- Update ``singleton_thread_locals.py`` to support Python 3 (thanks to
`RobinsonMa <https://github.com/RobinsonMa>`_,
`PR #252 <https://github.com/ets-labs/python-dependency-injector/pull/252>`_).
- Fix Disqus comments.
- Fix warnings in API docs.
2020-06-17 05:34:19 +03:00
3.16.0
------
- Add ``List`` provider
`issue #243 <https://github.com/ets-labs/python-dependency-injector/issues/243>`_,
`PR #251 <https://github.com/ets-labs/python-dependency-injector/pull/251>`_.
- Fix a few typos in docs (thanks to `Bruno P. Kinoshita <https://github.com/kinow>`_,
`issue #249 <https://github.com/ets-labs/python-dependency-injector/issues/249>`_,
`PR #250 <https://github.com/ets-labs/python-dependency-injector/pull/250>`_).
2020-06-15 00:43:06 +03:00
- Add support of six 1.15.0.
2020-06-15 00:38:24 +03:00
- Regenerate C sources using Cython 0.29.20.
2020-02-19 01:52:46 +03:00
3.15.6
------
- Fix changelog typo.
3.15.5
2020-02-19 01:50:56 +03:00
------
- Add downloads badge.
2020-01-27 04:37:13 +03:00
3.15.4
------
- Update a link to the PyPi page on the README page.
2020-01-27 03:53:06 +03:00
3.15.3
------
2020-01-27 04:32:16 +03:00
- Fix a typo in the link to the PyPi on the "Dependency Injection in Python" documentation page.
2020-01-27 03:53:06 +03:00
- Fix a couple of typos in the list of key features on the "Key Features" and index documentation
pages.
2020-01-27 04:32:16 +03:00
- Update a link to the PyPi page on a couple of documentation pages.
2020-01-27 03:53:06 +03:00
2020-01-27 03:33:28 +03:00
3.15.2
------
- Fix a typo in the installation instructions on the README page and in the documentation.
2020-01-27 03:17:03 +03:00
3.15.1
------
- Fix a couple of typos in the README.
- Fix a couple of types in the diagram of "Engines-Cars" example.
2020-01-27 02:55:33 +03:00
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.
2020-01-26 22:28:15 +03:00
- 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.
2020-01-26 23:15:50 +03:00
- Clean up tox.ini file.
2019-10-09 17:46:08 +03:00
3.14.12
-------
2020-01-26 22:28:15 +03:00
- Fix ``3.14.11`` degradation issue causing inability of using ``Delegate`` provider in
``DeclarativeContainer`` when this container is instantiated with overriding of delegating
2020-06-17 04:40:01 +03:00
provider (thanks to `GitterRemote <https://github .com/GitterRemote>`_, issue details are here
`#235 <https://github.com/ets-labs/python-dependency-injector/issues/235>`_).
2019-10-08 21:46:26 +03:00
3.14.11
-------
2020-01-26 22:28:15 +03:00
- 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
2020-06-17 04:40:01 +03:00
`davidcim <https://github.com/davidcim>`_, issue details are here
`#231 <https://github.com/ets-labs/python-dependency-injector/issues/231>`_).
2019-08-18 04:24:26 +03:00
3.14.10
2020-06-17 04:40:01 +03:00
-------
2020-01-26 22:28:15 +03:00
- Make spelling fix for the list of contributors.
2019-08-18 04:24:26 +03:00
2019-08-18 04:08:53 +03:00
3.14.9
------
2020-01-26 22:28:15 +03:00
- Improve README - minor English nitpicking (thanks to `supakeen <https://github.com/supakeen>`_).
2019-08-18 04:08:53 +03:00
2019-07-29 22:24:55 +03:00
3.14.8
------
- Regenerate C sources using Cython 0.29.13.
2019-06-07 17:03:11 +03:00
3.14.7
------
- Fix typo on "Dependency injection and inversion of control in Python" docs page (thanks to
`Dmitry (xotonic) <https://github.com/xotonic>`_).
2019-05-09 21:58:54 +03:00
3.14.6
------
- Fix ``FactoryAggregate`` provider copying issue.
2019-05-09 21:35:27 +03:00
- Regenerate C sources using Cython 0.29.7.
2019-03-22 05:22:57 +03:00
3.14.5
------
2019-03-22 05:10:53 +03:00
- Fix issue causing ``ThreadLocalSingleton`` provider to return ``None`` after
reset (thanks to `Jeroen Rietveld <https://github.com/jeroenrietveld>`_).
- Add test for ``ThreadLocalSingleton`` provider reset functionality (thanks
to `Jeroen Rietveld <https://github.com/jeroenrietveld>`_).
- Regenerate C sources using Cython 0.29.6.
2019-03-22 05:10:53 +03:00
2019-01-06 05:38:07 +03:00
3.14.4
------
- Fix typo in providers doc (thanks to `Vlad Ghita <https://github.com/vlad-ghita>`_).
2018-12-22 22:02:00 +03:00
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.
2018-11-09 00:12:50 +03:00
3.14.2
------
- Set Cython ``language_level=2``.
2018-11-08 23:59:21 +03:00
3.14.1
------
2018-11-08 23:49:37 +03:00
- Fix bug `#208 <https://github.com/ets-labs/python-dependency-injector/issues/208>`_:
version ``3.14.0`` hasn't worked on Python 3.5.2 (thanks to
`Jeroen Entjes <https://github.com/JeroenEntjes>`_).
2018-11-08 23:55:01 +03:00
- Remove deprecated ``assertEquals`` from tests.
2018-11-08 23:58:17 +03:00
- Regenerate C sources using Cython 0.29.
2018-11-08 23:49:37 +03:00
2018-10-19 13:00:55 +03:00
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.
2018-09-02 21:01:19 +03:00
3.13.2
------
2018-08-20 22:14:52 +03:00
- Add additional benchmark of ``Factory`` provider.
2018-09-02 21:01:19 +03:00
- Add tests and tox.ini to the distribution, so that they could be used after
package is installed (thanks to
`Tobias Happ <https://github.com/Gerschtli>`_).
2018-08-20 22:14:52 +03:00
2018-08-17 00:27:49 +03:00
3.13.1
------
- Fix typo on "Chained Factories" pattern docs page.
2018-08-17 00:17:57 +03:00
3.13.0
2018-08-16 23:53:22 +03:00
------
2018-08-17 00:17:57 +03:00
- Add Python 3.7 support.
- Drop Python 3.3 support.
- Drop Python 2.6 support.
2018-08-16 23:53:22 +03:00
- Add example of "Chained Factories" pattern.
- Add example of "Factory of Factories" pattern.
2018-07-26 10:23:27 +03:00
3.12.4
------
- Fix bug `#200 <https://github.com/ets-labs/python-dependency-injector/issues/200>`_.
- Make some refactoring `#199 <https://github.com/ets-labs/python-dependency-injector/issues/199>`_.
2018-07-24 23:14:08 +03:00
3.12.3
------
- Fix bug `#198 <https://github.com/ets-labs/python-dependency-injector/issues/198>`_.
- Regenerate C sources using Cython 0.28.4.
2018-07-24 23:14:08 +03:00
2018-07-03 19:31:51 +03:00
3.12.2
------
- Apply code style fixes to "services_v2" example miniapp.
2018-07-02 16:47:46 +03:00
3.12.1
------
2018-06-27 19:29:55 +03:00
- Update main page example from "services_v1" to "services_v2".
- Fix few typos on main page.
2018-06-27 19:29:55 +03:00
- 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 <https://github.com/awslabs/base64io-python/issues/4>`_)
that caused failures of Python 3.3 tests on Travis.
- Regenerate C sources using Cython 0.28.3.
2018-06-22 09:52:58 +03:00
2018-04-23 19:41:53 +03:00
3.12.0
------
- Regenerate C sources using Cython 0.28.2.
2018-02-22 16:32:14 +03:00
3.11.3
------
- Fix padding problem in code samples in docs.
2018-02-22 12:43:08 +03:00
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).
2018-01-24 20:59:31 +03:00
3.11.0
------
2018-01-24 21:01:46 +03:00
- Improve ``Configuration`` provider overriding logic.
- Refactor ``Configuration`` provider.
2018-01-24 21:12:10 +03:00
- Improve ``DependenciesContainer`` provider overriding logic.
2018-01-25 02:06:28 +03:00
- Update "services" example miniapp.
2018-01-24 21:01:46 +03:00
- 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``.
2017-12-25 21:39:56 +03:00
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.
2017-12-25 18:42:01 +03:00
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)``.
2017-12-25 18:42:01 +03:00
- 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.
2017-12-25 17:47:58 +03:00
- Add "bundles" example miniapp.
2017-12-21 23:48:07 +03:00
2017-11-30 12:49:13 +03:00
3.8.2
-----
- Fix padding problem in code samples in docs (part 2).
2017-11-30 12:30:41 +03:00
3.8.1
-----
- Fix padding problem in code samples in docs.
2017-11-21 12:48:15 +03:00
3.8.0
-----
- Add ``DeclarativeContainer.containers`` attribute that stores dictionary of
nested containers.
- Fix bug related to double-overridden providers (provider1 -> provider2 ->
provider3).
2017-10-30 17:52:05 +03:00
3.7.1
-----
- Add support of six 1.11.0.
2017-10-13 20:22:16 +03:00
3.7.0
-----
2017-10-13 06:06:00 +03:00
- Add ``FactoryAggregate`` provider.
2017-10-13 20:15:21 +03:00
- Add ``Provider.provider`` dynamic attribute that return new provider's
delegate (alias of method ``Provider.delegate()``).
2017-10-13 06:06:00 +03:00
- Add support of six 1.11.0.
2017-10-13 06:25:46 +03:00
- Regenerate C sources using Cython 0.27.1.
2017-10-13 06:06:00 +03:00
2017-08-08 19:10:06 +03:00
3.6.1
-----
2017-08-08 19:06:03 +03:00
- Regenerate C sources using Cython 0.26.
2017-07-09 23:41:32 +03:00
3.6.0
-----
2017-07-09 23:29:40 +03:00
- Add ``CallableDelegate`` provider.
2017-07-09 23:17:39 +03:00
- Add ``FactoryDelegate`` provider.
2017-07-09 23:34:38 +03:00
- Add ``SingletonDelegate`` provider.
2017-07-09 23:17:39 +03:00
3.5.0
-----
2017-07-07 17:49:16 +03:00
- Add functionality for initializing ``Configuration`` provider with default
values.
2017-06-09 01:46:18 +03:00
3.4.8
-----
- Code style fixes in ``providers`` module.
2017-04-18 23:42:48 +03:00
2017-05-29 10:41:31 +03:00
3.4.7
-----
- Correct typo in changelog.
2017-05-29 10:19:43 +03:00
3.4.6
-----
2017-05-29 10:41:31 +03:00
- Add "Useful links" section to the "Dependency injection and inversion of
control in Python" article.
2017-05-29 10:19:43 +03:00
2017-05-17 10:58:53 +03:00
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.
2017-05-08 18:55:14 +03:00
- Update movie lister example miniapp.
2017-05-08 19:05:02 +03:00
- Update source of ``coveralls.io`` badge.
2017-04-19 00:00:29 +03:00
3.4.3
-----
- Update doc block for ``Provider.overriding_lock`` attribute.
2017-04-18 23:42:48 +03:00
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.
2017-04-18 23:38:04 +03:00
- Fix few ``pydocstyle`` errors in examples.
2017-03-26 16:32:13 +03:00
2017-04-07 09:19:48 +03:00
3.4.1
-----
- Update movie lister example miniapp with ``AbstractFactory`` provider.
2017-04-06 12:33:19 +03:00
3.4.0
-----
2017-04-06 18:17:06 +03:00
- Add ``AbstractCallable`` provider.
- Add ``AbstractFactory`` provider.
- Add ``AbstractSingleton`` provider.
- Optimize calling of overridden providers (~15% faster).
2017-04-06 12:33:19 +03:00
2017-03-29 01:34:08 +03:00
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
2017-03-29 01:34:08 +03:00
they are identified by formula ``__{text}__``, that is more correct
according to Python Data Model.
2017-03-29 00:22:54 +03:00
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.
2017-03-26 23:01:00 +03:00
3.3.5
-----
- [Refactoring] Consolidate all containers in
``dependency_injector.containers`` module.
2017-03-26 16:32:13 +03:00
- [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.
2016-12-02 21:47:57 +03:00
2017-03-15 18:28:03 +03:00
3.3.3
-----
- Update services miniapp example.
2017-02-28 23:31:19 +03:00
3.3.2
-----
- Add `disqus.com <https://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.
2017-02-01 14:08:45 +03:00
3.3.1
-----
- Add some improvements to the documentation.
2017-01-30 01:12:08 +03:00
3.3.0
-----
- Add support of Python 3.6.
2017-01-30 00:39:15 +03:00
3.2.5
-----
- Add description of structure into README.
- Fix documentation errors.
2017-01-11 01:14:32 +03:00
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.
2016-12-28 00:10:52 +03:00
3.2.3
-----
- Add examples into README.
- Make minor documentation updates.
3.2.2
-----
- Change name of version variable to follow PEP8: ``VERSION`` -> ``__version__``.
2016-12-02 22:04:17 +03:00
3.2.1
-----
- Update ``services`` miniapp example.
2016-12-02 21:47:57 +03:00
3.2.0
-----
2016-12-02 16:01:52 +03:00
- Add ``Configuration`` provider for late static binding of configuration
options.
2016-11-11 19:36:35 +03:00
2016-11-23 23:26:14 +03:00
3.1.5
-----
- Refactor provider internals: C functions naming scheme and code layout.
- Add Terrence Brannon (metaperl) to the list of contributors.
2016-11-18 00:35:27 +03:00
3.1.4
-----
- Move ``inline`` functions from class level to module level for removing them
from virtual table and enable inlining.
2016-11-15 15:32:23 +03:00
3.1.3
-----
- Fix flake8 ``E305`` error in examples.
2016-11-15 15:28:12 +03:00
3.1.2
-----
- Remove ``public`` (``extern``) modifier utils constants.
- Fix flake8 ``E305`` error in examples.
2016-11-13 12:52:09 +03:00
3.1.1
-----
- Fix minor typo in README.
2016-11-12 00:08:47 +03:00
3.1.0
-----
- Add "Services mini application" example.
- Fix minor error in ``Factory`` provider API doc.
2016-11-11 19:36:35 +03:00
3.0.1
-----
- Add ``*.c`` source files under version control.
- Change keywords.
2016-11-11 18:30:13 +03:00
3.0.0
-----
2016-11-11 18:05:25 +03:00
- **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
2016-11-11 18:05:25 +03:00
without any functional changes.
- **Utils**
1. Module ``dependency_injector.utils`` is split into
2016-11-11 18:05:25 +03:00
``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:
2020-06-17 04:40:01 +03:00
2016-11-11 18:05:25 +03:00
1. Sources are moved under ``src/`` folder.
2. Tests are moved under ``tests/unit/`` folder.
2016-10-30 14:19:39 +03:00
2016-10-19 20:25:16 +03:00
2016-10-20 17:17:52 +03:00
2.2.10
------
- Fix typo in README.
2016-10-19 20:25:16 +03:00
2.2.9
-----
- Add github badges to readme and docs index pages.
- Update service names in services example miniapp.
2016-10-19 20:20:36 +03:00
- Create engines & cars example miniapp.
2016-09-23 00:35:51 +03:00
2016-10-13 10:42:52 +03:00
2.2.8
-----
- Move fixtures to separate module in movie lister example.
2016-10-12 10:45:26 +03:00
2.2.7
-----
- Fix typo in README.
2016-10-12 10:42:02 +03:00
2.2.6
-----
- Update README.
- Update docs index page.
2016-10-11 23:52:57 +03:00
2.2.5
-----
- Fix typo in README.
2016-10-11 17:46:56 +03:00
2.2.4
-----
- Update README.
2016-10-07 18:04:18 +03:00
2.2.3
-----
- Update README.
2016-10-07 16:59:22 +03:00
2.2.2
-----
- Update README.
2.2.1
-----
- Update examples.
2016-09-23 00:35:51 +03:00
2.2.0
-----
2016-09-23 00:24:45 +03:00
- Deprecate ``inject`` decorator.
2016-08-19 01:16:43 +03:00
2016-09-07 11:00:24 +03:00
2.1.1
-----
- Normalize package names by PEP-503.
2016-08-19 01:16:43 +03:00
2.1.0
-----
- Add ``ThreadLocalSingleton`` and ``DelegatedThreadLocalSingleton`` providers.
- Add documentation section about singleton providers and multi-threading.
- Update API docs of creational providers.
2016-04-20 17:38:19 +03:00
2016-05-17 21:01:08 +03:00
2.0.0
------
2016-05-22 16:25:17 +03:00
- Introduce new injections style for ``Callable``, ``Factory`` &
``Singleton`` providers.
2016-06-09 19:44:05 +03:00
- Drop providers: ``Static``, ``Value``, ``Function``, ``Class``, ``Config``.
- Increase performance of making injections in 2 times (+100%).
- Drop method injections.
2016-06-09 19:44:05 +03:00
- Simplify providers overriding system.
- Replace ``catalogs`` package with ``containers`` module.
- Drop all backward compatibilities for 1.x.
- Refactor most of the components.
- Update documentation.
2016-05-17 21:01:08 +03:00
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.
2016-04-27 02:04:18 +03:00
1.16.8
------
- Fix some typos in introduction section of documentation.
2016-04-26 13:14:39 +03:00
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/``.
2016-04-23 15:24:38 +03:00
1.16.4
2016-04-23 15:00:06 +03:00
------
- Add some documentation improvements.
2016-04-20 18:15:23 +03:00
1.16.1
2016-04-20 17:38:19 +03:00
------
2016-04-10 17:26:30 +03:00
- Add ``@copy`` decorator for copying declarative catalog providers.
- Add line numbers for all code samples in documentation.
2016-04-20 17:38:19 +03:00
- Add "Examples" section into documentation.
- Add "Movie Lister" example.
- Add "Services" example.
2016-04-20 14:19:54 +03:00
- 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.
2015-12-28 18:40:26 +03:00
2016-03-17 03:05:54 +03:00
1.15.1
------
- Update package information and documentation.
2016-03-14 01:08:12 +03:00
1.15.0
------
- Add ``Provider.provide()`` method. ``Provider.__call__()`` become a
reference to ``Provider.provide()``.
- Add provider overriding context.
- Update main examples and README.
2016-03-11 14:01:26 +03:00
1.14.11
-------
- Update README.
2016-03-09 12:39:05 +03:00
1.14.10
-------
- Add "catalog-providing-callbacks" example and several tests for it.
2016-03-01 18:04:01 +03:00
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``.
2016-02-27 01:19:09 +03:00
1.14.8
------
- Update README.
2016-02-27 01:13:42 +03:00
1.14.7
------
- Add one more example in README (inline providers and injections).
2016-02-27 01:07:32 +03:00
1.14.6
------
- Add ``cls`` alias for ``provides`` attributes of ``Factory``,
``DelegatedFactory``, ``Singleton`` and ``DelegatedSingleton`` providers.
2016-02-26 20:34:30 +03:00
1.14.5
------
- Fix typo in provider's error message.
2016-02-08 02:42:21 +03:00
1.14.4
------
- Update documentation.
2016-02-08 01:37:39 +03:00
1.14.3
------
- Optimize internals of providers.
- Optimize ``Callable`` provider.
- Optimize ``Factory`` provider.
- Optimize ``Singleton`` provider.
2016-02-04 23:55:41 +03:00
1.14.2
------
- Update documentation and description.
2016-02-02 00:18:07 +03:00
1.14.1
------
- Add meta description & keywords on docs index page.
2016-01-25 16:05:25 +03:00
1.14.0
------
- Drop support of Python 3.2.
2016-01-11 12:30:50 +03:00
1.13.2
------
- Update PyPi info.
2016-01-11 12:20:29 +03:00
1.13.1
------
- Transfer ownership to `ETS Labs <https://github.com/ets-labs>`_.
2015-12-28 18:40:26 +03:00
1.13.0
------
- Add ``DelegatedCallable`` provider.
- Add ``DelegatedFactory`` provider.
- Add ``DelegatedSingleton`` provider.
2015-12-28 18:40:26 +03:00
- Add some documentation improvements.
2015-12-15 18:02:21 +03:00
1.12.0
------
- Add possibility to specialize ``Factory`` provided type.
- Add possibility to specialize ``Singleton`` provided type.
2015-12-15 17:49:07 +03:00
- Add possibility to specialize ``DeclarativeCatalog`` provider type.
- Add possibility to specialize ``DynamicCatalog`` provider type.
2015-12-11 23:46:49 +03:00
- Make some refactorings for providers.
2015-12-11 12:40:00 +03:00
1.11.2
------
- Improve representation of providers and injections.
2015-11-26 16:34:14 +03:00
2015-11-30 13:09:56 +03:00
1.11.1
2015-11-26 16:50:12 +03:00
------
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.
2015-11-26 16:34:14 +03:00
0.11.0
------
- Rename ``AbstractCatalog`` to ``DeclarativeCatalog``
(with backward compatibility).
2015-11-26 16:34:14 +03:00
- 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.
2015-11-04 17:32:04 +03:00
0.10.5
------
2015-11-26 16:34:14 +03:00
- Add more representable implementation for ``AbstractCatalog`` and
``AbstractCatalog.Bundle``.
2015-11-04 17:32:04 +03:00
2015-11-02 11:58:09 +03:00
0.10.4
------
- Remove VERSION file from MANIFEST.in.
2015-10-26 13:52:52 +03:00
0.10.3
------
- Update example docblocks.
0.10.2
------
- Fix bug with injecting entities that implement ``__getattr__``.
2015-10-23 17:04:39 +03:00
0.10.1
------
- Update some examples.
2015-10-23 16:49:07 +03:00
0.10.0
------
2015-11-26 16:34:14 +03:00
- Add functionality for creating ``AbstractCatalog`` provider bundles.
- Improve ``AbstractCatalog`` inheritance.
- Improve ``AbstractCatalog`` overriding.
2015-10-11 15:34:21 +03:00
- Add images for catalog "Writing catalogs" and "Operating with catalogs"
examples.
- Add functionality for using positional argument injections with
2015-11-26 16:34:14 +03:00
``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.
2015-11-26 16:34:14 +03:00
- 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.
2015-09-03 00:27:56 +03:00
2015-09-14 10:53:24 +03:00
0.9.5
-----
- Change provider attributes scope to public.
2015-11-26 16:34:14 +03:00
- Add ``Factory.injections`` attribute that represents a tuple of all
``Factory`` injections (including kwargs, attributes and methods).
2015-09-14 10:53:24 +03:00
0.9.4
-----
- Add minor documentation fixes.
2015-09-04 02:33:15 +03:00
0.9.3
-----
- Implement thread safety.
2015-09-04 02:33:15 +03:00
2015-09-03 16:00:23 +03:00
0.9.2
-----
- Add minor refactorings.
2015-09-03 00:27:56 +03:00
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.
2015-09-01 00:37:21 +03:00
- Add minor refactorings.
- Fix of minor documentation issues.
2015-08-31 16:36:31 +03:00
0.8.1
2015-08-31 16:31:38 +03:00
-----
- ``Objects`` is renamed to ``Dependency Injector``.
2015-08-17 22:44:28 +03:00
0.7.8
-----
- Fixing @inject import bug in examples.
2015-08-05 17:44:22 +03:00
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.
2017-02-28 23:05:00 +03:00
.. disqus::
.. _Semantic versioning: https://semver.org/