API reference
Container API.
The public API is intentionally small: register services, resolve them, create scopes, override dependencies in tests, and validate wiring.
Registration
| Method | Purpose |
|---|---|
add_singleton(interface, implementation=None, name=None) | Reuse one instance for the app lifetime. |
add_transient(interface, implementation=None, name=None) | Create a new instance on each resolve. |
add_scoped(interface, implementation=None, name=None) | Reuse one instance inside a scope. |
add_instance(interface, instance, name=None) | Register an already built object. |
add_*_factory(interface, factory, name=None) | Use custom construction logic. |
Resolving
resolve(interface, name=None)resolves one service.resolve_all(interface, name=None)resolves registered implementations.create_scope()creates a request, job, or message lifetime.
Overrides
with container.override(PaymentGateway, instance=fake_gateway):
checkout = container.resolve(Checkout)
Validation
validate()returns validation errors.assert_valid()raisesContainerValidationExceptionif validation fails.
Exceptions
ServiceNotRegisteredException, CyclicDependencyException,
MissingTypeAnnotationException, InvalidLifestyleException,
and ContainerValidationException inherit from DIException.