Source code for ewokscore.tests.examples.tasks.sumtask

from time import sleep as _sleep  # hide from task discovery
from ewokscore.taskwithprogress import TaskWithProgress


class SumTask(
    TaskWithProgress,
    input_names=["a"],
    optional_input_names=["b", "delay"],
    output_names=["result"],
):
    """Add two numbers with a delay"""

    def run(self):
        result = self.inputs.a
        if self.inputs.b:
            result += self.inputs.b
        self.progress = 0
        if self.inputs.delay:
            dt = self.inputs.delay / 100
            for i in range(100):
                _sleep(dt)
                self.progress = i + 1
        else:
            self.progress = 100
        self.outputs.result = result