-
Notifications
You must be signed in to change notification settings - Fork 0
/
system_loader.py
49 lines (37 loc) · 917 Bytes
/
system_loader.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import dataclasses
import pathlib
import os
import yaml
@dataclasses.dataclass
class Log:
output_file: bool
@dataclasses.dataclass
class Settings:
nihongo: str
bool_test: bool
int_test: int
@dataclasses.dataclass
class Conf:
log: Log
settings: Settings
@dataclasses.dataclass
class Loader:
path: pathlib.Path = dataclasses.field(
default=pathlib.Path(os.path.join("conf", "local.yml"))
)
encoding: str = dataclasses.field(default="utf-8")
def load(self):
confDict = {}
source = yaml.safe_load(open(str(self.path), "r+", encoding=self.encoding))
confDict["log"] = Log(**source["log"])
confDict["settings"] = Settings(**source["settings"])
return Conf(**confDict)
@dataclasses.dataclass
class SampleArgs(object):
src: str
dst: str
foo: str
optional_num: int
sw1: bool
sw2: bool
inputs: list