Files
radar_system/python_app/storage/store_api.py
T
2026-03-05 14:42:33 +03:00

38 lines
1.3 KiB
Python

"""Abstract storage API for calibration/reference sets."""
from __future__ import annotations
from abc import ABC, abstractmethod
from pathlib import Path
from python_app.models.dataset_model import ComboKey, SweepCollection
class StoreApi(ABC):
"""Storage contract used by workflows and GUI code."""
@abstractmethod
def save_set(self, kind: str, radar_key: str, set_name: str, collection: SweepCollection) -> None:
"""Persist a named set."""
raise NotImplementedError
@abstractmethod
def load_set(self, kind: str, radar_key: str, set_name: str) -> SweepCollection:
"""Load a named set."""
raise NotImplementedError
@abstractmethod
def list_sets(self, kind: str, radar_key: str) -> list[str]:
"""List set names for kind/radar key."""
raise NotImplementedError
@abstractmethod
def has_combo_coverage(self, kind: str, radar_key: str, set_name: str, combos: list[ComboKey]) -> bool:
"""Check whether stored set covers requested switch combinations."""
raise NotImplementedError
@abstractmethod
def export_set_bundle(self, kind: str, radar_key: str, set_name: str, output_path: Path) -> Path:
"""Export set into binary bundle file for C++ preprocessing."""
raise NotImplementedError