Mercurial > hg > WSGraph
comparison wsgraph/model.py @ 25:d1a8c1436ded
notes to self
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Wed, 12 Dec 2012 18:39:47 -0800 |
| parents | 24d57daaca21 |
| children | 4bed1424bb3f |
comparison
equal
deleted
inserted
replaced
| 24:e46b4466abac | 25:d1a8c1436ded |
|---|---|
| 1 from abc import abstractmethod | 1 from abc import abstractmethod |
| 2 from copy import deepcopy | 2 from copy import deepcopy |
| 3 from utils import isiterable | 3 from utils import isiterable |
| 4 | 4 |
| 5 class GraphModel(object): | 5 class Graph(object): |
| 6 | 6 |
| 7 @abstractmethod | 7 @abstractmethod |
| 8 def node(self, name, **values): | 8 def node(self, name, **values): |
| 9 """ | 9 """ |
| 10 get or set a node | 10 get or set a node |
| 68 return key in self.nodes() | 68 return key in self.nodes() |
| 69 else: | 69 else: |
| 70 return tuple(key) in self.edges() | 70 return tuple(key) in self.edges() |
| 71 | 71 |
| 72 | 72 |
| 73 class MemoryCache(GraphModel): | 73 class MemoryCache(Graph): |
| 74 """volatile in-memory representation of a graph""" | 74 """volatile in-memory representation of a graph""" |
| 75 | 75 |
| 76 def __init__(self): | 76 def __init__(self): |
| 77 self._edges = {} | 77 self._edges = {} |
| 78 self._nodes = {} | 78 self._nodes = {} |
| 98 # TODO: deepcopy | 98 # TODO: deepcopy |
| 99 return self._edges.get((node1, node2), None) | 99 return self._edges.get((node1, node2), None) |
| 100 | 100 |
| 101 def edges(self): | 101 def edges(self): |
| 102 return self._edges.keys() | 102 return self._edges.keys() |
| 103 | |
| 104 class FileCache(MemoryCache): | |
| 105 """on-disk JSON file cache""" | |
| 106 | |
| 107 def __init__(self, filename): | |
| 108 self.filename = filename | |
| 109 raise NotImplementedError | |
| 110 | |
| 111 # TODO: CLI entry point to convert from one model to another | |
| 112 # def main() |
