From 635fde19817800221903034c58c858df86e54714 Mon Sep 17 00:00:00 2001 From: JieguangZhou Date: Sat, 27 Aug 2022 18:48:09 +0800 Subject: [PATCH] [bug][python] Fix task switch error when default branch not defined last (#11606) Co-authored-by: Jiajie Zhong --- .../src/pydolphinscheduler/tasks/switch.py | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py index 2206a06e42..35eece89b6 100644 --- a/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py +++ b/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/tasks/switch.py @@ -99,23 +99,22 @@ class SwitchCondition(Base): result = [] num_branch_default = 0 for condition in self.args: - if isinstance(condition, SwitchBranch): - if num_branch_default < 1: - if isinstance(condition, Default): - self._DEFINE_ATTR.add("next_node") - setattr(self, "next_node", condition.next_node) - num_branch_default += 1 - elif isinstance(condition, Branch): - result.append(condition.get_define()) - else: - raise PyDSParamException( - "Task Switch's parameter only support exactly one default branch." - ) - else: + if not isinstance(condition, SwitchBranch): raise PyDSParamException( "Task Switch's parameter only support SwitchBranch but got %s.", type(condition), ) + # Default number branch checker + if num_branch_default >= 1 and isinstance(condition, Default): + raise PyDSParamException( + "Task Switch's parameter only support exactly one default branch." + ) + if isinstance(condition, Default): + self._DEFINE_ATTR.add("next_node") + setattr(self, "next_node", condition.next_node) + num_branch_default += 1 + elif isinstance(condition, Branch): + result.append(condition.get_define()) # Handle switch default branch, default value is `""` if not provide. if num_branch_default == 0: self._DEFINE_ATTR.add("next_node")