Source code for kafka_dae_diagnostics.config

"""Utilities for reading Diagnostics IOC configuration from TOML."""

import tomllib

from pydantic import BaseModel, PositiveFloat, ValidationError


[docs] class DiagnosticsConfig(BaseModel): """Configuration parameters for Kafka DAE diagnostics.""" pv_prefix: str """PV prefix of all PVs on this IOC.""" callback_frequency_ms: PositiveFloat """How often (milliseconds) to update EPICS PVs.""" runinfo_topic: str """Kafka topic on which to listen for ``runInfo`` messages.""" events_topic: str """Kafka topic on which to listen for ``event`` messages.""" kafka_runinfo_consumer: dict[str, str] """Kafka settings for ``runInfo`` stream consumer.""" kafka_events_consumer: dict[str, str] """Kafka settings for ``event`` stream consumer."""
[docs] def load_config(config_path: str) -> DiagnosticsConfig: """Validate and load a config file at the specified path.""" with open(config_path, "rb") as f: data = tomllib.load(f) try: return DiagnosticsConfig.model_validate(data) except ValidationError as e: raise ValueError(f"Unable to load config from '{config_path}':\n{e}") from e