98 |
99 | {html.escape(current.code_str)}
100 |
101 | | "
102 |
103 | ◤ {html.escape(current.var_changes)}
104 | |
105 |
106 | """
107 | )
108 | )
109 | if current.is_callsite:
110 | g.edge(
111 | f"{name}:{current.portname}",
112 | generate_subgraph(current.step_into),
113 | # TODO: Ideally this should be param → argument expression,
114 | # e.g. x → [1, 2, 3], so that users can see the passed value.
115 | label="\n".join(
116 | f" {','.join(args)} → {param}, {current.step_into.vars[param]}"
117 | for param, args in current.param_to_arg.items()
118 | ),
119 | )
120 | current = current.next
121 | rows = (
122 | [
123 | utils.dedent(
124 | f"""