Comparison

When should you use a Python DI container?

Injex is for shared service graphs across APIs, CLIs, workers, and tests. It is not meant to replace every Python dependency style.

NeedGood fitWhy
A few dependencies in one entrypointManual wiringDirect constructor calls stay clearest.
Request dependencies inside one frameworkFramework DIThe framework already owns the request lifecycle.
Shared service graph across API, CLI, worker, and testsInjexOne composition root avoids repeated setup code.
Typed constructor injection without provider DSLInjexNormal Python annotations become the wiring contract.
Complex provider/configuration frameworkLarger DI containerUse a heavier tool when a rich DSL is the product need.

What Injex optimizes for

What it intentionally avoids

Short answer: if manual wiring is still obvious, keep it. If the same graph is repeated across entrypoints and tests, Injex starts to pay for itself.