@@ -78,8 +78,14 @@ def file(
7878 cls , file : types .FileWithUri | types .FileWithBytes
7979 ) -> a2a_pb2 .FilePart :
8080 if isinstance (file , types .FileWithUri ):
81- return a2a_pb2 .FilePart (file_with_uri = file .uri )
82- return a2a_pb2 .FilePart (file_with_bytes = file .bytes .encode ('utf-8' ))
81+ return a2a_pb2 .FilePart (
82+ file_with_uri = file .uri , mime_type = file .mime_type , name = file .name
83+ )
84+ return a2a_pb2 .FilePart (
85+ file_with_bytes = file .bytes .encode ('utf-8' ),
86+ mime_type = file .mime_type ,
87+ name = file .name ,
88+ )
8389
8490 @classmethod
8591 def task (cls , task : types .Task ) -> a2a_pb2 .Task :
@@ -498,9 +504,19 @@ def data(cls, data: a2a_pb2.DataPart) -> dict[str, Any]:
498504 def file (
499505 cls , file : a2a_pb2 .FilePart
500506 ) -> types .FileWithUri | types .FileWithBytes :
507+ common_args = {
508+ 'mime_type' : file .mime_type or None ,
509+ 'name' : file .name or None ,
510+ }
501511 if file .HasField ('file_with_uri' ):
502- return types .FileWithUri (uri = file .file_with_uri )
503- return types .FileWithBytes (bytes = file .file_with_bytes .decode ('utf-8' ))
512+ return types .FileWithUri (
513+ uri = file .file_with_uri ,
514+ ** common_args ,
515+ )
516+ return types .FileWithBytes (
517+ bytes = file .file_with_bytes .decode ('utf-8' ),
518+ ** common_args ,
519+ )
504520
505521 @classmethod
506522 def task_or_message (
0 commit comments