certflow.config.loader module¶
YAML 配置加载器
支持环境变量替换、文件包含和配置验证。 自动适配开发环境和打包环境。
示例
>>> from certflow.config.loader import ConfigLoader, get_config
>>>
>>> # 方式1: 使用 ConfigLoader 类
>>> loader = ConfigLoader()
>>> config = loader.load() # 自动查找配置文件
>>> print(config.app.name)
>>>
>>> # 方式2: 使用全局单例
>>> config = get_config()
>>> print(config.database.host)
- class certflow.config.loader.ConfigLoader(config_dir=None)[源代码]¶
基类:
object配置加载器,负责加载和处理YAML配置文件
- 提供完整的配置文件加载功能,包括:
自动适配开发环境和打包环境
环境变量替换 (${ENV_VAR:default})
配置文件包含 (!include)
配置验证 (Pydantic)
- 参数:
config_dir (Path | None)
- config_dir¶
配置文件所在目录的路径
- Type:
Path
- _config¶
内部存储的配置对象
- Type:
RootConfig | None
示例
>>> # 基本使用 >>> loader = ConfigLoader() >>> config = loader.load() # 自动查找配置文件 >>> print(config.app.name) "CertFlow" >>> >>> # 指定配置目录 >>> loader = ConfigLoader(Path("/path/to/config")) >>> config = loader.load("custom_config.yaml")
- load(config_file='config.yaml')[源代码]¶
加载配置文件并进行处理
- 执行完整的配置加载流程:
查找配置文件
读取文件内容
展开顶层 !include 指令
解析 YAML
处理嵌套的 !include 标签
替换环境变量
验证配置结构
- 参数:
config_file (str) -- 配置文件名,默认为 "config.yaml"
- 返回:
经过验证的配置对象
- 返回类型:
- 抛出:
FileNotFoundError -- 指定的配置文件不存在
yaml.YAMLError -- YAML语法错误或格式不正确
ValidationError -- 配置内容不符合定义的数据模型
示例
>>> loader = ConfigLoader() >>> config = loader.load() # 加载默认配置 >>> print(config.app.name) "CertFlow" >>> >>> # 加载自定义配置文件 >>> config = loader.load("custom_config.yaml")
- reload(config_file='config.yaml')[源代码]¶
重新加载配置文件
清除缓存配置并重新加载,用于运行时配置更新.
- 参数:
config_file (str) -- 配置文件名
- 返回:
重新加载后的配置对象
- 返回类型:
示例
>>> loader = ConfigLoader() >>> config = loader.load() # 首次加载 >>> # ... 配置文件被修改 ... >>> config = loader.reload() # 重新加载
- property config: RootConfig¶
获取已加载的配置对象
必须先调用 load() 方法,否则会抛出运行时错误.
- 返回:
已加载的配置对象
- 返回类型:
- 抛出:
RuntimeError -- 配置尚未加载
示例
>>> loader = ConfigLoader() >>> loader.load() >>> config = loader.config # 获取配置
- certflow.config.loader.get_config(config_dir=None, reload=False)[源代码]¶
获取全局配置实例(单例模式)
提供便捷的全局配置访问接口,避免在多处重复创建 ConfigLoader 实例. 首次调用时会自动加载配置,后续调用返回缓存的配置对象.
- 参数:
- 返回:
全局配置对象实例
- 返回类型:
示例
>>> from certflow.config.loader import get_config >>> >>> # 首次调用,自动加载配置 >>> config = get_config() >>> print(config.app.name) "CertFlow" >>> >>> # 使用缓存配置 >>> db_config = get_config().database >>> >>> # 强制重新加载 >>> new_config = get_config(reload=True)