summaryrefslogtreecommitdiff
path: root/jsonpatch.py
diff options
context:
space:
mode:
authorRyan Marvin <marvinryan@ymail.com>2021-02-01 16:58:05 +0300
committerRyan Marvin <marvinryan@ymail.com>2021-02-01 16:58:05 +0300
commit8d15ed5740027d5c0f295f82b347d963c77b8c5e (patch)
tree517e8f8afaf39460b3eaa3fd3b1a7cdb442269e5 /jsonpatch.py
parenta9a83b5aae65db3007fef8a4015f46e6e59d69c2 (diff)
downloadpython-json-patch-8d15ed5740027d5c0f295f82b347d963c77b8c5e.tar.gz
Fix make_patch
Diffstat (limited to 'jsonpatch.py')
-rw-r--r--jsonpatch.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/jsonpatch.py b/jsonpatch.py
index 84f6fb3..14341d7 100644
--- a/jsonpatch.py
+++ b/jsonpatch.py
@@ -635,7 +635,7 @@ class JsonPatch(object):
True
"""
json_dumper = dumps or cls.json_dumper
- builder = DiffBuilder(json_dumper, pointer_cls=pointer_cls)
+ builder = DiffBuilder(src, dst, json_dumper, pointer_cls=pointer_cls)
builder._compare_values('', None, src, dst)
ops = list(builder.execute())
return cls(ops, pointer_cls=pointer_cls)
@@ -688,12 +688,14 @@ class JsonPatch(object):
class DiffBuilder(object):
- def __init__(self, dumps=json.dumps, pointer_cls=JsonPointer):
+ def __init__(self, src_doc, dst_doc, dumps=json.dumps, pointer_cls=JsonPointer):
self.dumps = dumps
self.pointer_cls = pointer_cls
self.index_storage = [{}, {}]
self.index_storage2 = [[], []]
self.__root = root = []
+ self.src_doc = src_doc
+ self.dst_doc = dst_doc
root[:] = [root, root, None]
def store_index(self, value, index, st):
@@ -800,7 +802,8 @@ class DiffBuilder(object):
new_index = self.insert(new_op)
if index is not None:
op = index[2]
- if type(op.key) == int:
+ added_item = op.pointer.to_last(self.dst_doc)[0]
+ if type(added_item) == list:
for v in self.iter_from(index):
op.key = v._on_undo_add(op.path, op.key)