from pydantic import BaseModel, Field from dynalab_core.protocols.packets.handshake import JsonSignalDescriptor from pathlib import Path from typing import Self from uuid import uuid4 class Config(BaseModel): rpmhz_sig: JsonSignalDescriptor | None = None lambda_sig: JsonSignalDescriptor | None = None comments: str = "" def write(self, file: str | Path) -> None: output_path = Path(file).expanduser() output_path.parent.mkdir(parents=True, exist_ok=True) output_path.write_text( self.model_dump_json(indent=4), encoding="utf-8", ) def read_config(file: str | Path) -> Config: input_path = Path(file).expanduser() if input_path.exists(): return Config.model_validate_json(input_path.read_text(encoding="utf-8")) raise FileNotFoundError DEFAULT_CONFIG = Config( rpmhz_sig=JsonSignalDescriptor( id=uuid4(), name="Rpmhz", type="number", timeout_ms=5000, ), lambda_sig=JsonSignalDescriptor( id=uuid4(), name="Lambda", type="number", timeout_ms=5000, ), comments="Mon test", )