[config] fixing config loader
This commit is contained in:
parent
351850e05c
commit
cc9089f503
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user