2020-07-11 19:15:00 +03:00
=================================================================
Dependency Injector --- Dependency injection framework for Python
=================================================================
2015-04-02 16:17:00 +03:00
2016-02-02 00:13:55 +03:00
.. meta ::
2020-07-29 19:18:09 +03:00
:google-site-verification: V1hlKfpgL3AARAElwFcqP4qW1Smsx5bKSRU8O86i20Y
2017-02-01 14:07:44 +03:00
:keywords: Python,Dependency injection,DI,Inversion of Control,IoC,
IoC Container,Factory, Singleton, Design Patterns
2020-07-29 19:18:09 +03:00
:description: Dependency Injector is a dependency injection framework
2020-08-08 21:48:05 +03:00
for Python. It helps to maintain you application structure.
It was designed to be unified, developer-friendly
2017-02-01 14:07:44 +03:00
tool that helps to implement dependency injection design
pattern in formal, pretty, Pythonic way. Dependency Injector
provides implementations of such popular design patterns
like IoC container, Factory and Singleton. Dependency
Injector providers are implemented as C extension types
using Cython.
2016-11-11 18:05:25 +03:00
.. _index:
2016-02-02 00:13:55 +03:00
2020-07-03 05:07:07 +03:00
.. image :: https://img.shields.io/pypi/v/dependency_injector.svg
:target: https://pypi.org/project/dependency-injector/
:alt: Latest Version
2020-07-11 19:15:00 +03:00
2020-07-03 05:07:07 +03:00
.. image :: https://img.shields.io/pypi/l/dependency_injector.svg
:target: https://pypi.org/project/dependency-injector/
:alt: License
2020-07-11 19:15:00 +03:00
2020-07-03 05:07:07 +03:00
.. image :: https://img.shields.io/pypi/pyversions/dependency_injector.svg
:target: https://pypi.org/project/dependency-injector/
:alt: Supported Python versions
2020-07-11 19:15:00 +03:00
2020-07-03 05:07:07 +03:00
.. image :: https://img.shields.io/pypi/implementation/dependency_injector.svg
:target: https://pypi.org/project/dependency-injector/
:alt: Supported Python implementations
2020-07-11 19:15:00 +03:00
.. image :: https://pepy.tech/badge/dependency-injector
:target: https://pepy.tech/project/dependency-injector
:alt: Downloads
.. image :: https://pepy.tech/badge/dependency-injector/month
:target: https://pepy.tech/project/dependency-injector
:alt: Downloads
.. image :: https://pepy.tech/badge/dependency-injector/week
:target: https://pepy.tech/project/dependency-injector
:alt: Downloads
.. image :: https://img.shields.io/pypi/wheel/dependency-injector.svg
:target: https://pypi.org/project/dependency-injector/
:alt: Wheel
2020-07-03 05:07:07 +03:00
.. image :: https://travis-ci.org/ets-labs/python-dependency-injector.svg?branch=master
:target: https://travis-ci.org/ets-labs/python-dependency-injector
:alt: Build Status
2020-07-11 19:15:00 +03:00
2020-07-03 05:07:07 +03:00
.. image :: http://readthedocs.org/projects/python-dependency-injector/badge/?version=latest
:target: http://python-dependency-injector.ets-labs.org/
:alt: Docs Status
2020-07-11 19:15:00 +03:00
2020-07-03 05:07:07 +03:00
.. image :: https://coveralls.io/repos/github/ets-labs/python-dependency-injector/badge.svg?branch=master
:target: https://coveralls.io/github/ets-labs/python-dependency-injector?branch=master
:alt: Coverage Status
2020-07-18 07:40:14 +03:00
`` Dependency Injector `` is a dependency injection framework for Python.
2020-08-11 05:29:25 +03:00
It stands on two principles:
- Explicit is better than implicit (PEP20).
- Do no magic to your code.
How does it 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)* .
- **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:
- You tell the framework how to build you code
- The framework does it for you
The power of the `` Dependency Injector `` is in its simplicity and straightforwardness. It is a simple tool for the powerful concept.
2020-07-03 05:07:07 +03:00
2020-07-18 07:40:14 +03:00
With the `` Dependency Injector `` you keep **application structure in one place** .
This place is called **the container** . You use the container to manage all the components of the
application. All the component dependencies are defined explicitly. This provides the control on
the application structure. It is **easy to understand and change** it.
2016-02-04 23:47:45 +03:00
2020-07-18 07:40:14 +03:00
.. figure :: https://raw.githubusercontent.com/wiki/ets-labs/python-dependency-injector/img/di-map.svg
:target: https://github.com/ets-labs/python-dependency-injector
2016-02-04 23:47:45 +03:00
2020-07-18 07:40:14 +03:00
*The container is like a map of your application. You always know what depends on what.*
2016-02-04 23:47:45 +03:00
2020-07-18 07:40:14 +03:00
Explore the documentation to know more about the `` Dependency Injector `` .
2016-11-11 18:05:25 +03:00
2020-07-20 23:58:18 +03:00
.. _contents:
2015-04-02 16:17:00 +03:00
Contents
--------
.. toctree ::
:maxdepth: 2
2016-04-04 23:40:28 +03:00
introduction/index
2015-08-05 17:24:03 +03:00
main/installation
2020-07-18 07:40:14 +03:00
tutorials/index
2015-06-10 09:53:15 +03:00
providers/index
2016-06-03 00:48:06 +03:00
containers/index
2016-04-20 14:19:54 +03:00
examples/index
2015-11-14 00:43:36 +03:00
api/index
2015-08-05 17:24:03 +03:00
main/feedback
main/changelog