certflow.config.paths_override module¶
per-machine 目录覆盖层 (paths.local.yaml) 读取器 + deep-merge.
设计见 docs/discussions/resource-paths-audit.md §13。与现有 ConfigLoader / _cfg / RootConfig(extra="forbid") 严格校验共存:采用「点路径逐键生效」,不重建模型,规避 extra=forbid 限制。
覆盖层只承载 paths.* 目录类覆盖,不自动回写(区别于 userconfig.yaml 的偏好/状态)。
- certflow.config.paths_override.load_paths_local(config_dir=None)[源代码]¶
读取本机目录覆盖层。
文件缺失/为空/解析失败 → 返回 {},完全不影响 base 配置。
支持 ${ENV_VAR:default} 环境变量替换;不做 !include 展开(覆盖层自包含)。
结果懒缓存;修改后调用 reload_paths_local() 失效。
- certflow.config.paths_override.reload_paths_local()[源代码]¶
清除覆盖层缓存,下次 load_paths_local() 重新读取。
- 返回类型:
None
- certflow.config.paths_override.cfg(key, default=None)[源代码]¶
统一配置读取:覆盖层 > 基础层,按值类型智能解析。
覆盖层(paths.local.yaml)含该点路径 → 取覆盖值;否则回退 _cfg(key, default)。 **对任意键生效**(不限于 paths.*),实现全局可覆盖。
- 解析规则(仅对"像路径的字符串"走 _resolve_path,其余原样返回):
int / dict / list / bool / None → 原样返回(杜绝把数字/字典误当路径解析成垃圾路径)
普通字符串(文件名、标签、单段目录名)→ 原样返回
含分隔符或绝对路径的字符串 → 解析为 BASE_DIR 下的绝对路径
未配置 paths.local.yaml 时行为与 _cfg 完全一致。
这是 pcfg 的继任者:pcfg 现为其别名,新代码请直接用 cfg。
- certflow.config.paths_override.pcfg(key, default=None)¶
统一配置读取:覆盖层 > 基础层,按值类型智能解析。
覆盖层(paths.local.yaml)含该点路径 → 取覆盖值;否则回退 _cfg(key, default)。 **对任意键生效**(不限于 paths.*),实现全局可覆盖。
- 解析规则(仅对"像路径的字符串"走 _resolve_path,其余原样返回):
int / dict / list / bool / None → 原样返回(杜绝把数字/字典误当路径解析成垃圾路径)
普通字符串(文件名、标签、单段目录名)→ 原样返回
含分隔符或绝对路径的字符串 → 解析为 BASE_DIR 下的绝对路径
未配置 paths.local.yaml 时行为与 _cfg 完全一致。
这是 pcfg 的继任者:pcfg 现为其别名,新代码请直接用 cfg。
- certflow.config.paths_override.set_path_override(key, value)[源代码]¶
写入一个路径覆盖(点路径)。独立落盘,不触碰 userconfig.yaml。