32ca8c1208
CI / Lint, Typecheck & Test (push) Successful in 1m57s
1. 新建 docs/ Sphinx 文档结构 (conf.py + 8 个 rst 章节), napoleon 支持 Google/NumPy docstring, rtd 主题, 自动生成 API 参考与错误家族文档 2. 新建 .readthedocs.yaml 配置, pyproject.toml 加 docs 依赖 3. 删除 runner.py 的 _apply_verbose_to_graph 死代码及对应测试 (功能已移入 executors.run 统一处理) 4. 更新 README: CLI 示例改为 pf 统一入口, 模块结构表补全 cli/pf.py/cli/configs/cli/_ops 等模块 5. 修复版本不一致 (pyproject.toml 0.3.5 → 0.4.5) 6. 加文档徽章链接到 ReadTheDocs
51 lines
1.6 KiB
ReStructuredText
51 lines
1.6 KiB
ReStructuredText
Graph —— DAG 构建
|
||
=================
|
||
|
||
``Graph`` 管理任务集合,提供建构建、校验、分层、可视化能力。
|
||
|
||
构建方式
|
||
--------
|
||
|
||
.. code-block:: python
|
||
|
||
# 图级默认值:TaskSpec 字段为 None 时回退
|
||
defaults = px.GraphDefaults(retry=px.RetryPolicy(max_attempts=2), timeout=60.0)
|
||
|
||
graph = px.Graph.from_specs([...], defaults=defaults) # 整批校验(推荐)
|
||
|
||
# 或增量构建
|
||
graph = px.Graph(defaults=defaults)
|
||
graph.add(px.TaskSpec("a", fn_a))
|
||
graph.add(px.TaskSpec("b", fn_b, ("a",)))
|
||
|
||
常用方法
|
||
--------
|
||
|
||
.. code-block:: python
|
||
|
||
graph.validate() # 显式校验(环检测)
|
||
graph.layers() # 拓扑分层(Kahn 算法)
|
||
graph.to_mermaid() # Mermaid 可视化
|
||
graph.describe() # 人类可读摘要
|
||
graph.subgraph(("api",)) # 按标签切片
|
||
graph.subgraph_by_names(("a", "b")) # 按名称切片
|
||
graph.map("fetch", [1, 2, 3], lambda i: TaskSpec(f"fetch_{i}", ...)) # 批量 fan-out
|
||
|
||
图组合
|
||
------
|
||
|
||
``compose`` / ``GraphComposer`` 把带字符串引用的多个图展开为纯 ``Graph``:
|
||
|
||
.. code-block:: python
|
||
|
||
graphs = {
|
||
"build": px.Graph.from_specs([px.TaskSpec("b", cmd=["echo", "b"])]),
|
||
"all": px.Graph.from_specs(["build", px.TaskSpec("t", cmd=["echo", "t"])]),
|
||
}
|
||
resolved = px.compose(graphs) # "all" 图中的 "build" 引用被展开
|
||
|
||
引用格式:``"command_name"``(整个图)或 ``"command_name.task_name"``(特定任务)。
|
||
``CliRunner`` 内部自动调用 ``compose``。
|
||
|
||
完整方法说明详见 :doc:`/api`。
|