babylon.engine.services
Service container for dependency injection.
This module provides a ServiceContainer dataclass that aggregates all dependencies needed by the simulation engine, enabling clean injection for testing and configuration.
Sprint 3: Central Committee (Dependency Injection) Paradox Refactor: Added GameDefines for centralized coefficients.
Classes
|
Container for all simulation services. |
- class babylon.engine.services.ServiceContainer(config, database, event_bus, formulas, defines)[source]
Bases:
objectContainer for all simulation services.
Aggregates the five core services needed by the simulation: - config: Immutable simulation parameters - database: Database connection for persistence - event_bus: Publish/subscribe communication - formulas: Registry of mathematical formulas - defines: Centralized game coefficients (Paradox Refactor)
Example
>>> container = ServiceContainer.create() >>> rent = container.formulas.get("imperial_rent") >>> container.event_bus.publish(Event(...)) >>> with container.database.session() as session: ... # do database work >>> container.database.close() >>> default_org = container.defines.DEFAULT_ORGANIZATION
- Parameters:
config (SimulationConfig)
database (DatabaseConnection)
event_bus (EventBus)
formulas (FormulaRegistry)
defines (GameDefines)
-
config:
SimulationConfig
-
database:
DatabaseConnection
-
formulas:
FormulaRegistry
-
defines:
GameDefines
- classmethod create(config=None, defines=None)[source]
Factory method to create a fully-initialized container.
Creates all services with sensible defaults. Uses in-memory SQLite for database isolation in tests.
- Parameters:
config (
SimulationConfig|None) – Optional custom config. If None, uses default SimulationConfig.defines (
GameDefines|None) – Optional custom defines. If None, uses default GameDefines.
- Return type:
- Returns:
ServiceContainer with all services initialized
- __init__(config, database, event_bus, formulas, defines)
- Parameters:
config (SimulationConfig)
database (DatabaseConnection)
event_bus (EventBus)
formulas (FormulaRegistry)
defines (GameDefines)
- Return type:
None