| from utils.config_loader import ( |
| CONFIG_KEYS, |
| get_config_dict, |
| get_config_keys, |
| get_config_value, |
| reload_config as _reload_config, |
| ) |
|
|
|
|
| __all__ = [*CONFIG_KEYS, "get_config_dict", "get_config_keys", "get_config_value", "reload_config"] |
|
|
|
|
| def _refresh_module_globals() -> None: |
| previous_keys = tuple(globals().get("CONFIG_KEYS", ())) |
| current_keys = get_config_keys() |
|
|
| for name in previous_keys: |
| if name not in current_keys: |
| globals().pop(name, None) |
|
|
| globals().update(get_config_dict()) |
| globals()["CONFIG_KEYS"] = current_keys |
| globals()["__all__"] = [ |
| *current_keys, |
| "get_config_dict", |
| "get_config_keys", |
| "get_config_value", |
| "reload_config", |
| ] |
|
|
|
|
| _refresh_module_globals() |
|
|
|
|
| def __getattr__(name: str): |
| if name in get_config_keys(): |
| return get_config_value(name) |
| raise AttributeError(f"module {__name__!r} has no attribute {name!r}") |
|
|
|
|
| def reload_config(): |
| data = _reload_config() |
| _refresh_module_globals() |
| return data |
|
|