Mercurial > hg > WSGraph
comparison wsgraph/model.py @ 32:943a4b7097af
fix tests
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Thu, 13 Dec 2012 18:59:32 -0800 |
| parents | 5f14a4183bf2 |
| children | 16673636dcb6 |
comparison
equal
deleted
inserted
replaced
| 31:5f14a4183bf2 | 32:943a4b7097af |
|---|---|
| 11 WSGraph is interacted with by implementing | 11 WSGraph is interacted with by implementing |
| 12 wsgraph.model.Graph object for a desired interface | 12 wsgraph.model.Graph object for a desired interface |
| 13 """ | 13 """ |
| 14 | 14 |
| 15 @abstractmethod | 15 @abstractmethod |
| 16 def node(self, name, **values): | 16 def node(self, name, value=None): |
| 17 """ | 17 """ |
| 18 get or set a node | 18 get or set a node |
| 19 | 19 |
| 20 When setting a node, a value of `None` will pop the value from | 20 When setting a node, a value of `None` will pop the value from |
| 21 the nodal values | 21 the nodal values |
| 27 @abstractmethod | 27 @abstractmethod |
| 28 def nodes(self): | 28 def nodes(self): |
| 29 """returns a list of all nodes""" | 29 """returns a list of all nodes""" |
| 30 | 30 |
| 31 @abstractmethod | 31 @abstractmethod |
| 32 def edge(self, node1, node2, **values): | 32 def edge(self, node1, node2, value=None): |
| 33 """ | 33 """ |
| 34 get or set edge from node1 to node2 | 34 get or set edge from node1 to node2 |
| 35 """ | 35 """ |
| 36 | 36 |
| 37 @abstractmethod | 37 @abstractmethod |
| 90 | 90 |
| 91 def __init__(self): | 91 def __init__(self): |
| 92 self._edges = {} | 92 self._edges = {} |
| 93 self._nodes = {} | 93 self._nodes = {} |
| 94 | 94 |
| 95 def node(self, name, **values): | 95 def node(self, name, value=None): |
| 96 if values: | 96 if value is not None: |
| 97 # setter | 97 # setter |
| 98 self._nodes[name] = deepcopy(values) | 98 self._nodes[name] = deepcopy(value) |
| 99 else: | 99 else: |
| 100 # getter | 100 # getter |
| 101 # TODO: deepcopy | 101 # TODO: deepcopy |
| 102 return self._nodes.get(name, None) | 102 return self._nodes.get(name, None) |
| 103 | 103 |
| 104 def nodes(self): | 104 def nodes(self): |
| 105 return self._nodes.keys() | 105 return self._nodes.keys() |
| 106 | 106 |
| 107 def edge(self, node1, node2, **values): | 107 def edge(self, node1, node2, value=None): |
| 108 if values: | 108 if value is not None: |
| 109 # setter | 109 # setter |
| 110 self._edges[(node1, node2)] = deepcopy(values) | 110 self._edges[(node1, node2)] = deepcopy(value) |
| 111 for node in node1, node2: | |
| 112 self._nodes.setdefault(node, {}) | |
| 111 else: | 113 else: |
| 112 # getter | 114 # getter |
| 113 # TODO: deepcopy | 115 # TODO: deepcopy |
| 114 return self._edges.get((node1, node2), None) | 116 return self._edges.get((node1, node2), None) |
| 115 | 117 |
