File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff 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 ()
Original file line number Diff line number Diff line change 22
33import time
44
5+ import mock
56import pytest
67
78import 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
You can’t perform that action at this time.
0 commit comments