Source code for intermol.orderedset

import collections
from copy import deepcopy


[docs]class OrderedSet(collections.Set): def __init__(self, iterable=()): self.d = collections.OrderedDict.fromkeys(iterable)
[docs] def add(self, key): self.d[key] = None
[docs] def discard(self, key): del self.d[key]
[docs] def difference_update(self, *args, **kwargs): intersection = set(self.d.keys()).intersection(args[0]) self.intersection_update(intersection)
[docs] def intersection_update(self, *args, **kwargs): for part in args[0]: del self.d[part]
def __len__(self): return len(self.d) def __contains__(self, element): return element in self.d def __iter__(self): return self.d.__iter__() def __le__(self, other): if not isinstance(other, collections.Set): return NotImplemented if len(self) > len(other): return False for e1, e2 in zip(self, other): if e1 != e2: return False return True ### General Methods def __del__(self): self.d.clear() # remove circular labels def __repr__(self): class_name = self.__class__.__name__ if not self: return '{0!s}()'.format(class_name) return '{0!s}({1!r})'.format(class_name, list(self)) def __deepcopy__(self, memo): result = OrderedSet() for elt in self: result.add(deepcopy(elt,memo)) return result