Skip to content

Commit

Permalink
fix: record node children correctly when deserializing
Browse files Browse the repository at this point in the history
Closes #1479
  • Loading branch information
ss2165 committed Aug 29, 2024
1 parent b387505 commit 356bfce
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
5 changes: 3 additions & 2 deletions hugr-py/src/hugr/hugr.py
Original file line number Diff line number Diff line change
Expand Up @@ -669,9 +669,10 @@ def get_meta(idx: int) -> dict[str, Any]:
parent = None

serial_node.root.parent = -1
hugr._nodes.append(
NodeData(serial_node.root.deserialize(), parent, metadata=node_meta)
n = hugr._add_node(
serial_node.root.deserialize(), parent, metadata=node_meta
)
assert n.idx == idx, "Nodes should be added contiguously"

for (src_node, src_offset), (dst_node, dst_offset) in serial.edges:
if src_offset is None or dst_offset is None:
Expand Down
14 changes: 14 additions & 0 deletions hugr-py/tests/serialization/test_basic.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from hugr import Hugr, tys
from hugr._serialization.serial_hugr import SerialHugr, serialization_version
from hugr.function import Module


def test_empty():
Expand All @@ -10,3 +12,15 @@ def test_empty():
"metadata": None,
"encoder": None,
}


def test_children():
mod = Module()
mod.declare_function("foo", tys.PolyFuncType([], tys.FunctionType.empty()))

h = mod.hugr
assert len(h.children(h.root)) == 1

h2 = Hugr.load_json(h.to_json())

assert len(h2.children(h2.root)) == 1

0 comments on commit 356bfce

Please sign in to comment.