Skip to content

Commit 490f020

Browse files
added check if is_dirty is already set (#215)
* added check if is_dirty is already set * Adding tests --------- Co-authored-by: Paul Schweizer <[email protected]>
1 parent 7a86971 commit 490f020

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

flowpipe/plug.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ def is_dirty(self) -> bool:
107107
@is_dirty.setter
108108
def is_dirty(self, status: bool) -> None:
109109
"""Set the Plug dirty informs the node this Plug belongs to."""
110+
if self._is_dirty == status:
111+
return
110112
self._is_dirty = status
111113
if status:
112114
self.node.on_input_plug_set_dirty()

tests/test_graph.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import time
44

5+
import mock
56
import pytest
67

78
import flowpipe.graph
@@ -749,3 +750,29 @@ def test_evaluate_can_skip_clean_nodes():
749750
nodes = Evaluator()._nodes_to_evaluate(graph, skip_clean=True)
750751
assert len(nodes) == 1
751752
assert nodes[0] == dirty_node
753+
754+
755+
def test_is_dirty_only_gets_updated_if_is_dirty_status_actually_changes(
756+
clear_default_graph,
757+
):
758+
graph = Graph(name="test_passing_evaluator")
759+
760+
@Node(outputs=["result"])
761+
def AddNode(number1, number2):
762+
return {"result": number1 + number2}
763+
764+
with mock.patch.object(
765+
INode,
766+
"on_input_plug_set_dirty",
767+
wraps=INode.on_input_plug_set_dirty,
768+
autospec=True,
769+
) as set_dirty_spy:
770+
n1 = AddNode(name="AddNode1", graph=graph, number1=1, number2=1)
771+
n2 = AddNode(name="AddNode2", graph=graph, number2=1)
772+
n3 = AddNode(name="AddNode3", graph=graph, number2=1)
773+
774+
n1.outputs["result"] >> n2.inputs["number1"]
775+
n1.outputs["result"] >> n3.inputs["number1"]
776+
777+
graph.evaluate(mode=None, evaluator=LinearEvaluator())
778+
assert set_dirty_spy.call_count == 0

0 commit comments

Comments
 (0)