Bug: Remove /array/- raises TypeError
Version: 1.32 Python version: 3.8
Description
Removing array element with dash notation raises an unexpected TypeError. Like so: {'op': 'remove', 'path': '/vals/-'}.
I understand that the dash points to the end of array, but not the last element? Even so, if the syntax is invalid, I think it should raise a JsonPatchException or JsonPointerException.
Step to reproduce
jsonpatch.JsonPatch([
{'op': 'remove', 'path': '/vals/-'}
]).apply({
'vals': [1, 2, 3]
})
Stack trace
File "\lib\site-packages\jsonpatch.py", line 669, in apply
obj = operation.apply(obj)
File "\lib\site-packages\jsonpatch.py", line 238, in apply
del subobj[part]
TypeError: list indices must be integers or slices, not str
Thanks for the report. I think your suggestion makes a lot of sense.
Would you be interested in preparing a pull request?
Ok, I will find some time to do it. So according to this section, I think it make sense to raise a JsonPointerException in this case. What do you think?
Agreed - makes sense
FYI I made a PR, can you check please?
Looks good! I’ll merge and include it in the next release. Thanks!