"""配置文件路径解析(先于 config 加载,供测试在导入应用前切换配置文件)""" from __future__ import annotations from pathlib import Path from typing import Optional _CONFIG_FILE: Optional[Path] = None def project_root() -> Path: """项目根目录(含 config/、app/ 的目录)""" return Path(__file__).resolve().parents[2] def set_config_file(path: Path) -> None: """指定使用的应用配置文件(仅测试应在导入 app.core.config 之前调用)""" global _CONFIG_FILE _CONFIG_FILE = Path(path) def resolved_config_path() -> Path: if _CONFIG_FILE is not None: return _CONFIG_FILE return project_root() / "config" / "app.json"