from dataclasses import dataclass, field from pathlib import Path import yaml @dataclass(slots=True) class InstanceSpec: port: int overlays: list[str] = field(default_factory=list) arguments: list[str] = field(default_factory=list) config: list[str] = field(default_factory=list) def load_spec(path: Path) -> InstanceSpec: raw = yaml.safe_load(path.read_text()) or {} return InstanceSpec( port=int(raw["port"]), overlays=[str(item) for item in raw.get("overlays", [])], arguments=[str(item) for item in raw.get("arguments", [])], config=[str(item) for item in raw.get("config", [])], )