Dependency Injection¶
dependency_injection ¶
Dependency Injection Container - Component Management.
Provides simple DI container for managing application dependencies and promoting loose coupling between components.
Classes:
| Name | Description |
|---|---|
DIContainer | Dependency injection container with singleton and factory support |
Classes¶
DIContainer ¶
Dependency injection container.
Manages singleton and factory registrations for application dependencies. Supports lazy initialization and dependency resolution.
Attributes:
| Name | Type | Description |
|---|---|---|
_singletons | Dict[str, Any] | Registered singleton instances |
_factories | Dict[str, Callable[[], Any]] | Registered factory functions |
_types | Dict[str, Type] | Registered types for lazy instantiation |
Methods:
| Name | Description |
|---|---|
register_singleton | Register a singleton instance |
register_factory | Register a factory function |
register_type | Register a type for lazy instantiation |
resolve | Resolve dependency by name |
is_registered | Check if dependency is registered |
get_registered_names | Get list of registered dependency names |
clear | Clear all registrations |
unregister | Unregister a dependency |
Initialize DI container.
Source code in src/infrastructure/config/dependency_injection.py
Functions¶
register_singleton ¶
Register a singleton instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name | required |
instance | Any | Instance to register | required |
Source code in src/infrastructure/config/dependency_injection.py
register_factory ¶
Register a factory function.
Factory is called each time dependency is resolved.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name | required |
factory | Callable[[], Any] | Factory function that creates instances | required |
Source code in src/infrastructure/config/dependency_injection.py
register_type ¶
Register a type for lazy instantiation.
Type is instantiated (with no-arg constructor) when first resolved.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name | required |
cls | Type | Class to instantiate | required |
Source code in src/infrastructure/config/dependency_injection.py
resolve ¶
Resolve dependency by name.
Resolution order: singleton, factory, type.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name | required |
Returns:
| Type | Description |
|---|---|
Any | Resolved dependency instance |
Raises:
| Type | Description |
|---|---|
ValueError | If dependency not found |
Source code in src/infrastructure/config/dependency_injection.py
is_registered ¶
Check if dependency is registered.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name. | required |
Returns:
| Type | Description |
|---|---|
bool | True if registered. |
Source code in src/infrastructure/config/dependency_injection.py
get_registered_names ¶
Get list of registered dependency names.
Returns:
| Type | Description |
|---|---|
list[str] | List of dependency names. |
Source code in src/infrastructure/config/dependency_injection.py
clear ¶
Clear all registrations.
Source code in src/infrastructure/config/dependency_injection.py
unregister ¶
Unregister a dependency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name | str | Dependency name. | required |
Returns:
| Type | Description |
|---|---|
bool | True if unregistered, False if not found. |