diff --git a/pydantic_ai_slim/pydantic_ai/messages.py b/pydantic_ai_slim/pydantic_ai/messages.py index 88aa3fb1e9..1f3b5cd6e5 100644 --- a/pydantic_ai_slim/pydantic_ai/messages.py +++ b/pydantic_ai_slim/pydantic_ai/messages.py @@ -1070,7 +1070,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) __repr__ = _utils.dataclasses_no_defaults_repr diff --git a/tests/test_messages.py b/tests/test_messages.py index d971ac46b3..627be2c928 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] = [