@@ -526,13 +526,13 @@ def _upload_parts_concurrent(
526526
527527 with open (file , "rb" ) as f :
528528 for part_info in parts :
529- f .seek ((part_info ["part_number " ] - 1 ) * part_size )
529+ f .seek ((part_info ["PartNumber " ] - 1 ) * part_size )
530530 part_data = f .read (part_size )
531531
532532 future = executor .submit (
533533 self ._upload_single_part , part_info , part_data
534534 )
535- future_to_part [future ] = part_info ["part_number " ]
535+ future_to_part [future ] = part_info ["PartNumber " ]
536536
537537 # Collect results
538538 for future in as_completed (future_to_part ):
@@ -553,16 +553,16 @@ def _upload_single_part(self, part_info: Dict[str, Any], part_data: bytes) -> st
553553 """Upload a single part and return ETag"""
554554
555555 response = requests .put (
556- part_info ["url " ],
556+ part_info ["URL " ],
557557 data = part_data ,
558- headers = part_info .get ("headers " , {}),
558+ headers = part_info .get ("Headers " , {}),
559559 timeout = MULTIPART_UPLOAD_TIMEOUT ,
560560 )
561561 response .raise_for_status ()
562562
563563 etag = response .headers .get ("ETag" , "" ).strip ('"' )
564564 if not etag :
565- raise ResponseError (f"No ETag returned for part { part_info ['part_number ' ]} " )
565+ raise ResponseError (f"No ETag returned for part { part_info ['PartNumber ' ]} " )
566566
567567 return etag
568568
@@ -591,7 +591,7 @@ def _complete_upload(
591591 ),
592592 )
593593
594- return FileResponse (** response .data [ "file" ] )
594+ return FileResponse (** response .data . get ( "file" , response . data ) )
595595
596596 def _abort_upload (self , url : str , upload_id : str , file_id : str ) -> None :
597597 """Abort the multipart upload"""
0 commit comments