taolib.symphony.config.resolver#
Symphony 配置合并与解析。
实现配置的深度合并、环境变量替换、路径解析以及最终配置组装。 合并优先级:CLI > env $VAR > WORKFLOW.md YAML > symphony.toml [defaults] > Pydantic 默认值。
Attributes#
Functions#
|
深度合并两个字典。 |
|
替换配置中的 $VAR_NAME 环境变量引用。 |
|
递归替换环境变量引用。 |
|
解析配置中的路径值。 |
|
解析单个路径值。 |
|
组装最终配置。 |
|
将 CLI 参数应用到配置字典。 |
Module Contents#
- taolib.symphony.config.resolver._ENV_VAR_RE#
- taolib.symphony.config.resolver.deep_merge(base: dict, override: dict) dict#
深度合并两个字典。
override 中的值覆盖 base 中的同名键。如果两边的值都是字典, 则递归合并。base 和 override 均不被修改。
- 参数:
base -- 基础配置字典。
override -- 覆盖配置字典。
- 返回:
合并后的新字典。
- taolib.symphony.config.resolver.resolve_env_vars(config: dict) dict#
替换配置中的 $VAR_NAME 环境变量引用。
仅对值为
$VAR_NAME形式的字符串进行替换。 如果环境变量不存在或为空字符串,则保留原始$VAR_NAME引用。- 参数:
config -- 原始配置字典。
- 返回:
替换环境变量后的配置字典。
- taolib.symphony.config.resolver.resolve_paths(config: dict, base_dir: pathlib.Path) dict#
解析配置中的路径值。
对已知的路径字段进行
~展开和相对路径解析: -~展开为用户主目录。 - 相对路径基于 base_dir 解析为绝对路径。 - 仅处理已知的路径字段,不重写 URI 或任意命令字符串。- 参数:
config -- 配置字典。
base_dir -- 相对路径的基准目录(通常为 WORKFLOW.md 所在目录)。
- 返回:
路径解析后的配置字典。
- taolib.symphony.config.resolver._resolve_path_value(value: object, base_dir: pathlib.Path) object#
解析单个路径值。
- taolib.symphony.config.resolver.resolve_config(cli_args: dict, toml_path: pathlib.Path | None, workflow_path: pathlib.Path) taolib.symphony.config.schema.SymphonyConfig#
组装最终配置。
按优先级从低到高合并配置源: 1. Pydantic 默认值 2. symphony.toml [defaults] 段 3. WORKFLOW.md YAML 前置数据 4. 环境 $VAR 替换 5. 路径解析 6. CLI 参数覆盖
- 参数:
cli_args -- CLI 参数字典,例如
{"port": 8080, "logs_root": Path("./log")}。toml_path -- symphony.toml 文件路径,为 None 则跳过。
workflow_path -- WORKFLOW.md 文件路径。
- 返回:
校验后的 SymphonyConfig 实例。
- 抛出:
WorkflowLoadError -- WORKFLOW.md 无法加载。
ConfigError -- TOML 配置无法加载。
ValueError -- 配置校验失败。