comparison sat/tools/common/utils.py @ 3292:84f77f04aa08

tools (common/utils): new OrderedSet class
author Goffi <goffi@goffi.org>
date Mon, 08 Jun 2020 08:54:53 +0200
parents 1649bbe8d07e
children be6d91572633
comparison
equal deleted inserted replaced
3291:449dfbfcdbcc 3292:84f77f04aa08
42 ori[k] = recursive_update(ori.get(k, {}), v) 42 ori[k] = recursive_update(ori.get(k, {}), v)
43 else: 43 else:
44 ori[k] = v 44 ori[k] = v
45 return ori 45 return ori
46 46
47 class OrderedSet(collections.abc.MutableSet):
48 """A mutable sequence which doesn't keep duplicates"""
49 # TODO: complete missing set methods
50
51 def __init__(self, values=None):
52 self._dict = {}
53 if values is not None:
54 self.update(values)
55
56 def __len__(self):
57 return len(self._dict)
58
59 def __iter__(self):
60 return iter(self._dict.keys())
61
62 def __contains__(self, item):
63 return item in self._dict
64
65 def add(self, item):
66 self._dict[item] = None
67
68 def discard(self, item):
69 try:
70 del self._dict[item]
71 except KeyError:
72 pass
73
74 def update(self, items):
75 self._dict.update({i: None for i in items})