@@ -80,8 +80,14 @@ def file(
8080 cls , file : types .FileWithUri | types .FileWithBytes
8181 ) -> a2a_pb2 .FilePart :
8282 if isinstance (file , types .FileWithUri ):
83- return a2a_pb2 .FilePart (file_with_uri = file .uri )
84- return a2a_pb2 .FilePart (file_with_bytes = file .bytes .encode ('utf-8' ))
83+ return a2a_pb2 .FilePart (
84+ file_with_uri = file .uri , mime_type = file .mime_type , name = file .name
85+ )
86+ return a2a_pb2 .FilePart (
87+ file_with_bytes = file .bytes .encode ('utf-8' ),
88+ mime_type = file .mime_type ,
89+ name = file .name ,
90+ )
8591
8692 @classmethod
8793 def task (cls , task : types .Task ) -> a2a_pb2 .Task :
@@ -500,9 +506,19 @@ def data(cls, data: a2a_pb2.DataPart) -> dict[str, Any]:
500506 def file (
501507 cls , file : a2a_pb2 .FilePart
502508 ) -> types .FileWithUri | types .FileWithBytes :
509+ common_args = {
510+ 'mime_type' : file .mime_type or None ,
511+ 'name' : file .name or None ,
512+ }
503513 if file .HasField ('file_with_uri' ):
504- return types .FileWithUri (uri = file .file_with_uri )
505- return types .FileWithBytes (bytes = file .file_with_bytes .decode ('utf-8' ))
514+ return types .FileWithUri (
515+ uri = file .file_with_uri ,
516+ ** common_args ,
517+ )
518+ return types .FileWithBytes (
519+ bytes = file .file_with_bytes .decode ('utf-8' ),
520+ ** common_args ,
521+ )
506522
507523 @classmethod
508524 def task_or_message (
0 commit comments