Skip to content

Quickstart

Dipend is a lightweight dependency injection container for Python that supports interface-based registration.

Follow these simple steps to get started:

Before getting started, make sure you have:

  • Pythom ≥ 3.12

Install the core Dipend package:

Terminal window
pip install dipend

Optional: If you want to visualize your dependency graph in a browser, install dipend-graph:

Terminal window
pip install dipend-graph
logger.py
from abc import ABC, abstractmethod
class ILogger(ABC):
@abstractmethod
def info(self, message: str) -> None:
pass
class ConsoleLogger(ILogger):
def info(self, message: str):
print(f"[INFO]: {message}")
greeter.py
from .logger import ILogger
class Greeter:
def __init__(self, logger: ILogger):
self._logger = logger
def greet(name: str) -> str:
message = f"Hello, {name}!"
self._logger.info(message)
return message
app.py
from dipend import DependencyContainer
from dipend_graph import DipendGraphServer
from .logger import ILogger, ConsoleLogger
from .greeter import Greeter
dependency_container = DependencyContainer()
dependency_container.add_singleton(ILogger, ConsoleLogger)
dependency_container.add_transient(Greeter)
dependency_container.build_singletons()
dipend_graph_server = DipendGraphServer(dependency_container)
dipend_graph_server.start()
const greeter = dependency_container.get_dependency(Greeter)
print(greeter.greet("World")) # Hello, World!
dipend_graph_server.hang()

With Graph Visualization (Optional):

app.py
from dipend import DependencyContainer
from dipend_graph import DipendGraphServer
from .logger import ILogger, ConsoleLogger
from .greeter import Greeter
dependency_container = DependencyContainer()
dependency_container.add_singleton(ILogger, ConsoleLogger)
dependency_container.add_transient(Greeter)
dependency_container.build_singletons()
dipend_graph_server = DipendGraphServer(dependency_container)
dipend_graph_server.start()
greeter = dependency_container.get_dependency(Greeter)
print(greeter.greet("World")) # Hello, World!
dipend_graph_server.hang()
Terminal window
python app.py

You’re now using fully typed, interface-based dependency injection in python, with no extra boilerplate or custom tokens.