diff options
Diffstat (limited to 'openerp/tools/misc.py')
| -rw-r--r-- | openerp/tools/misc.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index 48b9e633c78..92545925bad 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -37,7 +37,7 @@ import threading import time import werkzeug.utils import zipfile -from collections import defaultdict, Mapping +from collections import defaultdict, Mapping, OrderedDict from datetime import datetime from itertools import islice, izip, groupby from lxml import etree @@ -1136,6 +1136,17 @@ class frozendict(dict): def update(self, *args, **kwargs): raise NotImplementedError("'update' not supported on frozendict") +class OrderedSet(OrderedDict): + """ A simple collection that remembers the elements insertion order. """ + def __init__(self, seq=()): + super(OrderedSet, self).__init__([(x, None) for x in seq]) + + def add(self, elem): + self[elem] = None + + def discard(self, elem): + self.pop(elem, None) + @contextmanager def ignore(*exc): try: |
