mercurial/dicthelpers.py
changeset 18894 ed46c2b98b0d
parent 18847 40c679748fa9
equal deleted inserted replaced
18892:46c0ca1ef7e1 18894:ed46c2b98b0d
     9     '''Return all key-value pairs that are different between d1 and d2.
     9     '''Return all key-value pairs that are different between d1 and d2.
    10 
    10 
    11     This includes keys that are present in one dict but not the other, and
    11     This includes keys that are present in one dict but not the other, and
    12     keys whose values are different. The return value is a dict with values
    12     keys whose values are different. The return value is a dict with values
    13     being pairs of values from d1 and d2 respectively, and missing values
    13     being pairs of values from d1 and d2 respectively, and missing values
    14     represented as default.'''
    14     treated as default, so if a value is missing from one dict and the same as
       
    15     default in the other, it will not be returned.'''
    15     res = {}
    16     res = {}
    16     if d1 is d2:
    17     if d1 is d2:
    17         # same dict, so diff is empty
    18         # same dict, so diff is empty
    18         return res
    19         return res
    19 
    20 
    20     for k1, v1 in d1.iteritems():
    21     for k1, v1 in d1.iteritems():
    21         if k1 in d2:
    22         v2 = d2.get(k1, default)
    22             v2 = d2[k1]
    23         if v1 != v2:
    23             if v1 != v2:
    24             res[k1] = (v1, v2)
    24                 res[k1] = (v1, v2)
       
    25         else:
       
    26             res[k1] = (v1, default)
       
    27 
    25 
    28     for k2 in d2:
    26     for k2 in d2:
    29         if k2 not in d1:
    27         if k2 not in d1:
    30             res[k2] = (default, d2[k2])
    28             v2 = d2[k2]
       
    29             if v2 != default:
       
    30                 res[k2] = (default, v2)
    31 
    31 
    32     return res
    32     return res
    33 
    33 
    34 def join(d1, d2, default=None):
    34 def join(d1, d2, default=None):
    35     '''Return all key-value pairs from both d1 and d2.
    35     '''Return all key-value pairs from both d1 and d2.