123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- :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.
|