Why Injex
A small container for the boring 80%.
Python does not require a dependency injection container. Many programs are better with plain functions and manual wiring.
Injex is for the next step: applications where manual wiring starts leaking into multiple entrypoints, tests need clean replacement of external dependencies, and startup should fail early when the graph is incomplete.
The niche
SmallNo provider DSLRegistration code stays readable Python.
TypedAnnotations as contractConstructors describe required dependencies.
PortableNo framework lock-inUse the same graph in services, workers, CLIs, and tests.
TestableScoped overridesReplace external services without changing application code.
Design principle
Injex should stay boring in production: explicit registrations, predictable lifetime rules, readable errors, and no hidden runtime dependencies.