43
43
import sys
44
44
45
45
46
- if sys .version_info [0 ] >= 3 :
47
- _range = range
48
- _viewkeys = dict .keys
49
- else :
50
- _range = xrange
51
- if sys .version_info [1 ] >= 7 :
52
- _viewkeys = dict .viewkeys
53
- else :
54
- _viewkeys = lambda x : set (dict .keys (x ))
55
-
56
-
57
46
_ST_ADD = 0
58
47
_ST_REMOVE = 1
59
48
@@ -782,8 +771,8 @@ def _item_replaced(self, path, key, item):
782
771
}))
783
772
784
773
def _compare_dicts (self , path , src , dst ):
785
- src_keys = _viewkeys (src )
786
- dst_keys = _viewkeys (dst )
774
+ src_keys = set (src . keys () )
775
+ dst_keys = set (dst . keys () )
787
776
added_keys = dst_keys - src_keys
788
777
removed_keys = src_keys - dst_keys
789
778
for key in removed_keys :
@@ -797,7 +786,7 @@ def _compare_lists(self, path, src, dst):
797
786
len_src , len_dst = len (src ), len (dst )
798
787
max_len = max (len_src , len_dst )
799
788
min_len = min (len_src , len_dst )
800
- for key in _range (max_len ):
789
+ for key in range (max_len ):
801
790
if key < min_len :
802
791
old , new = src [key ], dst [key ]
803
792
if old == new :
@@ -812,11 +801,11 @@ def _compare_lists(self, path, src, dst):
812
801
def _compare_values (self , path , key , src , dst ):
813
802
if src == dst :
814
803
return
815
- elif isinstance (src , dict ) and \
816
- isinstance (dst , dict ):
804
+ elif isinstance (src , MutableMapping ) and \
805
+ isinstance (dst , MutableMapping ):
817
806
self ._compare_dicts (_path_join (path , key ), src , dst )
818
- elif isinstance (src , list ) and \
819
- isinstance (dst , list ):
807
+ elif isinstance (src , MutableSequence ) and \
808
+ isinstance (dst , MutableSequence ):
820
809
self ._compare_lists (_path_join (path , key ), src , dst )
821
810
else :
822
811
self ._item_replaced (path , key , dst )
0 commit comments