fix: recurse into tuples in deepcopy_minimal to prevent in-place mutation#1302
Open
Scottcjn wants to merge 3 commits intoanthropics:mainfrom
Open
fix: recurse into tuples in deepcopy_minimal to prevent in-place mutation#1302Scottcjn wants to merge 3 commits intoanthropics:mainfrom
Scottcjn wants to merge 3 commits intoanthropics:mainfrom
Conversation
…reaming
The beta path (_beta_messages.py) wraps from_json() with a try-except
that provides an actionable error message including the raw JSON.
The non-beta path (_messages.py) was missing this wrapper, causing
raw ValueError with no context ("expected ident at line 1 column 11").
Fixes anthropics#1265
The docstring example was copy-pasted from the sync class without updating: wrong base class name, sync methods instead of async, Anthropic() instead of AsyncAnthropic(), missing await. Fixes anthropics#1290
deepcopy_minimal only copied dicts and lists, leaving tuples as-is. When a FileTypes tuple like (name, content, mime, headers) was passed to files.beta.upload, the headers Mapping inside the tuple could be mutated in-place, corrupting the caller's data. Fixes anthropics#1202
7294566 to
e6c07c0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
deepcopy_minimalonly recursed into dicts and lists, leaving tuples as-is. When aFileTypestuple like(name, content, mime, headers_mapping)was passed tofiles.beta.upload, the headersMappinginside the tuple could be mutated in-place, corrupting the caller's original data.Fix
Add tuple handling to
deepcopy_minimal:One line of logic. Preserves tuple type while recursing into nested mappings.
Test plan
(str, bytes, str, Mapping)no longer mutatedFixes #1202