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
addoperation 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_listsmethod 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.