Add All Folders

This commit is contained in:
soorena62
2026-02-08 04:38:10 +03:30
commit 9bb57e4799
191 changed files with 8469 additions and 0 deletions
@@ -0,0 +1,44 @@
from typing import List
from radiuma_api.task import Task, Status, TaskEvent
from radiuma_api.execution_context import ExecutionContext
from radiuma_api.scheduler import Scheduler
from radiuma_api.io_port import CompatibilityException
# Write Codes Here:
class Workflow(Task):
"""Composite node: aggregates Tasks (Modules or other Workflows)."""
def __init__(self, name: str):
super().__init__(name)
self.children: List[Task] = []
def add_child(self, task: Task):
task.parent_task = self
self.children.append(task)
def run(self, context: ExecutionContext):
"""Delegate execution of children to Scheduler."""
self._set_status(Status.RUNNING)
scheduler = Scheduler()
for child in self.children:
if self.status == Status.STOPPED:
break
try:
if child.check_inputs_ready(context):
scheduler.run(child, context)
else:
print(f"Task {child.name} not ready, skipping.")
except CompatibilityException as e:
self._emit(TaskEvent.ON_ERROR, {"error": e.reason, "task": child.name})
child._set_status(Status.FAILED)
# Final status evaluation
if all(c.status == Status.COMPLETED for c in self.children):
self._set_status(Status.COMPLETED)
elif any(c.status == Status.FAILED for c in self.children):
self._set_status(Status.FAILED)
else:
self._set_status(Status.STOPPED)