# HG changeset patch # User Jeff Hammel # Date 1355188082 28800 # Node ID f1f7a505e0d0cf1628b05e26ffbfc6e5e8fe20b2 # Parent 9016b126aa87cc2b1d086215cc135d4c5ff3706a __contains__ method diff -r 9016b126aa87 -r f1f7a505e0d0 wsgraph/model.py --- a/wsgraph/model.py Mon Dec 10 13:55:58 2012 -0800 +++ b/wsgraph/model.py Mon Dec 10 17:08:02 2012 -0800 @@ -1,4 +1,5 @@ from abc import abstractmethod +from utils import iterable class GraphModel(object): @@ -24,6 +25,21 @@ if key is a 2-tuple/list, return the edge of that name """ + if isinstance(key, basestring) or (not iterable(key)): + return self.node(key) + else: + return self.edge(*key) + + def __contains__(self, key): + """ + if key is ..., returns if that node is in the graph + if key is a 2-tuple/list, returns if the edge is in the graph + """ + # XXX not necessarily the best implementation! + if isinstance(key, basestring) or (not iterable(key)): + return key in self.nodes() + else: + return tuple(key) in self.edges() class MemoryCache(GraphModel): diff -r 9016b126aa87 -r f1f7a505e0d0 wsgraph/utils.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wsgraph/utils.py Mon Dec 10 17:08:02 2012 -0800 @@ -0,0 +1,10 @@ +""" +utility functions that should be in core python +""" + +def isiterable(instance): + try: + iter(instance) + return True + except TypeError: + return False