37 lines
951 B
Python
37 lines
951 B
Python
import os
|
|
import yaml
|
|
from functools import reduce
|
|
|
|
CONFIG_PATH = os.path.dirname(__file__)
|
|
|
|
def load_yaml(config_name):
|
|
|
|
with open(os.path.join(CONFIG_PATH, config_name)+ '.yaml') as file:
|
|
config = yaml.safe_load(file)
|
|
|
|
return config
|
|
|
|
class DotDict(dict):
|
|
def __getattr__(self, k):
|
|
try:
|
|
v = self[k]
|
|
except:
|
|
return super().__getattr__(k)
|
|
if isinstance(v, dict):
|
|
return DotDict(v)
|
|
return v
|
|
|
|
def __getitem__(self, k):
|
|
if isinstance(k, str) and '.' in k:
|
|
k = k.split('.')
|
|
if isinstance(k, (list, tuple)):
|
|
return reduce(lambda d, kk: d[kk], k, self)
|
|
return super().__getitem__(k)
|
|
|
|
def get(self, k, default=None):
|
|
if isinstance(k, str) and '.' in k:
|
|
try:
|
|
return self[k]
|
|
except KeyError:
|
|
return default
|
|
return super().get(k, default=default) |