certflow.config.loader module

YAML 配置加载器

支持环境变量替换、文件包含和配置验证.

class ConfigLoader(config_dir=None)[源代码]

基类:object

配置加载器,负责加载和处理YAML配置文件

提供完整的配置文件加载功能,包括环境变量替换、配置文件包含和配置验证. 支持从指定目录加载YAML格式的配置文件,并自动处理配置中的动态内容.

参数:

config_dir (Path | None)

config_dir

配置文件所在目录的路径,默认为项目根目录下的config文件夹

_config

内部存储的配置对象,仅在调用load()后有效

示例

>>> from pathlib import Path
>>> loader = ConfigLoader(Path("/path/to/config"))
>>> config = loader.load("app_config.yaml")
>>> print(config.database.host)
__init__(config_dir=None)[源代码]

初始化配置加载器实例

如果不指定配置目录,会自动定位到项目根目录下的config文件夹. 开发环境: 通过当前文件向上查找4级父目录确定. 打包环境: 使用可执行文件所在目录 (sys.frozen).

参数:

config_dir (Path | None) -- 配置文件所在目录路径,默认为None时自动使用项目config目录

load(config_file='config.yaml')[源代码]

加载配置文件并进行处理

执行完整的配置加载流程: 读取文件 -> 展开顶层包含 -> 解析YAML -> 处理嵌套包含 -> 替换环境变量 -> 验证配置结构.

参数:

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

返回:

经过验证的配置对象,包含所有处理后的配置数据

返回类型:

RootConfig

抛出:
  • FileNotFoundError -- 指定的配置文件不存在

  • yaml.YAMLError -- YAML语法错误或格式不正确

  • ValidationError -- 配置内容不符合定义的数据模型

property config: RootConfig

获取已加载的配置对象

该属性提供对加载后的配置对象的只读访问. 必须先调用load()方法,否则会抛出运行时错误.

返回:

已加载的配置对象

返回类型:

RootConfig

抛出:

RuntimeError -- 配置尚未加载,需要先调用load()方法

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()  # 首次调用,自动加载配置
>>> db_config = get_config().database  # 使用缓存配置
>>> new_config = get_config(reload=True)  # 强制重新加载