mercurial/util.py
changeset 32306 2d19664e257d
parent 32300 bd0fd3ff9916
child 32367 a9c71d578a1c
equal deleted inserted replaced
32305:911057981ba4 32306:2d19664e257d
   566             return cache[args]
   566             return cache[args]
   567 
   567 
   568     return f
   568     return f
   569 
   569 
   570 class sortdict(collections.OrderedDict):
   570 class sortdict(collections.OrderedDict):
   571     '''a simple sorted dictionary'''
   571     '''a simple sorted dictionary
       
   572 
       
   573     >>> d1 = sortdict([('a', 0), ('b', 1)])
       
   574     >>> d2 = d1.copy()
       
   575     >>> d2
       
   576     sortdict([('a', 0), ('b', 1)])
       
   577     >>> d2.update([('a', 2)])
       
   578     >>> d2.keys() # should still be in last-set order
       
   579     ['b', 'a']
       
   580     '''
       
   581 
   572     def __setitem__(self, key, value):
   582     def __setitem__(self, key, value):
   573         if key in self:
   583         if key in self:
   574             del self[key]
   584             del self[key]
   575         super(sortdict, self).__setitem__(key, value)
   585         super(sortdict, self).__setitem__(key, value)
   576     def copy(self):
       
   577         return sortdict(self)
       
   578 
   586 
   579 class _lrucachenode(object):
   587 class _lrucachenode(object):
   580     """A node in a doubly linked list.
   588     """A node in a doubly linked list.
   581 
   589 
   582     Holds a reference to nodes on either side as well as a key-value
   590     Holds a reference to nodes on either side as well as a key-value