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. Spec 008: Added metrics field for dependency-injected telemetry.

Classes

ServiceContainer(config, database, ...[, ...])

Container for all simulation services.

class babylon.engine.services.ServiceContainer(config, database, event_bus, formulas, defines, metrics, field_registry=None, reserve_army_data_source=None, dispossession_data_source=None, productivity_data_source=None, melt_calculator=None, basket_calculator=None, gamma_calculator=None, capital_calculator=None, throughput_calculator=None, transition_engine=None, tensor_registry=None, community_hypergraph=None, turnover_profile_source=None, inventory_data_source=None, depreciation_data_source=None, hex_grid=None, persistence=None, tracer=None, distribution_calculator=None, interest_calculator=None, credit_cycle_detector=None, fictitious_capital_calculator=None, rent_calculator=None, housing_calculator=None, counter_tendency_calculator=None, value_basis_converter=None, financial_crisis_assessor=None, z1_source=None, housing_data_source=None)[source]

Bases: object

Container for all simulation services.

Aggregates the six core services needed by the simulation, plus optional economics calculator services for tick dynamics (Feature 017):

Core:
  • 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)

  • metrics: Telemetry collector for observability (Spec 008)

Field Topology (Feature 002, optional for backward compatibility):
  • field_registry: Contradiction field computation registry

Economics (Feature 017, all optional for backward compatibility):
  • melt_calculator: National MELT computation (Feature 013)

  • basket_calculator: Basket visibility computation (Feature 013)

  • gamma_calculator: Reproductive visibility computation (Feature 015)

  • capital_calculator: Capital stock computation (Feature 012)

  • throughput_calculator: Throughput position computation (Feature 014)

  • transition_engine: Class transition engine (Feature 016)

  • tensor_registry: Cached economic tensor data (Feature 011)

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
>>> container.metrics.increment("ticks_processed")
Parameters:
  • config (SimulationConfig)

  • database (DatabaseConnection)

  • event_bus (EventBus)

  • formulas (FormulaRegistry)

  • defines (GameDefines)

  • metrics (MetricsCollectorProtocol)

  • field_registry (Any)

  • reserve_army_data_source (Any)

  • dispossession_data_source (Any)

  • productivity_data_source (Any)

  • melt_calculator (Any)

  • basket_calculator (Any)

  • gamma_calculator (Any)

  • capital_calculator (Any)

  • throughput_calculator (Any)

  • transition_engine (Any)

  • tensor_registry (Any)

  • community_hypergraph (Any)

  • turnover_profile_source (Any)

  • inventory_data_source (Any)

  • depreciation_data_source (Any)

  • hex_grid (Any)

  • persistence (Any)

  • tracer (Any)

  • distribution_calculator (Any)

  • interest_calculator (Any)

  • credit_cycle_detector (Any)

  • fictitious_capital_calculator (Any)

  • rent_calculator (Any)

  • housing_calculator (Any)

  • counter_tendency_calculator (Any)

  • value_basis_converter (Any)

  • financial_crisis_assessor (Any)

  • z1_source (Any)

  • housing_data_source (Any)

config: SimulationConfig
database: DatabaseConnection
event_bus: EventBus
formulas: FormulaRegistry
defines: GameDefines
metrics: MetricsCollectorProtocol
field_registry: Any = None
reserve_army_data_source: Any = None
dispossession_data_source: Any = None
productivity_data_source: Any = None
melt_calculator: Any = None
basket_calculator: Any = None
gamma_calculator: Any = None
capital_calculator: Any = None
throughput_calculator: Any = None
transition_engine: Any = None
tensor_registry: Any = None
community_hypergraph: Any = None
turnover_profile_source: Any = None
inventory_data_source: Any = None
depreciation_data_source: Any = None
hex_grid: Any = None
persistence: Any = None
tracer: Any = None
distribution_calculator: Any = None
interest_calculator: Any = None
credit_cycle_detector: Any = None
fictitious_capital_calculator: Any = None
rent_calculator: Any = None
housing_calculator: Any = None
counter_tendency_calculator: Any = None
value_basis_converter: Any = None
financial_crisis_assessor: Any = None
z1_source: Any = None
housing_data_source: Any = None
classmethod create(config=None, defines=None, metrics=None, *, hex_grid=None, persistence=None, tracer=None, reserve_army_data_source=None, dispossession_data_source=None, productivity_data_source=None, field_registry=None, melt_calculator=None, basket_calculator=None, gamma_calculator=None, capital_calculator=None, throughput_calculator=None, transition_engine=None, tensor_registry=None, community_hypergraph=None, turnover_profile_source=None, inventory_data_source=None, depreciation_data_source=None, distribution_calculator=None, interest_calculator=None, credit_cycle_detector=None, fictitious_capital_calculator=None, rent_calculator=None, housing_calculator=None, counter_tendency_calculator=None, value_basis_converter=None, financial_crisis_assessor=None, z1_source=None, housing_data_source=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.

  • metrics (MetricsCollectorProtocol | None) – Optional custom metrics collector. If None, creates a new MetricsCollector instance. Pass a mock for testing.

  • field_registry (Any) – Optional FieldRegistry for contradiction fields (Feature 002).

  • melt_calculator (Any) – Optional MELTCalculator (Feature 013).

  • basket_calculator (Any) – Optional BasketVisibilityCalculator (Feature 013).

  • gamma_calculator (Any) – Optional GammaIIICalculator (Feature 015).

  • capital_calculator (Any) – Optional CapitalStockCalculator (Feature 012).

  • throughput_calculator (Any) – Optional ThroughputCalculator (Feature 014).

  • transition_engine (Any) – Optional ClassTransitionEngine (Feature 016).

  • tensor_registry (Any) – Optional TensorRegistry for cached tensor data (Feature 011).

  • community_hypergraph (Any) – Optional XGI Hypergraph for community membership (Feature 022).

  • hex_grid (Any)

  • persistence (Any)

  • tracer (Any)

  • reserve_army_data_source (Any)

  • dispossession_data_source (Any)

  • productivity_data_source (Any)

  • turnover_profile_source (Any)

  • inventory_data_source (Any)

  • depreciation_data_source (Any)

  • distribution_calculator (Any)

  • interest_calculator (Any)

  • credit_cycle_detector (Any)

  • fictitious_capital_calculator (Any)

  • rent_calculator (Any)

  • housing_calculator (Any)

  • counter_tendency_calculator (Any)

  • value_basis_converter (Any)

  • financial_crisis_assessor (Any)

  • z1_source (Any)

  • housing_data_source (Any)

Return type:

ServiceContainer

Returns:

ServiceContainer with all services initialized

__init__(config, database, event_bus, formulas, defines, metrics, field_registry=None, reserve_army_data_source=None, dispossession_data_source=None, productivity_data_source=None, melt_calculator=None, basket_calculator=None, gamma_calculator=None, capital_calculator=None, throughput_calculator=None, transition_engine=None, tensor_registry=None, community_hypergraph=None, turnover_profile_source=None, inventory_data_source=None, depreciation_data_source=None, hex_grid=None, persistence=None, tracer=None, distribution_calculator=None, interest_calculator=None, credit_cycle_detector=None, fictitious_capital_calculator=None, rent_calculator=None, housing_calculator=None, counter_tendency_calculator=None, value_basis_converter=None, financial_crisis_assessor=None, z1_source=None, housing_data_source=None)
Parameters:
  • config (SimulationConfig)

  • database (DatabaseConnection)

  • event_bus (EventBus)

  • formulas (FormulaRegistry)

  • defines (GameDefines)

  • metrics (MetricsCollectorProtocol)

  • field_registry (Any)

  • reserve_army_data_source (Any)

  • dispossession_data_source (Any)

  • productivity_data_source (Any)

  • melt_calculator (Any)

  • basket_calculator (Any)

  • gamma_calculator (Any)

  • capital_calculator (Any)

  • throughput_calculator (Any)

  • transition_engine (Any)

  • tensor_registry (Any)

  • community_hypergraph (Any)

  • turnover_profile_source (Any)

  • inventory_data_source (Any)

  • depreciation_data_source (Any)

  • hex_grid (Any)

  • persistence (Any)

  • tracer (Any)

  • distribution_calculator (Any)

  • interest_calculator (Any)

  • credit_cycle_detector (Any)

  • fictitious_capital_calculator (Any)

  • rent_calculator (Any)

  • housing_calculator (Any)

  • counter_tendency_calculator (Any)

  • value_basis_converter (Any)

  • financial_crisis_assessor (Any)

  • z1_source (Any)

  • housing_data_source (Any)

Return type:

None