comparison wsgraph/model.py @ 39:d1e9602145fa

rudimentary deletion and notes to self
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 25 Dec 2012 12:46:39 -0800
parents df2a719a9b6e
children
comparison
equal deleted inserted replaced
38:df2a719a9b6e 39:d1e9602145fa
102 class DirectedGraph(Graph): 102 class DirectedGraph(Graph):
103 """mix-in class for directed graphs""" 103 """mix-in class for directed graphs"""
104 # TODO: is this possible without super or other black magicks? 104 # TODO: is this possible without super or other black magicks?
105 105
106 106
107 class MemoryCache(Graph): 107 class MemoryCache(Graph): # TODO -> MemoryCacheGraph
108 """volatile in-memory representation of a graph""" 108 """volatile in-memory representation of a graph"""
109
110 # TODO: a subclass that pegs the type(s?) to something specific
109 111
110 def __init__(self, node_type=dict): 112 def __init__(self, node_type=dict):
111 self._edges = {} 113 self._edges = {}
112 self._nodes = {} 114 self._nodes = {}
113 self.node_type = node_type 115 self.node_type = node_type
136 return deepcopy(self._edges.get((node1, node2), None)) 138 return deepcopy(self._edges.get((node1, node2), None))
137 139
138 def edges(self): 140 def edges(self):
139 return self._edges.keys() 141 return self._edges.keys()
140 142
143 def delete(self, node1, node2=None):
144 if node2 is not None:
145 # delete an edge
146 key = node1, node2
147 del self._edges[key]
148 return
149
150 # delete a node
151 # TODO: if a node is deleted, all edges to it should be deleted
152 del self._nodes[node1]
153
141 154
142 class FileCache(MemoryCache): 155 class FileCache(MemoryCache):
143 """on-disk JSON file cache""" 156 """on-disk JSON file cache"""
144 157
145 def __init__(self, filename): 158 def __init__(self, filename):