Source code for chariots.pipelines.runners._base_runner

"""module for the abstract runner classes"""
from abc import ABC, abstractmethod
from typing import Optional, Any


[docs]class BaseRunner(ABC): # pylint: disable=too-few-public-methods """ a runner is used to define the execution behavior of a Pipeline. there main entry point is the `run` method .. testsetup:: >>> from chariots.pipelines import Pipeline, PipelinesServer >>> from chariots.pipelines.nodes import Node >>> from chariots.pipelines.runners import SequentialRunner >>> from chariots._helpers.doc_utils import IsOddOp >>> is_odd_pipeline = Pipeline([ ... Node(IsOddOp(), input_nodes=["__pipeline_input__"], output_nodes=["__pipeline_output__"]) ... ], "simple_pipeline") >>> runner = SequentialRunner() .. doctest:: >>> runner.run(is_odd_pipeline, 3) True To create a new runner (for instance to execute your pipeline on a cluster) you only have to override `run` method and use the `Pipeline`'s class methods (for instance you might want to look at `extract_results`, `execute_node`) """
[docs] @abstractmethod def run(self, pipeline: 'chariots.pipelines.Pipeline', pipeline_input: Optional[Any] = None): """ runs a pipeline, provides it with the correct input and extracts the results if any :param pipeline: the pipeline to run :param pipeline_input: the input to be given to the pipeline :return: the output of the graph called on the input if applicable """