Container validation
May 25, 2026 ยท View on GitHub
Injex can validate the registered dependency graph before your application starts. This catches common wiring mistakes early without constructing service instances.
from injex import Container
class Settings:
pass
class ApiClient:
def __init__(self, settings: Settings):
self.settings = settings
container = Container()
container.add_singleton(Settings)
container.add_transient(ApiClient)
container.assert_valid()
validate()
Use validate() when you want to decide how to report errors.
errors = container.validate()
for error in errors:
print(error)
Each item is a ValidationError with:
service: the registered service being checked;name: the registration name, if any;message: a human-readable explanation.
assert_valid()
Use assert_valid() for startup checks and tests. It raises
ContainerValidationException with all collected validation errors.
def build_container() -> Container:
container = Container()
configure_services(container)
container.assert_valid()
return container
What validation checks
- Missing constructor annotations.
- Missing factory parameter annotations.
- Missing registrations for required dependencies.
- Cyclic dependencies.
- Dependencies declared through
@injectproperty methods.
Validation does not call constructors or factories. Runtime errors inside service constructors still happen when the service is resolved.