Mercurial > libervia-backend
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}) |