diff options
author | Stefan Kögl <stefan@skoegl.net> | 2021-03-13 20:12:15 +0100 |
---|---|---|
committer | Stefan Kögl <stefan@skoegl.net> | 2021-03-13 20:12:15 +0100 |
commit | fd9fa23c1e4b6f9f77218975bc6f10d438ef5c1b (patch) | |
tree | dfad9b9df59bbffa82ffafaf64d8fa83efcc85c5 | |
parent | d1cfec3187bc5e8b9e43127848107d7f4bf3dd80 (diff) | |
parent | ce15b237efb885b0861ba4cfaf2957e591f8cb57 (diff) | |
download | python-json-patch-fd9fa23c1e4b6f9f77218975bc6f10d438ef5c1b.tar.gz |
Merge branch 'master' of github.com:stefankoegl/python-json-patch
-rw-r--r-- | jsonpatch.py | 14 | ||||
-rwxr-xr-x | tests.py | 9 |
2 files changed, 17 insertions, 6 deletions
diff --git a/jsonpatch.py b/jsonpatch.py index 05d9a2b..3ffe5fb 100644 --- a/jsonpatch.py +++ b/jsonpatch.py @@ -699,27 +699,29 @@ class DiffBuilder(object): root[:] = [root, root, None] def store_index(self, value, index, st): + typed_key = (value, type(value)) try: storage = self.index_storage[st] - stored = storage.get(value) + stored = storage.get(typed_key) if stored is None: - storage[value] = [index] + storage[typed_key] = [index] else: - storage[value].append(index) + storage[typed_key].append(index) except TypeError: - self.index_storage2[st].append((value, index)) + self.index_storage2[st].append((typed_key, index)) def take_index(self, value, st): + typed_key = (value, type(value)) try: - stored = self.index_storage[st].get(value) + stored = self.index_storage[st].get(typed_key) if stored: return stored.pop() except TypeError: storage = self.index_storage2[st] for i in range(len(storage)-1, -1, -1): - if storage[i][0] == value: + if storage[i][0] == typed_key: return storage.pop(i)[1] def insert(self, op): @@ -481,6 +481,15 @@ class MakePatchTestCase(unittest.TestCase): self.assertEqual(res, dst) self.assertIsInstance(res['A'], bool) + def test_issue129(self): + """In JSON 1 is different from True even though in python 1 == True Take Two""" + src = {'A': {'D': 1.0}, 'B': {'E': 'a'}} + dst = {'A': {'C': 'a'}, 'B': {'C': True}} + patch = jsonpatch.make_patch(src, dst) + res = jsonpatch.apply_patch(src, patch) + self.assertEqual(res, dst) + self.assertIsInstance(res['B']['C'], bool) + def test_issue103(self): """In JSON 1 is different from 1.0 even though in python 1 == 1.0""" src = {'A': 1} |