Skip to content

Commit 8250258

Browse files
authored
[ML][Pipelines] BugFix: exclude control flow node during validating isolated job (Azure#28135)
* fix: exclude control flow node * add comment for change
1 parent f87ac8c commit 8250258

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

sdk/ml/azure-ai-ml/azure/ai/ml/entities/_job/pipeline/pipeline_job.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)