Skip to content

Commit ff1f5e9

Browse files
committed
enh(plot): +prune ops/data:=grey
1 parent 53d7269 commit ff1f5e9

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

docs/source/composition.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,5 +190,8 @@ NetworkOperation('merged_graph',
190190

191191
As always, we can run computations with this graph by simply calling it:
192192

193-
>>> merged_graph.compute({'a': 2, 'b': 5, 'c': 5}, outputs=["cab"])
193+
>>> sol = merged_graph.compute({'a': 2, 'b': 5, 'c': 5}, outputs=["cab"])
194+
>>> sol
194195
{'cab': 50}
196+
197+
.. graphtik::

graphtik/plot.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ class Style:
370370
## DATA node
371371

372372
kw_data = {}
373+
kw_data_pruned = {"color": Ref("cancel_color"), "tooltip": "(pruned node)"}
373374
kw_data_in_plan = {"color": Ref("in_plan")}
374375
kw_data_in_solution = {"style": "filled", "fillcolor": Ref("fill_color")}
375376
kw_data_overwritten = {"style": "filled", "fillcolor": Ref("overwrite_color")}
@@ -386,6 +387,7 @@ class Style:
386387
kw_op = {}
387388
#: props only for HTML-Table label
388389
kw_op_label = {}
390+
kw_op_pruned = {"color": Ref("cancel_color")}
389391
kw_op_executed = {"fillcolor": Ref("fill_color")}
390392
kw_op_rescheduled = {"penwidth": Ref("resched_thickness")}
391393
kw_op_endured = {"penwidth": Ref("resched_thickness")}
@@ -657,24 +659,29 @@ def _make_node(self, plot_args: PlotArgs, node_args: NodeArgs) -> pydot.Node:
657659
if nx_node in solution.overwrites:
658660
kw.update(style.kw_data_overwritten)
659661

660-
val = solution.get(nx_node)
661-
tooltip = "None" if val is None else f"({type(val).__name__}) {val}"
662-
kw["tooltip"] = quote_html_tooltips(tooltip)
662+
if nx_node not in solution.plan.dag.nodes:
663+
kw.update(**style.kw_data_pruned)
664+
else:
665+
val = solution.get(nx_node)
666+
tooltip = "None" if val is None else f"({type(val).__name__}) {val}"
667+
kw["tooltip"] = quote_html_tooltips(tooltip)
663668

664669
kw.update(_pub_props(node_attrs))
665670

666671
else: # OPERATION
667-
672+
op_name = nx_node.name
668673
kw_label = style.kw_op_label.copy()
669674
kw_label.update(
670675
{
671-
"op_name": nx_node.name,
676+
"op_name": op_name,
672677
"fn_name": func_name(nx_node.fn, mod=1, fqdn=1, human=1),
673678
"op_tooltip": self._make_op_tooltip(plot_args, node_args),
674679
"fn_tooltip": self._make_fn_tooltip(plot_args, node_args),
675680
}
676681
)
677682

683+
if steps and nx_node not in steps:
684+
kw_label.update(style.kw_op_pruned)
678685
if nx_node.rescheduled:
679686
kw_label.update(style.kw_op_rescheduled)
680687
if nx_node.endured:
@@ -700,9 +707,7 @@ def _make_node(self, plot_args: PlotArgs, node_args: NodeArgs) -> pydot.Node:
700707
"name": quote_node_id(nx_node.name),
701708
"shape": "plain",
702709
"label": _render_template(self.style.op_template, **kw_label),
703-
"tooltip": graphviz_html_string(
704-
nx_node.name # without it, "TABLE" shown...
705-
),
710+
"tooltip": graphviz_html_string(op_name), # or else, "TABLE" shown...
706711
}
707712

708713
# Graphviz node attributes interacting badly with HTML-Labels.

0 commit comments

Comments
 (0)