__init__.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from typing import Any, Callable
  2. from .config import Config
  3. from .loader_config import ConfigLoader
  4. """配置模块初始化文件
  5. 该模块负责初始化配置加载器,并提供获取配置的接口。
  6. """
  7. # 创建全局配置加载器实例
  8. config_loader = ConfigLoader()
  9. def get_config() -> Config:
  10. """获取配置实例
  11. Returns:
  12. Config: 配置实例
  13. Raises:
  14. RuntimeError: 配置加载失败时抛出
  15. """
  16. try:
  17. return config_loader._config
  18. except Exception as e:
  19. raise RuntimeError("获取配置失败") from e
  20. # 暴露配置实例
  21. config: Config = get_config()
  22. def get_config_value(key: str, default=None) -> Any:
  23. """获取配置值
  24. Args:
  25. key (str): 配置项key
  26. default (Any): 默认值
  27. Returns:
  28. Any: 配置项值
  29. Raises:
  30. RuntimeError: 配置加载失败时抛出
  31. """
  32. try:
  33. return config_loader.get(key, default)
  34. except Exception as e:
  35. raise RuntimeError(f"获取配置项{key}失败") from e
  36. def on_config_change(callback: Callable):
  37. """注册配置变更回调
  38. Args:
  39. callback (Callable): 配置变更回调函数
  40. Raises:
  41. RuntimeError: 回调注册失败时抛出
  42. """
  43. try:
  44. config_loader.on_config_change(callback)
  45. except Exception as e:
  46. raise RuntimeError("注册配置变更回调失败") from e
  47. __all__ = [
  48. 'Config', 'ConfigLoader', 'config', 'get_config', 'get_config_value',
  49. 'on_config_change'
  50. ]