summaryrefslogtreecommitdiff
path: root/python/altgraph/doc/objectgraph.rst
blob: e3df396b188ca588fd4669a775387e3ab24b8090 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
: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.