[config] fixing config loader

This commit is contained in:
wendtalexander 2024-10-16 07:56:32 +02:00
parent 351850e05c
commit cc9089f503

View File

@ -2,86 +2,105 @@ 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()
class ValueUnit(TypedDict):
value: Union[int, float]
@dataclass
class ValueUnit:
value: int
unit: str
@dataclass
class Settings:
Repros: list[str]
Path: str
repros: list[str]
path: str
@dataclass
class Metadata:
Identifier: str
SetupName: str
Maintainer: str
Creator: str
Location: str
SetupLocation: str
Lab: str
Institute: str
University: str
Address: str
@dataclass
class Input:
inputsamplerate : ValueUnit
inputsamplerate: int
inputsamplerateunit: str
# BufferSize
inputtracecapacity : ValueUnit
inputunipolar : bool
inputtraceid : list[str]
inputtracescale : list[int]
inputtraceunit : list[str]
inputtracedevice : list[str]
inputtracechannel : list[int]
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]
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[ValueUnit]
outputtracemodality: list[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 Data:
input: Input
output: Output
@dataclass
class SimData:
input:
inputsamplerate : 20kHz
inputtracecapacity : 600s
output:
outputtraceid : [ Sinus ]
outputtracedevice : [ ao-0 ]
outputtracechannel : [ 0 ]
outputtracescale : [ 1 ]
outputtraceunit : [ V ]
outputtracemaxrate : [ 40kHz ]
outputtracemodality: [ electric ]
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
simdata: SimData
sinus: Sinus
@dataclass
class Config:
# Path: str
settings: Settings
metadata: Metadata
pyrelacs: PyRelacs
@classmethod
def load_config(cls):
@ -94,3 +113,14 @@ class Config:
return yaml.full_load(config_file)
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()