7.2.3.1. Base¶
-
class
Base
[source]¶ Base class for dispatcher objects.
Methods
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__
()¶ Initialize self. See help(type(self)) for accurate signature.
-
web
(depth=-1, node_data=none, node_function=none, directory=None, sites=None, run=True)[source]¶ Creates a dispatcher Flask app.
Parameters: - depth (int, optional) – Depth of sub-dispatch plots. If negative all levels are plotted.
- node_data (tuple[str], optional) – Data node attributes to view.
- node_function (tuple[str], optional) – Function node attributes to view.
- directory (str, optional) – Where is the generated Flask app root located?
- sites (set[Site], optional) – A set of
Site
to maintain alive the backend server. - run (bool, optional) – Run the backend server?
Returns: A WebMap.
Return type: Example:
From a dispatcher like this:
>>> from schedula import Dispatcher >>> dsp = Dispatcher(name='Dispatcher') >>> def fun(a): ... return a + 1, a - 1 >>> dsp.add_function('fun', fun, ['a'], ['b', 'c']) 'fun'
You can create a web server with the following steps:
>>> webmap = dsp.web() >>> print("Starting...\n"); site = webmap.site().run(); site Starting... Site(WebMap([(Dispatcher, WebMap())]), host='localhost', ...) >>> import requests >>> url = '%s/%s/%s' % (site.url, dsp.name, fun.__name__) >>> requests.post(url, json={'args': (0,)}).json()['return'] [1, -1] >>> site.shutdown() # Remember to shutdown the server. True
Note
When
Site
is garbage collected, the server is shutdown automatically.
-
plot
(workflow=None, view=True, depth=-1, name=none, comment=none, format=none, engine=none, encoding=none, graph_attr=none, node_attr=none, edge_attr=none, body=none, node_styles=none, node_data=none, node_function=none, edge_data=none, max_lines=none, max_width=none, directory=None, sites=None, index=False)[source]¶ Plots the Dispatcher with a graph in the DOT language with Graphviz.
Parameters: - workflow (bool, optional) – If True the latest solution will be plotted, otherwise the dmap.
- view (bool, optional) – Open the rendered directed graph in the DOT language with the sys default opener.
- edge_data (tuple[str], optional) – Edge attributes to view.
- node_data (tuple[str], optional) – Data node attributes to view.
- node_function (tuple[str], optional) – Function node attributes to view.
- node_styles (dict[str|Token, dict[str, str]]) – Default node styles according to graphviz node attributes.
- depth (int, optional) – Depth of sub-dispatch plots. If negative all levels are plotted.
- name (str) – Graph name used in the source code.
- comment (str) – Comment added to the first line of the source.
- directory (str, optional) – (Sub)directory for source saving and rendering.
- format (str, optional) – Rendering output format (‘pdf’, ‘png’, …).
- engine (str, optional) – Layout command used (‘dot’, ‘neato’, …).
- encoding (str, optional) – Encoding for saving the source.
- graph_attr (dict, optional) – Dict of (attribute, value) pairs for the graph.
- node_attr (dict, optional) – Dict of (attribute, value) pairs set for all nodes.
- edge_attr (dict, optional) – Dict of (attribute, value) pairs set for all edges.
- body (dict, optional) – Dict of (attribute, value) pairs to add to the graph body.
- directory – Where is the generated Flask app root located?
- sites (set[Site], optional) – A set of
Site
to maintain alive the backend server. - index (bool, optional) – Add the site index as first page?
- max_lines (int, optional) – Maximum number of lines for rendering node attributes.
- max_width (int, optional) – Maximum number of characters in a line to render node attributes.
- view – Open the main page of the site?
Returns: A SiteMap.
Return type: Example:
>>> from schedula import Dispatcher >>> dsp = Dispatcher(name='Dispatcher') >>> def fun(a): ... return a + 1, a - 1 >>> dsp.add_function('fun', fun, ['a'], ['b', 'c']) 'fun' >>> dsp.plot(view=False, graph_attr={'ratio': '1'}) SiteMap([(Dispatcher, SiteMap())])
-
get_node
(*node_ids, node_attr=none)[source]¶ Returns a sub node of a dispatcher.
Parameters: - node_ids (str) – A sequence of node ids or a single node id. The id order identifies a dispatcher sub-level.
- node_attr (str, None, optional) –
Output node attr.
If the searched node does not have this attribute, all its attributes are returned.
When ‘auto’, returns the “default” attributes of the searched node, which are:
- for data node: its output, and if not exists, all its attributes.
- for function and sub-dispatcher nodes: the ‘function’ attribute.
When ‘description’, returns the “description” of the searched node, searching also in function or sub-dispatcher input/output description.
When ‘output’, returns the data node output.
When ‘default_value’, returns the data node default value.
When ‘value_type’, returns the data node value’s type.
When None, returns the node attributes.
Returns: Node attributes and its real path.
Return type: (T, (str, ..))
Example:
Get the sub node output:
>>> dsp.get_node('Sub-dispatcher', 'c') (4, ('Sub-dispatcher', 'c')) >>> dsp.get_node('Sub-dispatcher', 'c', node_attr='type') ('data', ('Sub-dispatcher', 'c'))
>>> sub_dsp, sub_dsp_id = dsp.get_node('Sub-dispatcher')
-