Source code for ewokscore.engine_interface

from abc import ABC
from abc import abstractmethod
from pathlib import Path
from typing import Any
from typing import List
from typing import Optional
from typing import Union

from .events.contexts import RawExecInfoType
from .graph import TaskGraph


[docs] class WorkflowEngine(ABC): """Python projects that provide Ewoks engines for deserializing, serializing and executing computational Ewoks graphs can implement this interface. To make it discoverable it can be added as an entry-point the the project. For example in a `pyproject.toml` file: .. code-block: toml [project.entry-points."ewoks.engines"] "<engine-name>" = "<project-name>.engine:MyWorkflowEngine" """
[docs] @abstractmethod def execute_graph( self, graph: TaskGraph, *, inputs: Optional[List[dict]] = None, load_options: Optional[dict] = None, varinfo: Optional[dict] = None, execinfo: Optional[RawExecInfoType] = None, task_options: Optional[dict] = None, outputs: Optional[List[dict]] = None, merge_outputs: Optional[bool] = True, # Engine specific: **execute_options, ) -> Optional[dict]: """Execute a computional Ewoks graph.""" pass
[docs] class WorkflowEngineWithSerialization(WorkflowEngine): """Ewoks engines with graph serialization capabilities."""
[docs] @abstractmethod def deserialize_graph( self, graph: Any, *, inputs: Optional[List[dict]] = None, representation: Optional[str] = None, root_dir: Optional[Union[str, Path]] = None, root_module: Optional[str] = None, # Serializer specific: **deserialize_options, ) -> TaskGraph: """Convert a computational graph representation to the canonical in-memory representation `TaskGraph`.""" pass
[docs] @abstractmethod def serialize_graph( self, graph: TaskGraph, destination: Any, *, representation: Optional[str] = None, # Serializer specific: **serialize_options, ) -> Any: """Convert the canonical computational graph representation `TaskGraph` to another representation.""" pass
[docs] @abstractmethod def get_graph_representation(self, graph: Any) -> Optional[str]: """Return the representation if the engine recognizes the graph object.""" pass