stefankoegl / python-json-patch

Applying JSON Patches in Python
https://python-json-patch.readthedocs.org/
BSD 3-Clause "New" or "Revised" License
440 stars 96 forks source link

Coercing to Unicode #97

Open leofirespotter opened 5 years ago

leofirespotter commented 5 years ago

Seeing a strange bug in the library. Here is the simplest repro of it that I could find:

src = {'1' : 'def'}
dst = {'test' : '1', 'b' : 'def'}
jsonpatch.make_patch(src, dst)

Which leads produces the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "jsonpatch.py", line 164, in make_patch
    return JsonPatch.from_diff(src, dst)
  File "jsonpatch.py", line 283, in from_diff
    builder._compare_values('', None, src, dst)
  File "jsonpatch.py", line 820, in _compare_values
    self._compare_dicts(_path_join(path, key), src, dst)
  File "jsonpatch.py", line 781, in _compare_dicts
    self._item_added(path, str(key), dst[key])
  File "jsonpatch.py", line 717, in _item_added
    op.key = v._on_undo_remove(op.path, op.key)
  File "jsonpatch.py", line 445, in _on_undo_remove
    self.key += 1
TypeError: coercing to Unicode: need string or buffer, int found

Any ideas?