From 23f5a4a8beccfd65c008f415de88dd801f9f22f2 Mon Sep 17 00:00:00 2001 From: beam Date: Sat, 24 Oct 2026 17:41:49 +0000 Subject: [PATCH] beam: verify toposort None-deps and one-shot materialisation --- wizard-work/beam/verify_toposort_none.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 wizard-work/beam/verify_toposort_none.py diff --git a/wizard-work/beam/verify_toposort_none.py b/wizard-work/beam/verify_toposort_none.py new file mode 100644 index 0000000..a215ff6 --- /dev/null +++ b/wizard-work/beam/verify_toposort_none.py @@ -0,0 +1,20 @@ +"""Verification artifact for toposort None-deps and one-shot materialisation.""" +import os, sys +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from toposort import topo_sort + +def gen(): + yield "b" + +# None dep cases +r = topo_sort({"a": None}) +assert r.sorted == ["a"] and r.cycle is None, r +r = topo_sort({"a": ["z"], "z": None}) +assert r.sorted == ["z", "a"] and r.cycle is None, r +r = topo_sort({"a": None, "b": ["c"], "c": ["b"]}) +assert r.sorted is None and set(r.cycle) == {"b", "c"}, r +# generator materialisation (must equal list case) +assert topo_sort({"a": gen()}).sorted == topo_sort({"a": ["b"]}).sorted == ["b", "a"] +# self-loop unchanged +assert topo_sort({"a": ["a"]}).cycle == ["a"] +print("ALL VERIFIED")