132 lines
2.9 KiB
Python
132 lines
2.9 KiB
Python
from typing import TypedDict, Union
|
|
from dataclasses import dataclass
|
|
import pathlib
|
|
|
|
|
|
import dacite
|
|
import yaml
|
|
from dacite import from_dict
|
|
from IPython import embed
|
|
|
|
from pyrelacs.util.logging import config_logging
|
|
|
|
log = config_logging()
|
|
|
|
|
|
@dataclass
|
|
class ValueUnit:
|
|
value: int
|
|
unit: str
|
|
|
|
|
|
@dataclass
|
|
class Settings:
|
|
repros: list[str]
|
|
path: str
|
|
|
|
|
|
@dataclass
|
|
class Metadata:
|
|
SetupName: str
|
|
Maintainer: str
|
|
Creator: str
|
|
SetupLocation: str
|
|
Lab: str
|
|
Institute: str
|
|
University: str
|
|
Address: str
|
|
|
|
|
|
@dataclass
|
|
class Input:
|
|
inputsamplerate: int
|
|
inputsamplerateunit: str
|
|
# BufferSize
|
|
inputtracecapacity: int
|
|
inputtracecapacityunit: str
|
|
inputunipolar: bool
|
|
inputtraceid: list[str]
|
|
inputtracescale: list[int]
|
|
inputtraceunit: list[str]
|
|
inputtracedevice: list[str]
|
|
inputtracechannel: list[int]
|
|
inputtracereference: list[str]
|
|
inputtracemaxvalue: list[int]
|
|
inputtracecenter: list[bool]
|
|
|
|
|
|
@dataclass
|
|
class Output:
|
|
outputtraceid: list[str]
|
|
outputtracedevice: list[str]
|
|
outputtracechannel: list[int]
|
|
outputtracescale: list[int]
|
|
outputtraceunit: list[str]
|
|
outputtracemaxrate: list[int]
|
|
outputtracemaxrateunit: list[str]
|
|
outputtracemodality: list[str]
|
|
|
|
|
|
@dataclass
|
|
class Data:
|
|
input: Input
|
|
output: Output
|
|
|
|
|
|
@dataclass
|
|
class Sinus:
|
|
inputsamplerate: int
|
|
inputsamplerateunit: str
|
|
# BufferSize
|
|
inputtracecapacity: int
|
|
inputtracecapacityunit: str
|
|
outputtraceid: list[str]
|
|
outputtracedevice: list[str]
|
|
outputtracechannel: list[int]
|
|
outputtracescale: list[int]
|
|
outputtraceunit: list[str]
|
|
outputtracemaxrate: list[int]
|
|
outputtracemaxrateunit: list[str]
|
|
outputtracemodality: list[str]
|
|
|
|
|
|
@dataclass
|
|
class PyRelacs:
|
|
data: Data
|
|
sinus: Sinus
|
|
|
|
|
|
@dataclass
|
|
class Config:
|
|
settings: Settings
|
|
metadata: Metadata
|
|
pyrelacs: PyRelacs
|
|
|
|
|
|
def load_config():
|
|
pyrelacs_config_path = pathlib.Path(__file__).parent.parent / "config.yaml"
|
|
log.debug(pyrelacs_config_path)
|
|
if not pyrelacs_config_path.is_file():
|
|
log.error("Config File was not found")
|
|
with open(pyrelacs_config_path, "r") as config_file:
|
|
try:
|
|
data = yaml.full_load(config_file)
|
|
try:
|
|
config = from_dict(data_class=Config, data=data)
|
|
return config
|
|
except dacite.DaciteError as e:
|
|
log.error(f"Invalid Config, {e}")
|
|
except yaml.YAMLError as e:
|
|
raise yaml.YAMLError(f"Error parsing YAML file: {e}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pyrelacs_config_path = pathlib.Path(__file__).parent.parent / "config.yaml"
|
|
log.debug(pyrelacs_config_path)
|
|
if not pyrelacs_config_path.is_file():
|
|
log.error("Config File was not found")
|
|
with open(pyrelacs_config_path, "r") as config_file:
|
|
data = yaml.full_load(config_file)
|
|
embed()
|
|
exit()
|