8.2.8.21. SubDispatch

class SubDispatch(dsp=None, *args, **kwargs)[source]

It dispatches a given Dispatcher like a function.

This function takes a sequence of dictionaries as input that will be combined before the dispatching.

Returns:

A function that executes the dispatch of the given Dispatcher.

Return type:

callable

Example:

>>> from schedula import Dispatcher
>>> sub_dsp = Dispatcher(name='Sub-dispatcher')
...
>>> def fun(a):
...     return a + 1, a - 1
...
>>> sub_dsp.add_function('fun', fun, ['a'], ['b', 'c'])
'fun'
>>> dispatch = SubDispatch(sub_dsp, ['a', 'b', 'c'], output_type='dict')
>>> dsp = Dispatcher(name='Dispatcher')
>>> dsp.add_function('Sub-dispatch', dispatch, ['d'], ['e'])
'Sub-dispatch'

The Dispatcher output is:

>>> o = dsp.dispatch(inputs={'d': {'a': 3}})

while, the Sub-dispatch is:

>>> sol = o.workflow.nodes['Sub-dispatch']['solution']
>>> sol
Solution({'a': 3, 'b': 4, 'c': 2})
>>> sol == o['e']
True

Methods

__call__

Call self as a function.

__deepcopy__

__delattr__

Implement delattr(self, name).

__dir__

Default dir() implementation.

__eq__

Return self==value.

__format__

Default object formatter.

__ge__

Return self>=value.

__getattribute__

Return getattr(self, name).

__getstate__

Helper for pickle.

__gt__

Return self>value.

__hash__

Return hash(self).

__init__

Initializes the Sub-dispatch.

__init_subclass__

This method is called when a class is subclassed.

__le__

Return self<=value.

__lt__

Return self<value.

__ne__

Return self!=value.

__new__

__reduce__

Helper for pickle.

__reduce_ex__

Helper for pickle.

__repr__

Return repr(self).

__setattr__

Implement setattr(self, name, value).

__setstate__

__sizeof__

Size of object in memory, in bytes.

__str__

Return str(self).

__subclasshook__

Abstract classes can override this to customize issubclass().

_return

blue

Constructs a Blueprint out of the current object.

copy

form

Creates a dispatcher Form Flask app.

get_node

Returns a sub node of a dispatcher.

plot

Plots the Dispatcher with a graph in the DOT language with Graphviz.

web

Creates a dispatcher Flask app.

__init__(dsp, outputs=None, inputs_dist=None, wildcard=False, no_call=False, shrink=False, rm_unused_nds=False, output_type='all', function_id=None, output_type_kw=None)[source]

Initializes the Sub-dispatch.

Parameters:
  • dsp (schedula.Dispatcher | schedula.utils.blue.BlueDispatcher) – A dispatcher that identifies the model adopted.

  • outputs (list[str], iterable) – Ending data nodes.

  • inputs_dist (dict[str, int | float], optional) – Initial distances of input data nodes.

  • wildcard (bool, int, optional) – If True, when the data node is used as input and target in the ArciDispatch algorithm, the input value will be used as input for the connected functions, but not as output. If it is equal to 2, the the data node that cannot be calculated are excluded by the wildcard condition.

  • no_call (bool, optional) – If True data node estimation function is not used.

  • shrink (bool, optional) – If True the dispatcher is shrink before the dispatch.

  • rm_unused_nds (bool, optional) – If True unused function and sub-dispatcher nodes are removed from workflow.

  • output_type (str, optional) –

    Type of function output:

    • ’all’: a dictionary with all dispatch outputs.

    • ’list’: a list with all outputs listed in outputs.

    • ’dict’: a dictionary with any outputs listed in outputs.

  • output_type_kw (dict, optional) – Extra kwargs to pass to the selector function.

  • function_id (str, optional) – Function name.

Attributes

__annotations__

__dict__

__doc__

__module__

__weakref__

list of weak references to the object

