Mercurial > hg > WSGraph
view wsgraph/model.py @ 1:5abe00d24a2f
make setup.py accurate
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Sun, 09 Dec 2012 10:25:50 -0800 |
parents | cfcfa093e4b4 |
children | f1f7a505e0d0 |
line wrap: on
line source
from abc import abstractmethod class GraphModel(object): @abstractmethod def node(self, name, **values): """get or set a node""" @abstractmethod def nodes(self): """returns a list of all nodes""" @abstractmethod def edges(self): """returns a list of all edges""" @abstractmethod def edge(self, node1, node2, **values): """returns edge from node1 to node2""" def __getitem__(self, key): """ if key is a basestring, return the node of that name; if key is a 2-tuple/list, return the edge of that name """ class MemoryCache(GraphModel): def __init__(self): self._edges = {} self._nodes = {} def node(self, name, **values): if values: # setter self._nodes[name] = values else: # getter return self._nodes.get(name, None) def nodes(self): return self._nodes.keys() def edge(self, node1, node2, **values): if values: # setter self._edges[(node1, node2)] = values else: # getter return self._edges.get((node1, node2), None) def edges(self): return self._edges.keys()