mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-23 01:56:58 +03:00
Edit key features pages
This commit is contained in:
parent
f5758d842f
commit
f32363d259
|
@ -3,66 +3,37 @@ Key features
|
||||||
|
|
||||||
.. meta::
|
.. meta::
|
||||||
:keywords: Python,DI,Dependency injection,IoC,Inversion of Control
|
:keywords: Python,DI,Dependency injection,IoC,Inversion of Control
|
||||||
:description: This article describes key features of "Dependency Injector"
|
:description: This article describes key features of the Dependency Injector
|
||||||
framework. It also provides some cases and recommendations
|
framework.
|
||||||
about usage of "Dependency Injector" framework.
|
|
||||||
|
|
||||||
|
``Dependency Injector`` is a dependency injection framework for Python. It takes the
|
||||||
|
responsibility of assembling your objects.
|
||||||
|
|
||||||
``Dependency Injector`` is a dependency injection framework for Python.
|
Key features of the ``Dependency Injector`` are:
|
||||||
It was designed to be a unified and developer-friendly tool that helps
|
|
||||||
implement a dependency injection design pattern in a formal, pretty, and
|
- **Pythonic design**. Simple & explicit.
|
||||||
Pythonic way.
|
- **High performance**. Written in ``Cython``.
|
||||||
|
- **Maturity and production readiness**. Downloaded over 200.000 times a month.
|
||||||
|
|
||||||
It stands on two principles:
|
It stands on two principles:
|
||||||
|
|
||||||
- Explicit is better than implicit (PEP20).
|
- **Explicit is better than implicit (PEP20)**.
|
||||||
- Do no magic to your code.
|
- **Do not do any magic to your code**.
|
||||||
|
|
||||||
How does it different from the other frameworks?
|
How is the ``Dependency Injector`` different from the other frameworks?
|
||||||
|
|
||||||
- **No autowiring.** The framework does NOT do any autowiring / autoresolving of the dependencies. You need to specify everything explicitly. Because *"Explicit is better than implicit" (PEP20)*.
|
- **No autowiring.** The framework does NOT do any autowiring / autoresolving of the dependencies. You need to specify everything explicitly. Because *"Explicit is better than implicit" (PEP20)*.
|
||||||
- **Does not pollute your code.** Your application does NOT know and does NOT depend on the framework. No ``@inject`` decorators, annotations, patching or any other magic tricks.
|
- **Does not pollute your code.** Your application does NOT know and does NOT depend on the framework. No ``@inject`` decorators, annotations, patching or any other magic tricks.
|
||||||
|
|
||||||
``Dependency Injector`` makes a simple contract with you:
|
In addition ``Dependency Injector`` is:
|
||||||
|
|
||||||
- You tell the framework how to build you code
|
- Tested.
|
||||||
- The framework does it for you
|
- Documented.
|
||||||
|
- Supported.
|
||||||
|
- Semantically versioned.
|
||||||
|
- Distributed as pre-compiled wheels.
|
||||||
|
|
||||||
The power of the ``Dependency Injector`` is in its simplicity and straightforwardness. It is a simple tool for the powerful concept.
|
The power of the ``Dependency Injector`` is in its straightforwardness. It is a simple tool for
|
||||||
|
the powerful concept.
|
||||||
The key features of the ``Dependency Injector`` framework are:
|
|
||||||
|
|
||||||
+ Easy, smart, and Pythonic style.
|
|
||||||
+ Does NOT pollute client code.
|
|
||||||
+ Obvious and clear structure.
|
|
||||||
+ Extensibility and flexibility.
|
|
||||||
+ High performance.
|
|
||||||
+ Memory efficiency.
|
|
||||||
+ Thread safety.
|
|
||||||
+ Documented.
|
|
||||||
+ Semantically versioned.
|
|
||||||
+ Distributed as pre-compiled wheels.
|
|
||||||
|
|
||||||
``Dependency Injector`` containers and providers are implemented as C extension
|
|
||||||
types using ``Cython``.
|
|
||||||
|
|
||||||
``Dependency Injector`` framework can be used in the different application types:
|
|
||||||
|
|
||||||
+ Web applications based on the ``Flask``, ``Django`` or any other web framework.
|
|
||||||
+ Asynchronous applications ``asyncio``, ``aiohttp``, ``Tornado``, or ``Twisted``.
|
|
||||||
+ Standalone frameworks and libraries.
|
|
||||||
+ GUI applications.
|
|
||||||
|
|
||||||
``Dependency Injector`` framework can be integrated on the different project
|
|
||||||
stages:
|
|
||||||
|
|
||||||
+ It can be used in the beginning of the development of a new application.
|
|
||||||
+ It can be integrated into application that is on its active development stage.
|
|
||||||
+ It can be used for refactoring of legacy application.
|
|
||||||
|
|
||||||
Components of ``Dependency Injector`` framework could be used:
|
|
||||||
|
|
||||||
+ In composition with each other.
|
|
||||||
+ Independently from each other.
|
|
||||||
|
|
||||||
.. disqus::
|
.. disqus::
|
||||||
|
|
|
@ -7,6 +7,10 @@ that were made in every particular version.
|
||||||
From version 0.7.6 *Dependency Injector* framework strictly
|
From version 0.7.6 *Dependency Injector* framework strictly
|
||||||
follows `Semantic versioning`_
|
follows `Semantic versioning`_
|
||||||
|
|
||||||
|
Development version
|
||||||
|
-------------------
|
||||||
|
- Update "Key Features" documentation page.
|
||||||
|
|
||||||
3.36.0
|
3.36.0
|
||||||
------
|
------
|
||||||
- Update providers overriding documentation and rework examples.
|
- Update providers overriding documentation and rework examples.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user