from __future__ import annotations from pathlib import Path from habitmove.nomiedata import Event, ImportData, Tracker class Parser: def __init__(self, data="") -> None: """Load a data set and prepare parser data""" self.data = data @classmethod def from_file(cls, path: str) -> Parser: """Load in a data set""" txt = Path(path).read_text() return cls(data=txt) def parse(self) -> ImportData: """Extract all data from a data set""" raise NotImplementedError def extract_version(self) -> str: """Extract import dataset version from the data set""" raise NotImplementedError def extract_trackers(self) -> list[Tracker]: """Extract trackers from the data set""" raise NotImplementedError def extract_events(self) -> list[Event]: """Extract events from the data set""" raise NotImplementedError