diff --git a/patchdiff/serialize.py b/patchdiff/serialize.py index 1bcf6b1..e2eab68 100644 --- a/patchdiff/serialize.py +++ b/patchdiff/serialize.py @@ -3,10 +3,7 @@ def to_str_paths(ops: List) -> List: - str_ops = ops.copy() - for op in str_ops: - op["path"] = str(op["path"]) - return str_ops + return [{**op, "path": str(op["path"])} for op in ops] def to_json(ops: List, **kwargs) -> str: diff --git a/tests/test_serialize.py b/tests/test_serialize.py index 0665cdb..e2ebef2 100644 --- a/tests/test_serialize.py +++ b/tests/test_serialize.py @@ -1,4 +1,14 @@ -from patchdiff import diff, to_json +from patchdiff import apply, diff, to_json + + +def test_to_json_does_not_mutate_ops(): + a = {"x": [1, 2, 3]} + b = {"x": [1, 9, 3]} + ops, _ = diff(a, b) + + to_json(ops) + + assert apply(a, ops) == b def test_to_json():