[WIP] Coercing to Unicode #166
Draft
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.
The issue occurs when handling dictionary keys that are numeric strings (like '1'). The
key
property in thePatchOperation
class tries to convert these to integers, which confuses the logic in_item_added
when determining if it should update array indices.The problem is that the original code checks
if type(op.key) == int and type(key) == int:
to determine if it's handling arrays, but this can incorrectly match dictionary keys that are numeric strings because they get converted to integers.This patch makes the
_item_added
method more robust by checking the actual data structure type (like what's already done in_item_removed
) instead of relying on key type checking. This ensures that numeric string dictionary keys (like '1') are treated correctly as dictionary keys rather than array indices, preventing the "coercing to Unicode" error.Fixes #97.
💡 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.