Source code for pyiron_workflow.create

"""
Container classes for giving access to various workflow objects and tools
"""

from __future__ import annotations

from pyiron_snippets.dotdict import DotDict

from pyiron_workflow.executors import CloudpickleProcessPoolExecutor
from pyiron_workflow.nodes.function import as_function_node, function_node


[docs] class Creator: """ A container class for providing access to various workflow objects. Gives access to various workflow tools. In addition to node objects, the creator also provides workflow-compliant executors for parallel processing. """ def __init__(self): # Local cloudpickler self.CloudpickleProcessPoolExecutor = CloudpickleProcessPoolExecutor self.function_node = function_node @property def std(self): from pyiron_workflow.nodes import standard return standard @property def for_node(self): from pyiron_workflow.nodes.for_loop import for_node return for_node @property def while_node(self): from pyiron_workflow.nodes.while_loop import while_node return while_node @property def macro_node(self): from pyiron_workflow.nodes.macro import macro_node return macro_node @property def Workflow(self): from pyiron_workflow.workflow import Workflow return Workflow @property def meta(self): from pyiron_workflow.nodes.transform import inputs_to_list, list_to_outputs return DotDict( { inputs_to_list.__name__: inputs_to_list, list_to_outputs.__name__: list_to_outputs, } ) @property def transformer(self): from pyiron_workflow.nodes.transform import ( dataclass_node, inputs_to_dataframe, inputs_to_dict, inputs_to_list, list_to_outputs, ) return DotDict( { f.__name__: f for f in [ dataclass_node, inputs_to_dataframe, inputs_to_dict, inputs_to_list, list_to_outputs, ] } )
[docs] class Wrappers: """ A container class giving access to the decorators that transform functions to nodes. """ as_function_node = staticmethod(as_function_node) @property def as_macro_node(self): from pyiron_workflow.nodes.macro import as_macro_node return as_macro_node @property def as_dataclass_node(self): from pyiron_workflow.nodes.transform import as_dataclass_node return as_dataclass_node
[docs] class HasCreator: """ A mixin class for creator (including both class-like and decorator). """ create = Creator() wrap = Wrappers()