Closed RyanSept closed 2 years ago
Version: 1.28 Python version: 2.7.17, 3.7.2
Description I run into an error ValueError: invalid literal for int() with base 10: '6e3d1297_0c5a_88f9_576b_ad9216611c94' when diffing these two objects. This happens on both Python 2 and 3.
ValueError: invalid literal for int() with base 10: '6e3d1297_0c5a_88f9_576b_ad9216611c94'
td3 = { 'id': '456', 'metadata': [{'ext': {'821b7213_b9e6_2b73_2e9c_cf1526314553': ['Open Work'], '6e3d1297_0c5a_88f9_576b_ad9216611c94': ['Many Things'], '1987bcf0_dc97_59a1_4c62_ce33e51651c7': ['Product']}, 'schema_id': 'id777', 'updated_at': '2020-10-07T02:19:06+00:00'}, {'ext': {'2a7624e_0166_4d75_a92c_06b3f': []}, 'schema_id': 'id812', 'updated_at': '2020-10-07T02:19:05+00:00'}, {'ext': {'10': [], '11': ['bee', 'ant', 'wasp'], '13': ['phobos', 'titan', 'gaea'], '14': [], '15': 'run3', '16': 'service', '2': ['zero', 'enable']}, 'schema_id': 'id1289', 'updated_at': '2020-10-07T02:19:06+00:00'}], 'updated_at': '2021-01-04T01:23:27+00:00'} td4 = { 'id': '456', 'metadata': [{'ext': {'1': [], '2': []}, 'schema_id': 'id91', 'updated_at': '2021-01-04T01:24:02+00:00'}, {'ext': {'821b7213_b9e6_2b73_2e9c_cf1526314553': ['Open Work'], '6e3d1297_0c5a_88f9_576b_ad9216611c94': ['Many Things'], '1987bcf0_dc97_59a1_4c62_ce33e51651c7': ['Product']}, 'schema_id': 'id777', 'updated_at': '2020-10-07T02:19:06+00:00'}, {'ext': {'2a7624e_0166_4d75_a92c_06b3f': []}, 'schema_id': 'id812', 'updated_at': '2021-01-04T01:24:02+00:00'}, {'ext': {'b238d74d_dcf4_448c_9794_c13a2f7b3c0a': [], 'dcb0387c2_f7ae_b8e5bab_a2b1_94deb7c': []}, 'schema_id': 'id191', 'updated_at': '2021-01-04T01:24:02+00:00'}, {'ext': {'10': [], '11': ['bee', 'ant', 'fly'], '13': ['titan', 'phobos', 'gaea'], '14': [], '15': 'run3', '16': 'service', '2': ['zero', 'enable']}, 'schema_id': 'id1289', 'updated_at': '2021-01-04T01:24:02+00:00'}], 'updated_at': '2021-01-04T01:24:03+00:00', }
import jsonpatch jsonpatch.make_patch(td3, td4)
/lib/python2.7/site-packages/jsonpatch.pyc in make_patch(src, dst, pointer_cls) 173 """ 174 --> 175 return JsonPatch.from_diff(src, dst, pointer_cls=pointer_cls) 176 177 /lib/python2.7/site-packages/jsonpatch.pyc in from_diff(cls, src, dst, optimization, dumps, pointer_cls) 637 json_dumper = dumps or cls.json_dumper 638 builder = DiffBuilder(json_dumper, pointer_cls=pointer_cls) --> 639 builder._compare_values('', None, src, dst) 640 ops = list(builder.execute()) 641 return cls(ops, pointer_cls=pointer_cls) /lib/python2.7/site-packages/jsonpatch.pyc in _compare_values(self, path, key, src, dst) 873 if isinstance(src, MutableMapping) and \ 874 isinstance(dst, MutableMapping): --> 875 self._compare_dicts(_path_join(path, key), src, dst) 876 877 elif isinstance(src, MutableSequence) and \ /lib/python2.7/site-packages/jsonpatch.pyc in _compare_dicts(self, path, src, dst) 840 841 for key in src_keys & dst_keys: --> 842 self._compare_values(path, key, src[key], dst[key]) 843 844 def _compare_lists(self, path, src, dst): /lib/python2.7/site-packages/jsonpatch.pyc in _compare_values(self, path, key, src, dst) 877 elif isinstance(src, MutableSequence) and \ 878 isinstance(dst, MutableSequence): --> 879 self._compare_lists(_path_join(path, key), src, dst) 880 881 # To ensure we catch changes to JSON, we can't rely on a simple /lib/python2.7/site-packages/jsonpatch.pyc in _compare_lists(self, path, src, dst) 854 elif isinstance(old, MutableMapping) and \ 855 isinstance(new, MutableMapping): --> 856 self._compare_dicts(_path_join(path, key), old, new) 857 858 elif isinstance(old, MutableSequence) and \ /lib/python2.7/site-packages/jsonpatch.pyc in _compare_dicts(self, path, src, dst) 840 841 for key in src_keys & dst_keys: --> 842 self._compare_values(path, key, src[key], dst[key]) 843 844 def _compare_lists(self, path, src, dst): /lib/python2.7/site-packages/jsonpatch.pyc in _compare_values(self, path, key, src, dst) 873 if isinstance(src, MutableMapping) and \ 874 isinstance(dst, MutableMapping): --> 875 self._compare_dicts(_path_join(path, key), src, dst) 876 877 elif isinstance(src, MutableSequence) and \ /lib/python2.7/site-packages/jsonpatch.pyc in _compare_dicts(self, path, src, dst) 834 835 for key in removed_keys: --> 836 self._item_removed(path, str(key), src[key]) 837 838 for key in added_keys: /lib/python2.7/site-packages/jsonpatch.pyc in _item_removed(self, path, key, item) 803 if type(op.key) == int: 804 for v in self.iter_from(index): --> 805 op.key = v._on_undo_add(op.path, op.key) 806 807 self.remove(index) /lib/python2.7/site-packages/jsonpatch.pyc in _on_undo_add(self, path, key) 428 def _on_undo_add(self, path, key): 429 if self.from_path == path: --> 430 if self.from_key > key: 431 self.from_key -= 1 432 else: /lib/python2.7/site-packages/jsonpatch.pyc in from_key(self) 403 from_ptr = self.pointer_cls(self.operation['from']) 404 try: --> 405 return int(from_ptr.parts[-1]) 406 except TypeError: 407 return from_ptr.parts[-1] ValueError: invalid literal for int() with base 10: '6e3d1297_0c5a_88f9_576b_ad9216611c94'
Version: 1.28 Python version: 2.7.17, 3.7.2
Description I run into an error
ValueError: invalid literal for int() with base 10: '6e3d1297_0c5a_88f9_576b_ad9216611c94'
when diffing these two objects. This happens on both Python 2 and 3.Steps to reproduce
Stack trace