summaryrefslogtreecommitdiff
path: root/openerp/tools/misc.py
diff options
context:
space:
mode:
Diffstat (limited to 'openerp/tools/misc.py')
-rw-r--r--openerp/tools/misc.py13
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: