diff -r 73e4a02e6d23 -r c2262004c2e2 mercurial/util.py --- a/mercurial/util.py Mon Jun 23 09:33:07 2014 -0400 +++ b/mercurial/util.py Sun Feb 23 01:56:31 2014 +0100 @@ -223,6 +223,37 @@ del self[i] break +class sortdict(dict): + '''a simple sorted dictionary''' + def __init__(self, data=None): + self._list = [] + if data: + self.update(data) + def copy(self): + return sortdict(self) + def __setitem__(self, key, val): + if key in self: + self._list.remove(key) + self._list.append(key) + dict.__setitem__(self, key, val) + def __iter__(self): + return self._list.__iter__() + def update(self, src): + for k in src: + self[k] = src[k] + def clear(self): + dict.clear(self) + self._list = [] + def items(self): + return [(k, self[k]) for k in self._list] + def __delitem__(self, key): + dict.__delitem__(self, key) + self._list.remove(key) + def keys(self): + return self._list + def iterkeys(self): + return self._list.__iter__() + class lrucachedict(object): '''cache most recent gets from or sets to this dictionary''' def __init__(self, maxsize):