Coverage for larch/io/xas_data_source/base.py: 77%
22 statements
« prev ^ index » next coverage.py v7.6.0, created at 2024-10-16 21:04 +0000
« prev ^ index » next coverage.py v7.6.0, created at 2024-10-16 21:04 +0000
1from typing import NamedTuple, List, Optional
2from numpy.typing import ArrayLike
5class XasScan(NamedTuple):
6 name: str
7 description: str
8 info: str
9 start_time: str
10 labels: List[str]
11 data: ArrayLike
14class XasDataSource:
15 TYPE = NotImplemented
17 def __init__(self, filename: str) -> None:
18 self._filename = filename
20 def get_source_info(self) -> str:
21 raise NotImplementedError
23 def get_scan(self, scan_name: str) -> Optional[XasScan]:
24 raise NotImplementedError
26 def get_scan_names(self) -> List[str]:
27 raise NotImplementedError
29 def get_sorted_scan_names(self) -> List[str]:
30 scan_names = self.get_scan_names()
31 return sorted(scan_names, key=lambda s: float(s) if s.isdigit() else s)