From 0dbbb742355652c90029e479ebcc698aa8c77832 Mon Sep 17 00:00:00 2001 From: g97iulio1609 Date: Sat, 28 Feb 2026 22:03:35 +0100 Subject: [PATCH] fix: suppress PydanticSerializationUnexpectedValue warnings for Anthropic streaming events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When using Anthropic SDK >= 0.83.0, message_stop events contain ParsedTextBlock objects (a generic BaseModel subclass of TextBlock) in the Message.content field. Pydantic's serializer cannot match ParsedTextBlock against the ContentBlock TypedDict union variants, producing noisy warnings for each failed match attempt. The serialization still produces correct output — ParsedTextBlock serializes identically to TextBlock — but the warnings confuse users. Added warnings=False to event.model_dump() to suppress these non-critical serialization warnings during streaming. Fixes #1746 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/strands/models/anthropic.py | 2 +- tests/strands/models/test_anthropic.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/strands/models/anthropic.py b/src/strands/models/anthropic.py index b5f6fcf91..05749421c 100644 --- a/src/strands/models/anthropic.py +++ b/src/strands/models/anthropic.py @@ -407,7 +407,7 @@ async def stream( logger.debug("got response from model") async for event in stream: if event.type in AnthropicModel.EVENT_TYPES: - yield self.format_chunk(event.model_dump()) + yield self.format_chunk(event.model_dump(warnings=False)) usage = event.message.usage # type: ignore yield self.format_chunk({"type": "metadata", "usage": usage.model_dump()}) diff --git a/tests/strands/models/test_anthropic.py b/tests/strands/models/test_anthropic.py index c5aff8062..332429b97 100644 --- a/tests/strands/models/test_anthropic.py +++ b/tests/strands/models/test_anthropic.py @@ -696,19 +696,19 @@ async def test_stream(anthropic_client, model, agenerator, alist): mock_event_1 = unittest.mock.Mock( type="message_start", dict=lambda: {"type": "message_start"}, - model_dump=lambda: {"type": "message_start"}, + model_dump=lambda **_: {"type": "message_start"}, ) mock_event_2 = unittest.mock.Mock( type="unknown", dict=lambda: {"type": "unknown"}, - model_dump=lambda: {"type": "unknown"}, + model_dump=lambda **_: {"type": "unknown"}, ) mock_event_3 = unittest.mock.Mock( type="metadata", message=unittest.mock.Mock( usage=unittest.mock.Mock( dict=lambda: {"input_tokens": 1, "output_tokens": 2}, - model_dump=lambda: {"input_tokens": 1, "output_tokens": 2}, + model_dump=lambda **_: {"input_tokens": 1, "output_tokens": 2}, ) ), )