pbl_validation/scripts/load_path.py
2026-09-17 23:45:03 +08:00

76 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""pbl_validation 模块路径注册scripts/load_path.py
作用:把模块包目录加入 sys.path并声明契约接口路径供应用启动器
app/pbls.py init())与部署脚本按统一约定发现模块。
用法:
python3 scripts/load_path.py # 打印模块路径与契约清单
from scripts.load_path import load_path; load_path()
"""
from __future__ import annotations
import json
import os
import sys
MODULE_NAME = "pbl_validation"
# 模块根目录scripts/ 的上一级)
MODULE_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 契约接口路径5 个,与 api.API_REGISTRY 一一对应)
API_PATHS = [
"/pbl_validation/api/pbl_validation_run.dspy",
"/pbl_validation/api/pbl_validation_get.dspy",
"/pbl_validation/api/pbl_validation_list.dspy",
"/pbl_validation/api/pbl_validation_rule_list.dspy",
"/pbl_validation/api/pbl_validation_rule_save.dspy",
]
# 数据表2 张)
TABLES = ["pbl_validation_rule", "pbl_validation_result"]
# 挂载入口
LOAD_FUNC = "pbl_validation.init.load_pbl_validation"
def load_path(verbose: bool = False) -> str:
"""把模块根目录加入 sys.path幂等返回模块根目录。"""
if MODULE_ROOT not in sys.path:
sys.path.insert(0, MODULE_ROOT)
if verbose:
print("[%s] sys.path += %s" % (MODULE_NAME, MODULE_ROOT))
return MODULE_ROOT
def manifest() -> dict:
"""模块自描述清单(路径 / 契约 / 表 / 挂载入口)。"""
return {
"module": MODULE_NAME,
"root": MODULE_ROOT,
"package_dir": os.path.join(MODULE_ROOT, MODULE_NAME),
"load_func": LOAD_FUNC,
"api_paths": list(API_PATHS),
"tables": list(TABLES),
"sql": os.path.join(MODULE_ROOT, "sql", "pbl_validation.sql"),
"tests": os.path.join(MODULE_ROOT, "tests", "test_validation_engine.py"),
}
def main() -> int:
load_path(verbose=True)
info = manifest()
print(json.dumps(info, ensure_ascii=False, indent=2))
try:
from pbl_validation.init import module_manifest # noqa: WPS433
print(json.dumps(module_manifest(), ensure_ascii=False, indent=2))
except Exception as exc: # 平台依赖缺失时只报路径信息,不失败
print("[WARN] module_manifest 不可用:%s" % exc)
return 0
if __name__ == "__main__":
sys.exit(main())