Skip to content

fix(streaming): resolve Pydantic validation bypass causing dict attribute crashes - #1861

Open
vjaudir8123-debug wants to merge 1 commit into
anthropics:mainfrom
vjaudir8123-debug:fix/streaming-pydantic-validation
Open

fix(streaming): resolve Pydantic validation bypass causing dict attribute crashes#1861
vjaudir8123-debug wants to merge 1 commit into
anthropics:mainfrom
vjaudir8123-debug:fix/streaming-pydantic-validation

Conversation

@vjaudir8123-debug

Copy link
Copy Markdown
Contributor

Summary

(Extracted from #1797 to isolate the Pydantic type safety bug from the out-of-order index bug).

The snapshot initialization currently uses Pydantics construct(**event.message.to_dict()). Because construct()skips validation and deep coercion, nested fields likeusage` are left as raw Python dictionaries rather than Pydantic objects.

When a subsequent usage delta arrives, current_snapshot.usage.output_tokens = ... will crash with AttributeError: 'dict' object has no attribute 'output_tokens'. This PR isolates and fixes this type safety bug by using construct_type(type_=...), ensuring correct instantiation of nested models so they can be safely mutated by subsequent streaming events.

…bute crashes

The snapshot initialization previously used Pydantic's `construct(**event.message.to_dict())`. Because `construct()` skips validation and deep coercion, nested fields like `usage` were left as raw Python dictionaries rather than Pydantic objects.

When a subsequent usage delta arrived, `current_snapshot.usage.output_tokens = ...` would crash with `AttributeError: 'dict' object has no attribute 'output_tokens'`. This PR isolates and fixes this type safety bug by using `construct_type(type_=...)`, ensuring correct instantiation of nested models.

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant