Source code for hydromodpy.data.managers.container
"""Runtime container for active data-manager families.
Design note
-----------
``DataManagers`` is intentionally thin: it only stores the resolved ordered
type list used by orchestration code. Validation and inference live in:
- ``DataManagersConfig`` for schema/normalization,
- ``DataPlanner`` for explicit + inferred activation rules.
"""
from __future__ import annotations
from dataclasses import dataclass
from hydromodpy.data.managers.config_schema import DataManagersConfig
from hydromodpy.data.managers.plan import DataLoadPlan
[docs]
@dataclass(slots=True)
class DataManagers:
"""Runtime view of active data-manager families.
The container stores the resolved ordered type list used by orchestration.
It can be built directly from declarative config or from a planner result
that combines explicit and inferred data dependencies.
"""
types: list[str]
[docs]
@classmethod
def from_config(cls, config: DataManagersConfig) -> DataManagers:
"""Build runtime container from validated declarative config."""
return cls(types=list(config.types))
[docs]
@classmethod
def from_plan(cls, plan: DataLoadPlan) -> DataManagers:
"""Build runtime container from resolved explicit+inferred plan."""
return cls(types=list(plan.types))