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

1from typing import NamedTuple, List, Optional 

2from numpy.typing import ArrayLike 

3 

4 

5class XasScan(NamedTuple): 

6 name: str 

7 description: str 

8 info: str 

9 start_time: str 

10 labels: List[str] 

11 data: ArrayLike 

12 

13 

14class XasDataSource: 

15 TYPE = NotImplemented 

16 

17 def __init__(self, filename: str) -> None: 

18 self._filename = filename 

19 

20 def get_source_info(self) -> str: 

21 raise NotImplementedError 

22 

23 def get_scan(self, scan_name: str) -> Optional[XasScan]: 

24 raise NotImplementedError 

25 

26 def get_scan_names(self) -> List[str]: 

27 raise NotImplementedError 

28 

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)