static __new__(cls, dsp=None, *args, **kwargs)[source]
__getstate__()[source]

Helper for pickle.

__setstate__(d)[source]
__init__(dsp, outputs=None, inputs_dist=None, wildcard=False, no_call=False, shrink=False, rm_unused_nds=False, output_type='all', function_id=None, output_type_kw=None)[source]

Initializes the Sub-dispatch.

Parameters:
  • dsp (schedula.Dispatcher | schedula.utils.blue.BlueDispatcher) – A dispatcher that identifies the model adopted.

  • outputs (list[str], iterable) – Ending data nodes.

  • inputs_dist (dict[str, int | float], optional) – Initial distances of input data nodes.

  • wildcard (bool, int, optional) – If True, when the data node is used as input and target in the ArciDispatch algorithm, the input value will be used as input for the connected functions, but not as output. If it is equal to 2, the the data node that cannot be calculated are excluded by the wildcard condition.

  • no_call (bool, optional) – If True data node estimation function is not used.

  • shrink (bool, optional) – If True the dispatcher is shrink before the dispatch.

  • rm_unused_nds (bool, optional) – If True unused function and sub-dispatcher nodes are removed from workflow.

  • output_type (str, optional) –

    Type of function output:

    • ’all’: a dictionary with all dispatch outputs.

    • ’list’: a list with all outputs listed in outputs.

    • ’dict’: a dictionary with any outputs listed in outputs.

  • output_type_kw (dict, optional) – Extra kwargs to pass to the selector function.

  • function_id (str, optional) – Function name.

__doc__ = "\n    It dispatches a given :class:`~schedula.dispatcher.Dispatcher` like a\n    function.\n\n    This function takes a sequence of dictionaries as input that will be\n    combined before the dispatching.\n\n    :return:\n        A function that executes the dispatch of the given\n        :class:`~schedula.dispatcher.Dispatcher`.\n    :rtype: callable\n\n    .. seealso:: :func:`~schedula.dispatcher.Dispatcher.dispatch`,\n       :func:`combine_dicts`\n\n    Example:\n\n    .. dispatcher:: dsp\n       :opt: graph_attr={'ratio': '1'}, depth=-1\n       :code:\n\n        >>> from schedula import Dispatcher\n        >>> sub_dsp = Dispatcher(name='Sub-dispatcher')\n        ...\n        >>> def fun(a):\n        ...     return a + 1, a - 1\n        ...\n        >>> sub_dsp.add_function('fun', fun, ['a'], ['b', 'c'])\n        'fun'\n        >>> dispatch = SubDispatch(sub_dsp, ['a', 'b', 'c'], output_type='dict')\n        >>> dsp = Dispatcher(name='Dispatcher')\n        >>> dsp.add_function('Sub-dispatch', dispatch, ['d'], ['e'])\n        'Sub-dispatch'\n\n    The Dispatcher output is:\n\n    .. dispatcher:: o\n       :opt: graph_attr={'ratio': '1'}, depth=-1\n       :code:\n\n        >>> o = dsp.dispatch(inputs={'d': {'a': 3}})\n\n    while, the Sub-dispatch is:\n\n    .. dispatcher:: sol\n       :opt: graph_attr={'ratio': '1'}, depth=-1\n       :code:\n\n        >>> sol = o.workflow.nodes['Sub-dispatch']['solution']\n        >>> sol\n        Solution({'a': 3, 'b': 4, 'c': 2})\n        >>> sol == o['e']\n        True\n\n    "
blue(memo=None, depth=-1)[source]

Constructs a Blueprint out of the current object.

Parameters:
Returns:

A Blueprint of the current object.

Return type:

schedula.utils.blue.Blueprint

__call__(*input_dicts, copy_input_dicts=False, _stopper=None, _executor=False, _sol_name=(), _verbose=False)[source]

Call self as a function.

_return(solution)[source]
copy()[source]
__annotations__ = {}
__module__ = 'schedula.utils.dsp'