[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,39 +2,48 @@ from typing import TypedDict, Union
from dataclasses import dataclass from dataclasses import dataclass
import pathlib import pathlib
import dacite
import yaml import yaml
from dacite import from_dict
from IPython import embed from IPython import embed
from pyrelacs.util.logging import config_logging from pyrelacs.util.logging import config_logging
log = config_logging() log = config_logging()
class ValueUnit(TypedDict):
value: Union[int, float] @dataclass
class ValueUnit:
value: int
unit: str unit: str
@dataclass @dataclass
class Settings: class Settings:
Repros: list[str] repros: list[str]
Path: str path: str
@dataclass @dataclass
class Metadata: class Metadata:
Identifier: str SetupName: str
Maintainer: str Maintainer: str
Creator: str Creator: str
Location: str SetupLocation: str
Lab: str Lab: str
Institute: str Institute: str
University: str University: str
Address: str Address: str
@dataclass @dataclass
class Input: class Input:
inputsamplerate : ValueUnit inputsamplerate: int
inputsamplerateunit: str
# BufferSize # BufferSize
inputtracecapacity : ValueUnit inputtracecapacity: int
inputtracecapacityunit: str
inputunipolar: bool inputunipolar: bool
inputtraceid: list[str] inputtraceid: list[str]
inputtracescale: list[int] inputtracescale: list[int]
@ -45,6 +54,7 @@ class Input:
inputtracemaxvalue: list[int] inputtracemaxvalue: list[int]
inputtracecenter: list[bool] inputtracecenter: list[bool]
@dataclass @dataclass
class Output: class Output:
outputtraceid: list[str] outputtraceid: list[str]
@ -52,36 +62,45 @@ class Output:
outputtracechannel: list[int] outputtracechannel: list[int]
outputtracescale: list[int] outputtracescale: list[int]
outputtraceunit: list[str] outputtraceunit: list[str]
outputtracemaxrate : list[ValueUnit] outputtracemaxrate: list[int]
outputtracemaxrateunit: list[str]
outputtracemodality: list[str] outputtracemodality: list[str]
@dataclass @dataclass
class Data: class Data:
input: Input input: Input
output: Output output: Output
@dataclass @dataclass
class SimData: class Sinus:
input: inputsamplerate: int
inputsamplerate : 20kHz inputsamplerateunit: str
inputtracecapacity : 600s # BufferSize
output: inputtracecapacity: int
outputtraceid : [ Sinus ] inputtracecapacityunit: str
outputtracedevice : [ ao-0 ] outputtraceid: list[str]
outputtracechannel : [ 0 ] outputtracedevice: list[str]
outputtracescale : [ 1 ] outputtracechannel: list[int]
outputtraceunit : [ V ] outputtracescale: list[int]
outputtracemaxrate : [ 40kHz ] outputtraceunit: list[str]
outputtracemodality: [ electric ] outputtracemaxrate: list[int]
outputtracemaxrateunit: list[str]
outputtracemodality: list[str]
@dataclass @dataclass
class PyRelacs: class PyRelacs:
data: Data data: Data
simdata: SimData sinus: Sinus
@dataclass @dataclass
class Config: class Config:
# Path: str settings: Settings
metadata: Metadata
pyrelacs: PyRelacs
@classmethod @classmethod
def load_config(cls): def load_config(cls):
@ -94,3 +113,14 @@ class Config:
return yaml.full_load(config_file) return yaml.full_load(config_file)
except yaml.YAMLError as e: except yaml.YAMLError as e:
raise yaml.YAMLError(f"Error parsing YAML file: {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()