README.md

July 8, 2026 ยท View on GitHub

modern-di

GitHub stars Context7 uv Ruff ty

ProjectBadges
modern-diSupported versions downloads
modern-di-aiohttpSupported versions downloads
modern-di-fastapiSupported versions downloads
modern-di-faststreamSupported versions downloads
modern-di-litestarSupported versions downloads
modern-di-pytestSupported versions downloads
modern-di-starletteSupported versions downloads
modern-di-typerSupported versions downloads

modern-di is a python dependency injection framework which supports the following:

  • Automatic dependency graph based on type annotations
  • Also, explicit dependencies are allowed where needed
  • Scopes and context management
  • Python 3.10+ support
  • Fully typed and tested
  • Integrations with aiohttp, FastAPI, FastStream, Litestar, Starlette and Typer
  • Pytest integration (modern-di-pytest) โ€” turns any DI dependency into a pytest fixture

Install

uv add modern-di      # or: pip install modern-di

Quick Start

import dataclasses
from modern_di import Container, Group, Scope, providers


@dataclasses.dataclass(kw_only=True, slots=True, frozen=True)
class Settings:
    database_url: str = "postgresql+asyncpg://localhost/app"


@dataclasses.dataclass(kw_only=True, slots=True)
class UserRepository:
    settings: Settings  # auto-injected by type


class Dependencies(Group):
    settings = providers.Factory(Settings, scope=Scope.APP)
    user_repository = providers.Factory(UserRepository, scope=Scope.REQUEST)


with Container(groups=[Dependencies], validate=True) as container:
    with container.build_child_container(scope=Scope.REQUEST) as request:
        repo = request.resolve(UserRepository)
        print(repo.settings.database_url)

See the documentation for scopes, lifecycles, finalizers, and framework integrations. modern-di is deliberately conservative โ€” see Design decisions for what it leaves out on purpose, including auto-binding, in-package integrations, and graph rendering.

Usage examples:

๐Ÿ“š Documentation

๐Ÿ“ฆ PyPI

๐Ÿ“ License

Part of modern-python

Browse the full list of templates and libraries in modern-python โ€” see the org profile for the categorized index.