From f528c5a8dcba95ed916221699367b4acc20e8e9c Mon Sep 17 00:00:00 2001 From: David <64162682+dsfaccini@users.noreply.github.com> Date: Fri, 14 Nov 2025 16:44:18 -0500 Subject: [PATCH 1/2] Update has_content method to check content data --- pydantic_ai_slim/pydantic_ai/messages.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index 988430d12a..5243b55fc9 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -1060,7 +1060,7 @@ class FilePart: def has_content(self) -> bool: """Return `True` if the file content is non-empty.""" - return bool(self.content) # pragma: no cover + return bool(self.content.data) # pragma: no cover __repr__ = _utils.dataclasses_no_defaults_repr From fdd89326661dcdc79a14c7a506fd0f92638fef4f Mon Sep 17 00:00:00 2001 From: David Sanchez <64162682+dsfaccini@users.noreply.github.com> Date: Tue, 18 Nov 2025 16:45:43 -0500 Subject: [PATCH 2/2] add test for filepart.has_content --- pydantic_ai_slim/pydantic_ai/messages.py | 2 +- tests/test_messages.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index 5243b55fc9..4f5b637159 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -1060,7 +1060,7 @@ class FilePart: def has_content(self) -> bool: """Return `True` if the file content is non-empty.""" - return bool(self.content.data) # pragma: no cover + return bool(self.content.data) __repr__ = _utils.dataclasses_no_defaults_repr diff --git a/tests/test_messages.py b/tests/test_messages.py index 9b6ad3fbb8..4d2b29b3b9 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -422,6 +422,14 @@ def test_pre_usage_refactor_messages_deserializable(): ) +def test_file_part_has_content(): + filepart = FilePart(content=BinaryContent(data=b'', media_type='application/pdf')) + assert not filepart.has_content() + + filepart.content.data = b'not empty' + assert filepart.has_content() + + def test_file_part_serialization_roundtrip(): # Verify that a serialized BinaryImage doesn't come back as a BinaryContent. messages: list[ModelMessage] = [