From 02305a4ad33b253ab6d8cb9b3e59b3432005c5f5 Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Wed, 11 Sep 2024 14:47:21 +0200 Subject: [PATCH] new config class to avoid restarting application upon settings change --- src/utils/config.py | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/utils/config.py diff --git a/src/utils/config.py b/src/utils/config.py new file mode 100644 index 0000000..67d004f --- /dev/null +++ b/src/utils/config.py @@ -0,0 +1,71 @@ +from typing import Optional + +import omegaconf + +class Config: + _config: Optional[omegaconf.DictConfig] = None + + def __init__(self, config_path: str): + """ + Loads the configuration file and stores it for future access. + + Args: + config_path (str): Path to the YAML configuration file. + """ + self._config = omegaconf.OmegaConf.load(config_path) + + @property + def institution_name(self)->str: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.institution_name + @property + def loan_duration(self)->int: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.default_loan_duration + @property + def delete_inactive_user_duration(self)->int: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.inactive_user_deletion + @property + def catalogue(self)->bool: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.catalogue + @property + def database(self)->omegaconf.DictConfig: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.database + + @property + def report(self)->omegaconf.DictConfig: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.report + @property + def debug(self)->bool: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.debug + @property + def log_debug(self)->bool: + if self._config is None: + raise RuntimeError("Configuration not loaded") + return self._config.log_debug + + + def updateValue(self, key: str, value: str): + self._config[key] = value + omegaconf.OmegaConf.save(self._config, "config/settings.yaml") + + + + +if __name__ == "__main__": + cfg = Config("config/settings.yaml") + print(cfg.database.path) + + #cfg.updateValue("database.path", "Test") \ No newline at end of file