8d626f606e
CI / Lint, Typecheck & Test (push) Has been cancelled
pf graph 支持 ASCII 分层树/Mermaid/list/deps 四种输出格式; yaml_loader._safe_load 包装 YAMLError 为 ValueError 统一错误处理。
2.3 KiB
2.3 KiB
迭代 12:CLI 可视化
本轮目标
pf graph <yaml>命令 —— 终端 DAG 可视化--format ascii(默认):rich Tree 渲染分层结构 + 依赖关系表--format mermaid:输出 Mermaid 语法(可粘贴到 mermaid.live)--format list:仅列出任务名(与yamlrun --list一致)--format deps:纯依赖关系表--orientation:Mermaid 方向(TD/TB/BT/LR/RL)
pf yamlrun --progress—— 启用 rich 进度条(RichProgressMonitor)
改动文件清单
src/pyflowx/cli/pf.py—— 新增pf graph命令、yamlrun --progress选项tests/cli/test_pf_graph.py—— 新增 CLI 测试README.md—— 更新文档
关键设计
1. pf graph <yaml>
ASCII 默认渲染:用 rich.tree.Tree 按层分组,每层显示任务名。
再附 rich.table.Table 显示每个任务的硬依赖/软依赖/标签。
Mermaid 输出:复用 Graph.to_mermaid(),直接打印(不加颜色,便于复制)。
deps 表格:纯依赖关系表(无分层信息)。
list:与 yamlrun --list 行为一致。
2. pf yamlrun --progress
- 添加
--progressflag - 启用时调用
run(graph, progress=True) - 与
--quiet互斥(quiet 时无进度条)
3. 路由
pf graph 作为新的子命令(与 yamlrun 同级),不通过 @px.tool 注册。
验收标准
pf graph pipeline.yaml默认 ASCII 渲染pf graph pipeline.yaml --format mermaid输出 Mermaid 文本pf graph pipeline.yaml --format list列出任务名pf graph pipeline.yaml --format deps显示依赖表pf graph pipeline.yaml --orientation LR自定义方向pf yamlrun pipeline.yaml --progress启用进度条- YAML 加载失败时显示错误信息并返回非零退出码
- 覆盖率 ≥ 95%
- ruff / pyrefly / pytest 全部通过
验证结果
- ruff:All checks passed(含 format)
- pyrefly:0 errors
- pytest:1271 passed(含 14 个新增 CLI 测试)
- 覆盖率:97.29%(yaml_loader.py 100%;cli/pf.py 按项目惯例 omit 不计入覆盖率)
- 冒烟测试:
pf graph三种格式(ASCII/Mermaid/list)+pf yamlrun --progress均通过 - 附加修复:
yaml_loader._safe_load包装yaml.YAMLError为ValueError,统一错误处理
遗留事项
- 无