[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
|
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
|
||||||
inputunipolar : bool
|
inputtracecapacityunit: str
|
||||||
inputtraceid : list[str]
|
inputunipolar: bool
|
||||||
inputtracescale : list[int]
|
inputtraceid: list[str]
|
||||||
inputtraceunit : list[str]
|
inputtracescale: list[int]
|
||||||
inputtracedevice : list[str]
|
inputtraceunit: list[str]
|
||||||
inputtracechannel : list[int]
|
inputtracedevice: list[str]
|
||||||
|
inputtracechannel: list[int]
|
||||||
inputtracereference: list[str]
|
inputtracereference: list[str]
|
||||||
inputtracemaxvalue : list[int]
|
inputtracemaxvalue: list[int]
|
||||||
inputtracecenter : list[bool]
|
inputtracecenter: list[bool]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class Output:
|
class Output:
|
||||||
outputtraceid : list[str]
|
outputtraceid: list[str]
|
||||||
outputtracedevice : list[str]
|
outputtracedevice: list[str]
|
||||||
outputtracechannel : list[int]
|
outputtracechannel: list[int]
|
||||||
outputtracescale : list[int]
|
outputtracescale: list[int]
|
||||||
outputtraceunit : list[str]
|
outputtraceunit: list[str]
|
||||||
outputtracemaxrate : list[ValueUnit]
|
outputtracemaxrate: list[int]
|
||||||
outputtracemodality: list[str]
|
outputtracemaxrateunit: 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()
|
||||||
|
Loading…
Reference in New Issue
Block a user