@@ -330,6 +330,12 @@ def _validate_init_finalize_job(self) -> MutableValidationResult:
330330 if len (set (self .jobs .keys ()) - {on_init , on_finalize }) == 0 :
331331 validation_result .append_error (yaml_path = "jobs" , message = "No other job except for on_init/on_finalize job." )
332332
333+ def _is_control_flow_node (_validate_job_name : str ) -> bool :
334+ from azure .ai .ml .entities ._builders .control_flow_node import ControlFlowNode
335+
336+ _validate_job = self .jobs [_validate_job_name ]
337+ return issubclass (type (_validate_job ), ControlFlowNode )
338+
333339 def _is_isolated_job (_validate_job_name : str ) -> bool :
334340 def _try_get_data_binding (_input_output_data ) -> Union [str , None ]:
335341 """Try to get data binding from input/output data, return None if not found."""
@@ -347,6 +353,9 @@ def _try_get_data_binding(_input_output_data) -> Union[str, None]:
347353 return False
348354 # no output from validate job
349355 for _job_name , _job in self .jobs .items ():
356+ # exclude control flow node as it does not have inputs
357+ if _is_control_flow_node (_job_name ):
358+ continue
350359 for _input_name in _job .inputs :
351360 _data_binding = _try_get_data_binding (_job .inputs [_input_name ]._data )
352361 if _data_binding is not None and is_data_binding_expression (
@@ -355,12 +364,6 @@ def _try_get_data_binding(_input_output_data) -> Union[str, None]:
355364 return False
356365 return True
357366
358- def _is_control_flow_node (_validate_job_name : str ) -> bool :
359- from azure .ai .ml .entities ._builders .control_flow_node import ControlFlowNode
360-
361- _validate_job = self .jobs [_validate_job_name ]
362- return issubclass (type (_validate_job ), ControlFlowNode )
363-
364367 # validate on_init
365368 if on_init is not None :
366369 if on_init not in self .jobs :
0 commit comments