refactor: refactoring old code
This commit is contained in:
61
legacy/dataset.py
Normal file
61
legacy/dataset.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from typing import Iterable
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass
|
||||
from .common import LcrConnException, from_human_readable_value
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DataSubset:
|
||||
"""A list holding available device gauge values for resistor, capacitor or inductor"""
|
||||
|
||||
gauges: tuple[float, ...]
|
||||
"""A list of available device gauge values"""
|
||||
|
||||
@staticmethod
|
||||
def from_iterable(str_gauges: Iterable[str]) -> "DataSubset":
|
||||
# Remove redundant parts
|
||||
gauges_set: set[float] = set()
|
||||
for str_gauge in str_gauges:
|
||||
numeric_gauge = from_human_readable_value(str_gauge)
|
||||
if numeric_gauge in gauges_set:
|
||||
raise LcrConnException(f"Duplicate gauge value found: {str_gauge}")
|
||||
else:
|
||||
gauges_set.add(numeric_gauge)
|
||||
# Return value
|
||||
return DataSubset(tuple(gauges_set))
|
||||
|
||||
@staticmethod
|
||||
def from_file(filename: Path) -> "DataSubset":
|
||||
with open(filename, "r", encoding="utf-8") as f:
|
||||
legal_lines = filter(lambda line: line != "", (line.strip() for line in f))
|
||||
return DataSubset.from_iterable(legal_lines)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DataSet:
|
||||
"""The dataset include 3 lists of available device gauge values for resistor, capacitor and inductor"""
|
||||
|
||||
resistor: DataSubset
|
||||
"""A list of available device gauge values for resistor"""
|
||||
capacitor: DataSubset
|
||||
"""A list of available device gauge values for capacitor"""
|
||||
inductor: DataSubset
|
||||
"""A list of available device gauge values for inductor"""
|
||||
|
||||
@staticmethod
|
||||
def from_iterable(
|
||||
resistor: Iterable[str], capacitor: Iterable[str], inductor: Iterable[str]
|
||||
) -> "DataSet":
|
||||
return DataSet(
|
||||
DataSubset.from_iterable(resistor),
|
||||
DataSubset.from_iterable(capacitor),
|
||||
DataSubset.from_iterable(inductor),
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def from_file(resistor: Path, capacitor: Path, inductor: Path) -> "DataSet":
|
||||
return DataSet(
|
||||
DataSubset.from_file(resistor),
|
||||
DataSubset.from_file(capacitor),
|
||||
DataSubset.from_file(inductor),
|
||||
)
|
||||
Reference in New Issue
Block a user