PeacebinfLow's picture
Create persistence.py
6d68241 verified
raw
history blame contribute delete
739 Bytes
import json
from pathlib import Path
from typing import Union
from .graph_models import FlowGraph, Node, Edge
def load_flow(path: Union[str, Path]) -> FlowGraph:
path = Path(path)
if not path.exists():
raise FileNotFoundError(path)
data = json.load(path.open("r", encoding="utf-8"))
nodes = [Node(**n) for n in data.get("nodes", [])]
edges = [Edge(**e) for e in data.get("edges", [])]
return FlowGraph(nodes=nodes, edges=edges)
def save_flow(flow: FlowGraph, path: Union[str, Path]) -> None:
path = Path(path)
data = {
"nodes": [n.__dict__ for n in flow.nodes],
"edges": [e.__dict__ for e in flow.edges],
}
path.write_text(json.dumps(data, indent=2), encoding="utf-8")