MASAI / app /config.py
DmitryRyumin's picture
Summary
1688157
raw
history blame
1.3 kB
"""
File: config.py
Author: Dmitry Ryumin, Maxim Markitantov, Elena Ryumina, Anastasia Dvoynikova, and Alexey Karpov
Description: Configuration module for handling settings.
License: MIT License
"""
import toml
from pathlib import Path
from collections.abc import Callable
from types import SimpleNamespace
CONFIG_NAME = "config.toml"
def flatten_dict(prefix: str, d: dict) -> dict:
result = {}
for k, v in d.items():
result.update(
flatten_dict(f"{prefix}{k}_", v)
if isinstance(v, dict)
else {f"{prefix}{k}": v}
)
return result
def load_tab_creators(
file_path: str, available_functions: dict[str, Callable]
) -> dict[str, Callable]:
with open(file_path, "r") as f:
config = toml.load(f)
tab_creators_data = config.get("TabCreators", {})
return {key: available_functions[value] for key, value in tab_creators_data.items()}
def load_config(file_path: str) -> SimpleNamespace:
with open(file_path, "r") as f:
config = toml.load(f)
config_data = flatten_dict("", config)
config_namespace = SimpleNamespace(**config_data)
setattr(config_namespace, "Path_APP", Path(__file__).parent.parent.resolve())
return config_namespace
config_data = load_config(CONFIG_NAME)