in azure/durable_functions/models/Task.py [0:0]
def __init__(self, tasks: List[TaskBase], compound_action_constructor=None):
"""Instantiate CompoundTask attributes.
Parameters
----------
tasks : List[Task]
The children/sub-tasks of this Task
compound_action_constructor : Union[WhenAllAction, WhenAnyAction, None]
Either None or, a WhenAllAction or WhenAnyAction constructor.
It is None when using the V1 replay protocol, where no Compound Action
objects size and compound actions are represented as arrays of actions.
It is not None when using the V2 replay protocol.
"""
super().__init__(-1, [])
child_actions = []
for task in tasks:
task.parent = self
action_repr = task.action_repr
if isinstance(action_repr, list):
child_actions.extend(action_repr)
else:
if not task._is_scheduled:
child_actions.append(action_repr)
if compound_action_constructor is None:
self.action_repr = child_actions
else: # replay_schema >= ReplaySchema.V2
self.action_repr = compound_action_constructor(child_actions)
self._first_error: Optional[Exception] = None
self.pending_tasks: Set[TaskBase] = set(tasks)
self.completed_tasks: List[TaskBase] = []
self.children = tasks
if len(self.children) == 0:
self.state = TaskState.SUCCEEDED
# Sub-tasks may have already completed, so we process them
for child in self.children:
if not (child.state is TaskState.RUNNING):
self.handle_completion(child)