Scheme (scheme)

Scheme Workflow

The Scheme class defines a DAG (Directed Acyclic Graph) workflow.

class orangecanvas.scheme.scheme.Scheme(parent=None, title='', description='', env={}, **kwargs)[source]

Bases: PyQt5.QtCore.QObject

An QObject subclass representing the scheme widget workflow with annotations.

Parameters:
  • parent (QObject) – A parent QObject item (default None).
  • title (str) – The scheme title.
  • description (str) – A longer description of the scheme.
  • env (Mapping[str, Any]) – Extra workflow environment definition (application defined).
nodes

A list of all the nodes in the scheme.

Type:list of SchemeNode

A list of all links in the scheme.

Type:list of SchemeLink
annotations

A list of all the annotations in the scheme.

Type:list of BaseSchemeAnnotation
title_changed(title)

Signal emitted when the title of scheme changes.

description_changed(description)

Signal emitted when the description of scheme changes.

node_added(node)

Signal emitted when a node is added to the scheme.

node_removed(node)

Signal emitted when a node is removed from the scheme.

Signal emitted when a link is added to the scheme.

Signal emitted when a link is removed from the scheme.

annotation_added(annotation)

Signal emitted when a annotation is added to the scheme.

annotation_removed(annotation)

Signal emitted when a annotation is removed from the scheme.

runtime_env_changed(key: str, newvalue: Optional[str], oldvalue: Optional[str])

Signal emitted when the associated runtime environment changes

nodes

A list of all nodes (SchemeNode) currently in the scheme.

links

A list of all links (SchemeLink) currently in the scheme.

annotations

A list of all annotations (BaseSchemeAnnotation) in the scheme.

set_title(title)[source]

Set the scheme title text.

title

The title (human readable string) of the scheme.

set_description(description)[source]

Set the scheme description text.

description

Scheme description text.

add_node(node)[source]

Add a node to the scheme. An error is raised if the node is already in the scheme.

Parameters:node (SchemeNode) – Node instance to add to the scheme.
new_node(description, title=None, position=None, properties=None)[source]

Create a new SchemeNode and add it to the scheme.

Same as:

scheme.add_node(SchemeNode(description, title, position,
                           properties))
Parameters:
  • description (WidgetDescription) – The new node’s description.
  • title (str, optional) – Optional new nodes title. By default description.name is used.
  • position (Tuple[float, float]) – Optional position in a 2D space.
  • properties (dict, optional) – A dictionary of optional extra properties.

See also

SchemeNode(), Scheme.add_node()

remove_node(node)[source]

Remove a node from the scheme. All links into and out of the node are also removed. If the node in not in the scheme an error is raised.

Parameters:node (SchemeNode) – Node instance to remove.

Add a link to the scheme.

Parameters:link (SchemeLink) – An initialized link instance to add to the scheme.

Create a new SchemeLink from arguments and add it to the scheme. The new link is returned.

Parameters:
  • source_node (SchemeNode) – Source node of the new link.
  • source_channel (OutputSignal) – Source channel of the new node. The instance must be from source_node.output_channels()
  • sink_node (SchemeNode) – Sink node of the new link.
  • sink_channel (InputSignal) – Sink channel of the new node. The instance must be from sink_node.input_channels()

See also

SchemeLink(), Scheme.add_link()

Remove a link from the scheme.

Parameters:link (SchemeLink) – Link instance to remove.
check_connect(link)[source]

Check if the link can be added to the scheme and raise an appropriate exception.

Can raise:
creates_cycle(link)[source]

Return True if link would introduce a cycle in the scheme.

Parameters:link (SchemeLink) –
compatible_channels(link)[source]

Return True if the channels in link have compatible types.

Parameters:link (SchemeLink) –
can_connect(link)[source]

Return True if link can be added to the scheme.

upstream_nodes(start_node)[source]

Return a set of all nodes upstream from start_node (i.e. all ancestor nodes).

Parameters:start_node (SchemeNode) –
downstream_nodes(start_node)[source]

Return a set of all nodes downstream from start_node.

Parameters:start_node (SchemeNode) –
is_ancestor(node, child)[source]

Return True if node is an ancestor node of child (is upstream of the child in the workflow). Both nodes must be in the scheme.

Parameters:
children(node)[source]

Return a set of all children of node.

parents(node)[source]

Return a set of all parents of node.

Return a list of all input links (SchemeLink) connected to the node instance.

Return a list of all output links (SchemeLink) connected to the node instance.

Return a list of ordered (OutputSignal, InputSignal, weight) tuples that could be added to the scheme between source_node and sink_node.

Note

This can depend on the links already in the scheme.

add_annotation(annotation)[source]

Add an annotation (BaseSchemeAnnotation subclass) instance to the scheme.

remove_annotation(annotation)[source]

Remove the annotation instance from the scheme.

clear()[source]

Remove all nodes, links, and annotation items from the scheme.

sync_node_properties()[source]

Called before saving, allowing a subclass to update/sync.

The default implementation does nothing.

save_to(stream, pretty=True, **kwargs)[source]

Save the scheme as an xml formatted file to stream

See also

readwrite.scheme_to_ows_stream()

load_from(stream, *args, **kwargs)[source]

Load the scheme from xml formatted stream.

Any extra arguments are passed to readwrite.scheme_load

See also

readwrite.scheme_load()

set_runtime_env(key, value)[source]

Set a runtime environment variable key to value

get_runtime_env(key, default=None)[source]

Return a runtime environment variable for key.

runtime_env()[source]

Return (a view to) the full runtime environment.

The return value is a types.MappingProxyType of the underlying environment dictionary. Changes to the env. will be reflected in it.

class WindowGroup(name='', default=False, state=[])[source]

Bases: types.SimpleNamespace

window_group_presets()[source]

Return a collection of preset window groups and their encoded states.

The base implementation returns an empty list.

class orangecanvas.scheme.scheme.SchemeCycleError[source]

Bases: orangecanvas.scheme.errors.SchemeTopologyError

A link would create a cycle in the scheme.

class orangecanvas.scheme.scheme.IncompatibleChannelTypeError[source]

Bases: TypeError

Source and sink channels do not have compatible types

class orangecanvas.scheme.scheme.SinkChannelError[source]

Bases: orangecanvas.scheme.errors.SchemeTopologyError

Sink channel already connected.

class orangecanvas.scheme.scheme.DuplicatedLinkError[source]

Bases: orangecanvas.scheme.errors.SchemeTopologyError

A link duplicates another link already present in the scheme.