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')[源代码]

加载配置文件并进行处理

执行完整的配置加载流程:
  1. 查找配置文件

  2. 读取文件内容

  3. 展开顶层 !include 指令

  4. 解析 YAML

  5. 处理嵌套的 !include 标签

  6. 替换环境变量

  7. 验证配置结构

参数:

config_file (str) -- 配置文件名,默认为 "config.yaml"

返回:

经过验证的配置对象

返回类型:

RootConfig

抛出:
  • 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) -- 配置文件名

返回:

重新加载后的配置对象

返回类型:

RootConfig

示例

>>> loader = ConfigLoader()
>>> config = loader.load()  # 首次加载
>>> # ... 配置文件被修改 ...
>>> config = loader.reload()  # 重新加载
property config: RootConfig

获取已加载的配置对象

必须先调用 load() 方法,否则会抛出运行时错误.

返回:

已加载的配置对象

返回类型:

RootConfig

抛出:

RuntimeError -- 配置尚未加载

示例

>>> loader = ConfigLoader()
>>> loader.load()
>>> config = loader.config  # 获取配置
certflow.config.loader.get_config(config_dir=None, reload=False)[源代码]

获取全局配置实例(单例模式)

提供便捷的全局配置访问接口,避免在多处重复创建 ConfigLoader 实例. 首次调用时会自动加载配置,后续调用返回缓存的配置对象.

参数:
  • config_dir (Path | None) -- 配置文件所在目录路径,首次调用时可指定,后续调用此参数无效

  • reload (bool) -- 是否强制重新加载配置,设为 True 时会重新读取配置文件

返回:

全局配置对象实例

返回类型:

RootConfig

示例

>>> 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)
certflow.config.loader.reset_config()[源代码]

重置全局配置实例

清除缓存的配置,下次调用 get_config() 时会重新加载.

返回:

该函数仅清除全局加载器与配置缓存,无返回值。

返回类型:

无 (None)

示例

>>> reset_config()  # 清除缓存
>>> config = get_config()  # 重新加载