@deepnote/反应
深注笔记本的活性和依赖性图.
所需资源
此软件包需要 Py 3 编辑 金贾2 Python 库将安装在其运行的系统上 。 这个 jinja2 库用于解析 SQL 块中的变量依赖性.
您可以通过 pip 安装此要求 :
pip install jinja2
默认情况下, 软件包查找 python3 在系统路径。 您可以通过提供 pythonInterpreter 路径在主要函数的选项中.
概览
这个软件包为分析Deepnote块之间的依赖关系提供公用设备,以构建一个反应图. 它使用基于 Python 的 AST 分析器来识别各种区块类型中定义并使用的变量.
- AST 分析:取出跨Python,SQL,按钮,大数,笔记本功能,和输入-*块的可变定义和用法.
- 依赖跟踪: 识别块如何通过变量互相依赖.
- 反应支持:通过分析块内容,对反应性执行模式进行授权.
使用量
图书馆的主要入口是 getDagForBlocks它分析区块的内容,并构建一个代表其依赖性的定向环行图.
基本示例
import { getDagForBlocks } from "@deepnote/reactivity";
const blocks = [
// ... array of DeepnoteBlock objects
];
const { dag, newlyComputedBlocksContentDeps } = await getDagForBlocks(blocks);
// Access the dependency graph
console.log(dag.nodes);
console.log(dag.edges);
关键函数
getDagForBlocks(blocks, options?):构建笔记本的完整依赖图. 这对于绘制数据流动图和提供依赖可视化等功能很有用. 使用acceptPartialDAG: true在选项中,如果想要收到一个图表,即使有些块有语法错误。 支助pythonInterpreter选项.getDownstreamBlocks(blocks, blocksToExecute, options?): 识别特定上游块执行或修改时需要重新运行的所有块. 这是执行 被动执行确保整个笔记本保持一致。 支助pythonInterpreter选项.getBlockDependencies(blocks, options?): 低级用法,使用AST分析从块内容中提取可变定义和用法. 它有助于检查各个区块的投入和产出,而不构建完整的图表。 支助pythonInterpreter选项.
核心概念
- 节点:笔记本中的每个块都是DAG中的节点. 节点包含关于
inputVariables(使用的可变因素)和outputVariables(变量定义). - 边缘: 如果B区使用由A区所定义的变量,则从A区到B区都存在边缘.
- 反应:通过理解这些依存关系,Deepnote可以在上游块中变换变量时自动确定需要再运行哪些块.