comparison wsgraph/model.py @ 0:cfcfa093e4b4

initial commit
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 09 Dec 2012 10:21:43 -0800
parents
children f1f7a505e0d0
comparison
equal deleted inserted replaced
-1:000000000000 0:cfcfa093e4b4
1 from abc import abstractmethod
2
3 class GraphModel(object):
4
5 @abstractmethod
6 def node(self, name, **values):
7 """get or set a node"""
8
9 @abstractmethod
10 def nodes(self):
11 """returns a list of all nodes"""
12
13 @abstractmethod
14 def edges(self):
15 """returns a list of all edges"""
16
17 @abstractmethod
18 def edge(self, node1, node2, **values):
19 """returns edge from node1 to node2"""
20
21 def __getitem__(self, key):
22 """
23 if key is a basestring, return the node of that name;
24 if key is a 2-tuple/list, return the edge of that name
25 """
26
27
28 class MemoryCache(GraphModel):
29
30 def __init__(self):
31 self._edges = {}
32 self._nodes = {}
33
34 def node(self, name, **values):
35 if values:
36 # setter
37 self._nodes[name] = values
38 else:
39 # getter
40 return self._nodes.get(name, None)
41
42 def nodes(self):
43 return self._nodes.keys()
44
45 def edge(self, node1, node2, **values):
46 if values:
47 # setter
48 self._edges[(node1, node2)] = values
49 else:
50 # getter
51 return self._edges.get((node1, node2), None)
52
53 def edges(self):
54 return self._edges.keys()