comparison mercurial/util.py @ 21813:c2262004c2e2

config: move config.sortdict class into util This makes it more natural to use the sortdict class from outside config.py.
author Angel Ezquerra <angel.ezquerra@gmail.com>
date Sun, 23 Feb 2014 01:56:31 +0100
parents cc13addbd62b
children 86c2d792a4b7
comparison
equal deleted inserted replaced
21812:73e4a02e6d23 21813:c2262004c2e2
221 for i, v in enumerate(self): 221 for i, v in enumerate(self):
222 if v == val: 222 if v == val:
223 del self[i] 223 del self[i]
224 break 224 break
225 225
226 class sortdict(dict):
227 '''a simple sorted dictionary'''
228 def __init__(self, data=None):
229 self._list = []
230 if data:
231 self.update(data)
232 def copy(self):
233 return sortdict(self)
234 def __setitem__(self, key, val):
235 if key in self:
236 self._list.remove(key)
237 self._list.append(key)
238 dict.__setitem__(self, key, val)
239 def __iter__(self):
240 return self._list.__iter__()
241 def update(self, src):
242 for k in src:
243 self[k] = src[k]
244 def clear(self):
245 dict.clear(self)
246 self._list = []
247 def items(self):
248 return [(k, self[k]) for k in self._list]
249 def __delitem__(self, key):
250 dict.__delitem__(self, key)
251 self._list.remove(key)
252 def keys(self):
253 return self._list
254 def iterkeys(self):
255 return self._list.__iter__()
256
226 class lrucachedict(object): 257 class lrucachedict(object):
227 '''cache most recent gets from or sets to this dictionary''' 258 '''cache most recent gets from or sets to this dictionary'''
228 def __init__(self, maxsize): 259 def __init__(self, maxsize):
229 self._cache = {} 260 self._cache = {}
230 self._maxsize = maxsize 261 self._maxsize = maxsize