| :mod:`altgraph.ObjectGraph` --- Graphs of objecs with an identifier |
| =================================================================== |
| |
| .. module:: altgraph.ObjectGraph |
| :synopsis: A graph of objects that have a "graphident" attribute. |
| |
| .. class:: ObjectGraph([graph[, debug]]) |
| |
| A graph of objects that have a "graphident" attribute. The |
| value of this attribute is the key for the object in the |
| graph. |
| |
| The optional *graph* is a previously constructed |
| :class:`Graph <altgraph.Graph.Graph>`. |
| |
| The optional *debug* level controls the amount of debug output |
| (see :meth:`msg`, :meth:`msgin` and :meth:`msgout`). |
| |
| .. note:: the altgraph library does not generate output, the |
| debug attribute and message methods are present for use |
| by subclasses. |
| |
| .. data:: ObjectGraph.graph |
| |
| An :class:`Graph <altgraph.Graph.Graph>` object that contains |
| the graph data. |
| |
| |
| .. method:: ObjectGraph.addNode(node) |
| |
| Adds a *node* to the graph. |
| |
| .. note:: re-adding a node that was previously removed |
| using :meth:`removeNode` will reinstate the previously |
| removed node. |
| |
| .. method:: ObjectGraph.createNode(self, cls, name, \*args, \**kwds) |
| |
| Creates a new node using ``cls(*args, **kwds)`` and adds that |
| node using :meth:`addNode`. |
| |
| Returns the newly created node. |
| |
| .. method:: ObjectGraph.removeNode(node) |
| |
| Removes a *node* from the graph when it exists. The *node* argument |
| is either a node object, or the graphident of a node. |
| |
| .. method:: ObjectGraph.createReferences(fromnode, tonode[, edge_data]) |
| |
| Creates a reference from *fromnode* to *tonode*. The optional |
| *edge_data* is associated with the edge. |
| |
| *Fromnode* and *tonode* can either be node objects or the graphident |
| values for nodes. |
| |
| .. method:: removeReference(fromnode, tonode) |
| |
| Removes the reference from *fromnode* to *tonode* if it exists. |
| |
| .. method:: ObjectGraph.getRawIdent(node) |
| |
| Returns the *graphident* attribute of *node*, or the graph itself |
| when *node* is :data:`None`. |
| |
| .. method:: getIdent(node) |
| |
| Same as :meth:`getRawIdent`, but only if the node is part |
| of the graph. |
| |
| *Node* can either be an actual node object or the graphident of |
| a node. |
| |
| .. method:: ObjectGraph.findNode(node) |
| |
| Returns a given node in the graph, or :data:`Node` when it cannot |
| be found. |
| |
| *Node* is either an object with a *graphident* attribute or |
| the *graphident* attribute itself. |
| |
| .. method:: ObjectGraph.__contains__(node) |
| |
| Returns True if *node* is a member of the graph. *Node* is either an |
| object with a *graphident* attribute or the *graphident* attribute itself. |
| |
| .. method:: ObjectGraph.flatten([condition[, start]]) |
| |
| Yield all nodes that are entirely reachable by *condition* |
| starting fromt he given *start* node or the graph root. |
| |
| .. note:: objects are only reachable from the graph root |
| when there is a reference from the root to the node |
| (either directly or through another node) |
| |
| .. method:: ObjectGraph.nodes() |
| |
| Yield all nodes in the graph. |
| |
| .. method:: ObjectGraph.get_edges(node) |
| |
| Returns two iterators that yield the nodes reaching by |
| outgoing and incoming edges. |
| |
| .. method:: ObjectGraph.filterStack(filters) |
| |
| Filter the ObjectGraph in-place by removing all edges to nodes that |
| do not match every filter in the given filter list |
| |
| Returns a tuple containing the number of: |
| (*nodes_visited*, *nodes_removed*, *nodes_orphaned*) |
| |
| .. method:: ObjectGraph.edgeData(fromNode, toNode): |
| Return the edge data associated with the edge from *fromNode* |
| to *toNode*. Raises :exc:`KeyError` when no such edge exists. |
| |
| .. versionadded: 0.12 |
| |
| .. method:: ObjectGraph.updateEdgeData(fromNode, toNode, edgeData) |
| |
| Replace the data associated with the edge from *fromNode* to |
| *toNode* by *edgeData*. |
| |
| Raises :exc:`KeyError` when the edge does not exist. |
| |
| Debug output |
| ------------ |
| |
| .. data:: ObjectGraph.debug |
| |
| The current debug level. |
| |
| .. method:: ObjectGraph.msg(level, text, \*args) |
| |
| Print a debug message at the current indentation level when the current |
| debug level is *level* or less. |
| |
| .. method:: ObjectGraph.msgin(level, text, \*args) |
| |
| Print a debug message when the current debug level is *level* or less, |
| and increase the indentation level. |
| |
| .. method:: ObjectGraph.msgout(level, text, \*args) |
| |
| Decrease the indentation level and print a debug message when the |
| current debug level is *level* or less. |