Fix unnecessary complexity in patch generation for lists of lists #169
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When inserting new elements into a list of lists, the JSON patch representation was unnecessarily complex. Instead of generating a simple
add
operation with the whole list element as the value, it was breaking down the change into multiple operations (replace and add operations for individual elements).For example, given:
Version 1.16 produced a simple, intuitive patch:
But version 1.20 produced an unnecessarily complex patch:
Solution
Added special case handling in the
_compare_lists
method to detect when elements are being inserted at the beginning of a list. This ensures that when inserting list elements, the patch generator produces a cleaner, more intuitive patch representation.The change makes the patch representation simpler while maintaining backward compatibility with all existing behavior.
Fixes #78.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.