skills/alti3/litestar-skills/dependency-injection

dependency-injection

SKILL.md

Dependency Injection

Use this skill when handlers need shared services, repositories, config, or request-scoped resources.

Workflow

  1. Define provider functions and wrap them with Provide.
  2. Register dependencies at app/router/controller/handler scope.
  3. Prefer narrow scope for overrides and testability.
  4. Keep service lifecycle explicit (singleton vs request-scoped behavior).

Core Pattern

from litestar import Litestar, get
from litestar.di import Provide


def provide_settings() -> dict[str, str]:
    return {"env": "dev"}


@get("/env")
async def read_env(settings: dict[str, str]) -> dict[str, str]:
    return settings


app = Litestar(
    route_handlers=[read_env],
    dependencies={"settings": Provide(provide_settings)},
)

DI Checklist

  • Use clear dependency keys (settings, db_session, current_user).
  • Keep provider side effects controlled.
  • Override dependencies in tests rather than monkeypatching internals.

Litestar References

Weekly Installs
1
GitHub Stars
5
First Seen
14 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1