Dependency Injector
is a dependency injection framework for Python.
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.
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
The package is available on the PyPi:
pip install dependency-injector
- The documentation is available on the Read The Docs
- Open a Github Issue
- Open a Github Issue
- ⭐️ Star the
Dependency Injector
on the Github - 🆕 Start a new project with the
Dependency Injector
- 💬 Tell your friend about the
Dependency Injector
- 🔀 Fork the project
- ⬅️ Open a pull request to the
develop
branch