diff options
author | Stefan Kögl <stefan@skoegl.net> | 2017-09-10 16:38:56 +0200 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2017-09-10 19:24:48 +0200 |
commit | 7387d20148bbb15f576338a5114a28f7afa5e1ac (patch) | |
tree | 8c99b283c24e9b1ccdd742ba90f85b1428da7171 /jsonpatch.py | |
parent | 098c7c78b8abae2fe74d0b44f6ebb70fea0b7c50 (diff) | |
download | python-json-patch-7387d20148bbb15f576338a5114a28f7afa5e1ac.tar.gz |
Simplify compatibility code
Diffstat (limited to 'jsonpatch.py')
-rw-r--r-- | jsonpatch.py | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/jsonpatch.py b/jsonpatch.py index d2aaa01..7ac2f68 100644 --- a/jsonpatch.py +++ b/jsonpatch.py @@ -43,17 +43,6 @@ import json import sys -if sys.version_info[0] >= 3: - _range = range - _viewkeys = dict.keys -else: - _range = xrange - if sys.version_info[1] >= 7: - _viewkeys = dict.viewkeys - else: - _viewkeys = lambda x: set(dict.keys(x)) - - _ST_ADD = 0 _ST_REMOVE = 1 @@ -782,8 +771,8 @@ class DiffBuilder(object): })) def _compare_dicts(self, path, src, dst): - src_keys = _viewkeys(src) - dst_keys = _viewkeys(dst) + src_keys = set(src.keys()) + dst_keys = set(dst.keys()) added_keys = dst_keys - src_keys removed_keys = src_keys - dst_keys for key in removed_keys: @@ -797,7 +786,7 @@ class DiffBuilder(object): len_src, len_dst = len(src), len(dst) max_len = max(len_src, len_dst) min_len = min(len_src, len_dst) - for key in _range(max_len): + for key in range(max_len): if key < min_len: old, new = src[key], dst[key] if old == new: @@ -812,11 +801,11 @@ class DiffBuilder(object): def _compare_values(self, path, key, src, dst): if src == dst: return - elif isinstance(src, dict) and \ - isinstance(dst, dict): + elif isinstance(src, MutableMapping) and \ + isinstance(dst, MutableMapping): self._compare_dicts(_path_join(path, key), src, dst) - elif isinstance(src, list) and \ - isinstance(dst, list): + elif isinstance(src, MutableSequence) and \ + isinstance(dst, MutableSequence): self._compare_lists(_path_join(path, key), src, dst) else: self._item_replaced(path, key, dst) |