Skip to main content

Dependency injection microframework for Python

Project description

https://raw.githubusercontent.com/wiki/ets-labs/python-dependency-injector/img/logo.svg

Latest Version License Supported Python versions Supported Python implementations Downloads Downloads Downloads Wheel Build Status Docs Status Coverage Status

What is Dependency Injector?

Dependency Injector is a dependency injection framework for Python.

Why do I need it?

Dependency Injector helps you improve application structure.

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.

https://raw.githubusercontent.com/wiki/ets-labs/python-dependency-injector/img/di-map.svg

The container is like a map of your application. You always know what depends on what.

Flask + Dependency Injector example:

from dependency_injector import containers, providers
from dependency_injector.ext import flask
from github import Github

from . import services, views


class Application(containers.DeclarativeContainer):
    """Application container."""

    config = providers.Configuration()

    github_client = providers.Factory(
        Github,
        login_or_token=config.github.auth_token,
        timeout=config.github.request_timeout,
    )

    search_service = providers.Factory(
        services.SearchService,
        github_client=github_client,
    )

    index_view = providers.Callable(
        views.index,
        search_service=search_service,
        default_search_term=config.search.default_term,
        default_search_limit=config.search.default_limit,
    )

    app = providers.Factory(
        flask.create_app,
        name=__name__,
        routes=[
            flask.Route('/', view_provider=index_view),
        ],
    )

See complete example here - Flask + Dependency Injector Example

How to install?

  • The package is available on the PyPi:

    pip install dependency-injector

Where is the docs?

Have a question?

Found a bug?

Want to help?

  • ⭐️ Star the Dependency Injector on the Github

  • 🆕 Start a new project with the Dependency Injector

  • 💬 Tell your friend about the Dependency Injector

Want to contribute?

  • 🔀 Fork the project

  • ⬅️ Open a pull request to the develop branch

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dependency-injector-3.20.1.tar.gz (392.0 kB view hashes)

Uploaded Source

Built Distributions

dependency_injector-3.20.1-pp36-pypy36_pp73-win32.whl (180.0 kB view hashes)

Uploaded PyPy Windows x86

dependency_injector-3.20.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl (280.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl (253.7 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

dependency_injector-3.20.1-pp27-pypy_73-manylinux2010_x86_64.whl (280.4 kB view hashes)

Uploaded PyPy manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-pp27-pypy_73-macosx_10_9_x86_64.whl (256.0 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

dependency_injector-3.20.1-cp38-cp38-win_amd64.whl (245.7 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

dependency_injector-3.20.1-cp38-cp38-win32.whl (197.8 kB view hashes)

Uploaded CPython 3.8 Windows x86

dependency_injector-3.20.1-cp38-cp38-manylinux2010_x86_64.whl (2.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp38-cp38-manylinux2010_i686.whl (2.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp38-cp38-macosx_10_9_x86_64.whl (360.6 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

dependency_injector-3.20.1-cp37-cp37m-win_amd64.whl (230.7 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

dependency_injector-3.20.1-cp37-cp37m-win32.whl (188.9 kB view hashes)

Uploaded CPython 3.7m Windows x86

dependency_injector-3.20.1-cp37-cp37m-manylinux2010_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp37-cp37m-manylinux2010_i686.whl (1.5 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp37-cp37m-macosx_10_9_x86_64.whl (346.0 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

dependency_injector-3.20.1-cp36-cp36m-win_amd64.whl (230.1 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

dependency_injector-3.20.1-cp36-cp36m-win32.whl (189.1 kB view hashes)

Uploaded CPython 3.6m Windows x86

dependency_injector-3.20.1-cp36-cp36m-manylinux2010_x86_64.whl (1.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp36-cp36m-manylinux2010_i686.whl (1.5 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp36-cp36m-macosx_10_9_x86_64.whl (376.0 kB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

dependency_injector-3.20.1-cp35-cp35m-win_amd64.whl (217.0 kB view hashes)

Uploaded CPython 3.5m Windows x86-64

dependency_injector-3.20.1-cp35-cp35m-win32.whl (176.5 kB view hashes)

Uploaded CPython 3.5m Windows x86

dependency_injector-3.20.1-cp35-cp35m-manylinux2010_x86_64.whl (1.6 MB view hashes)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp35-cp35m-manylinux2010_i686.whl (1.5 MB view hashes)

Uploaded CPython 3.5m manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp35-cp35m-macosx_10_9_x86_64.whl (344.3 kB view hashes)

Uploaded CPython 3.5m macOS 10.9+ x86-64

dependency_injector-3.20.1-cp27-cp27mu-manylinux2010_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 2.7mu manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp27-cp27mu-manylinux2010_i686.whl (1.2 MB view hashes)

Uploaded CPython 2.7mu manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp27-cp27m-manylinux2010_x86_64.whl (1.3 MB view hashes)

Uploaded CPython 2.7m manylinux: glibc 2.12+ x86-64

dependency_injector-3.20.1-cp27-cp27m-manylinux2010_i686.whl (1.2 MB view hashes)

Uploaded CPython 2.7m manylinux: glibc 2.12+ i686

dependency_injector-3.20.1-cp27-cp27m-macosx_10_9_x86_64.whl (340.1 kB view hashes)

Uploaded CPython 2.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page