pydantic_graph.persistence
SnapshotStatus module-attribute
SnapshotStatus = Literal[
"created", "pending", "running", "success", "error"
]
快照的状态。
'created'
: 快照已创建但尚未运行。'pending'
: 快照已使用load_next
检索,但尚未运行。'running'
: 快照当前正在运行。'success'
: 快照已成功运行。'error'
: 快照已运行,但发生错误。
NodeSnapshot dataclass
基类:Generic[StateT, RunEndT]
描述图中节点执行的历史步骤。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
state instance-attribute
state: StateT
节点运行之前图的状态。
node instance-attribute
接下来要运行的节点。
start_ts class-attribute
instance-attribute
start_ts: datetime | None = None
节点开始运行的时间戳,在运行开始之前为 None
。
EndSnapshot dataclass
基类:Generic[StateT, RunEndT]
描述图运行结束的历史步骤。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
|
state instance-attribute
state: StateT
图运行结束时图的状态。
Snapshot module-attribute
Snapshot = Union[
NodeSnapshot[StateT, RunEndT],
EndSnapshot[StateT, RunEndT],
]
图运行历史记录中的一个步骤。
Graph.run
返回这些步骤的列表,描述图的执行过程,以及运行返回值。
BaseStatePersistence
基类:ABC
, Generic[StateT, RunEndT]
用于存储图运行状态的抽象基类。
BaseStatePersistence
子类的每个实例都应用于单个图运行。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
|
snapshot_node abstractmethod
async
当下一步是运行节点时,快照图的状态。
此方法应将 NodeSnapshot
添加到持久化。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
状态
|
StateT
|
图的状态。 |
必需 |
next_node
|
BaseNode[StateT, Any, RunEndT]
|
接下来要运行的节点。 |
必需 |
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
112 113 114 115 116 117 118 119 120 121 122 |
|
snapshot_node_if_new abstractmethod
async
snapshot_node_if_new(
snapshot_id: str,
state: StateT,
next_node: BaseNode[StateT, Any, RunEndT],
) -> None
如果快照 ID 在持久化中尚不存在,则快照图的状态。
此方法通常会调用 snapshot_node
,但应以原子方式执行。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
snapshot_id
|
str
|
要检查的快照的 ID。 |
必需 |
状态
|
StateT
|
图的状态。 |
必需 |
next_node
|
BaseNode[StateT, Any, RunEndT]
|
接下来要运行的节点。 |
必需 |
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
|
snapshot_end abstractmethod
async
snapshot_end(state: StateT, end: End[RunEndT]) -> None
当图结束时,快照图的状态。
此方法应将 EndSnapshot
添加到持久化。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
状态
|
StateT
|
图的状态。 |
必需 |
end
|
End[RunEndT]
|
来自运行结束的数据。 |
必需 |
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
140 141 142 143 144 145 146 147 148 149 150 |
|
record_run abstractmethod
record_run(
snapshot_id: str,
) -> AbstractAsyncContextManager[None]
记录节点的运行,如果节点已在运行,则记录错误。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
snapshot_id
|
str
|
要记录的快照的 ID。 |
必需 |
引发
类型 | 描述 |
---|---|
GraphNodeRunningError
|
如果节点状态不是 |
LookupError
|
如果在持久化中找不到快照 ID。 |
返回
类型 | 描述 |
---|---|
AbstractAsyncContextManager[None]
|
一个异步上下文管理器,用于记录节点的运行。 |
特别是,这应设置
NodeSnapshot.status
为'running'
,NodeSnapshot.start_ts
为运行开始时间。NodeSnapshot.status
为'success'
或'error'
,NodeSnapshot.duration
为运行结束时间。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
|
load_next abstractmethod
async
load_next() -> NodeSnapshot[StateT, RunEndT] | None
检索状态为 'created
' 的节点快照,并将其状态设置为 'pending'
。
这由 Graph.iter_from_persistence
使用,以获取下一个要运行的节点。
返回:快照,如果不存在状态为 'created
' 的快照,则返回 None
。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
175 176 177 178 179 180 181 182 183 184 |
|
load_all abstractmethod
async
加载快照的整个历史记录。
load_all
本身不被 pydantic-graph 使用,而是为了方便获取持久化中的所有 快照 而提供的。
返回:快照列表。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
186 187 188 189 190 191 192 193 194 195 |
|
set_graph_types
从图中设置状态和运行结束的类型。
通常你不需要自定义此方法,而是实现 set_types
和 should_set_types
。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
197 198 199 200 201 202 203 204 205 206 |
|
should_set_types
should_set_types() -> bool
是否需要设置类型。
如果需要类型但尚未设置,则实现应覆盖此方法以返回 True
。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
208 209 210 211 212 213 |
|
set_types
设置状态和运行结束的类型。
这可以用于创建 类型适配器,用于序列化和反序列化快照,例如使用 build_snapshot_list_type_adapter
。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
state_type
|
type[StateT]
|
状态类型。 |
必需 |
run_end_type
|
type[RunEndT]
|
运行结束类型。 |
必需 |
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
215 216 217 218 219 220 221 222 223 224 225 |
|
build_snapshot_list_type_adapter
build_snapshot_list_type_adapter(
state_t: type[StateT], run_end_t: type[RunEndT]
) -> TypeAdapter[list[Snapshot[StateT, RunEndT]]]
为快照列表构建类型适配器。
此方法应从 set_types
中调用,其中上下文变量将被设置,以便 Pydantic 可以为 NodeSnapshot.node
创建模式。
源代码位于 pydantic_graph/pydantic_graph/persistence/__init__.py
228 229 230 231 232 233 234 235 236 237 238 |
|
内存中状态持久化。
此模块为图提供简单的内存中状态持久化。
SimpleStatePersistence dataclass
基类:BaseStatePersistence[StateT, RunEndT]
简单的内存中状态持久化,仅保存最新的快照。
如果在运行图时未提供状态持久化实现,则默认使用此实现。
源代码位于 pydantic_graph/pydantic_graph/persistence/in_mem.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
|
last_snapshot class-attribute
instance-attribute
last_snapshot: Snapshot[StateT, RunEndT] | None = None
最新的快照。
FullStatePersistence dataclass
基类:BaseStatePersistence[StateT, RunEndT]
内存中状态持久化,保存快照列表。
源代码位于 pydantic_graph/pydantic_graph/persistence/in_mem.py
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
|
deep_copy class-attribute
instance-attribute
deep_copy: bool = True
是否在存储状态和节点时进行深拷贝。
默认为 True
,因此即使在拍摄快照后修改了节点或状态,持久化历史记录也将记录快照时的值。
history class-attribute
instance-attribute
图运行期间拍摄的快照列表。
dump_json
将历史记录转储为 JSON 字节。
源代码位于 pydantic_graph/pydantic_graph/persistence/in_mem.py
157 158 159 160 |
|
load_json
从 JSON 加载历史记录。
源代码位于 pydantic_graph/pydantic_graph/persistence/in_mem.py
162 163 164 165 |
|
FileStatePersistence dataclass
基类:BaseStatePersistence[StateT, RunEndT]
基于文件的状态持久化,将图运行状态保存在 JSON 文件中。
源代码位于 pydantic_graph/pydantic_graph/persistence/file.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
|
json_file instance-attribute
json_file: Path
存储快照的 JSON 文件的路径。
对于每个图运行,应使用不同的文件,但单个文件应在同一运行的多个步骤中重复使用。
例如,如果你有一个 run_123abc
形式的运行 ID,你可以创建一个 FileStatePersistence
,如下所示
from pathlib import Path
from pydantic_graph import FullStatePersistence
run_id = 'run_123abc'
persistence = FullStatePersistence(Path('runs') / f'{run_id}.json')
should_set_types
should_set_types() -> bool
是否需要设置类型。
源代码位于 pydantic_graph/pydantic_graph/persistence/file.py
104 105 106 |
|