+
    ,i<  c                   s    ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHtHtH	t	H
t
 ^ RIHtHtHtHt  ! R R]	4      t ! R R	]
4      t ! R
 R]
4      tR# )i    N)ClientError)S3CopyFailedError)CompleteMultipartUploadTaskCreateMultipartUploadTaskSubmissionTaskTask)ChunksizeAdjustercalculate_range_parameterget_callbacksget_filtered_dictc                   s   a  ] tR t^!t o RtRRRRRRRR	R
RRRRRRRRR/	t. ROt. ROt. ROtR t	R t
R tR tR tR tR tRtV tR# )CopySubmissionTaskz+Task for submitting tasks to execute a copyCopySourceIfMatchZIfMatchCopySourceIfModifiedSinceZIfModifiedSinceCopySourceIfNoneMatchZIfNoneMatchCopySourceIfUnmodifiedSinceZIfUnmodifiedSinceCopySourceSSECustomerKeySSECustomerKeyCopySourceSSECustomerAlgorithmSSECustomerAlgorithmCopySourceSSECustomerKeyMD5SSECustomerKeyMD5RequestPayerExpectedBucketOwnerc                s   VP                   P                  e   VP                   P                  f   VP                   P                  pV P	                  VP
                  4      pVP                  pVP                  4        F-  w  rWP                  9   g   K  V
VV P                  V	,          &   K/  	  VP                  P                  ! R/ VB pVP                   P                  VR,          4       VP                   P                  VP                  R4      4       VP                   P                  VP                  8  d   V P                  WW4V4       R# V P!                  WW4V4       R# )aj  
:param client: The client associated with the transfer manager

:type config: s3transfer.manager.TransferConfig
:param config: The transfer config associated with the transfer
    manager

:type osutil: s3transfer.utils.OSUtil
:param osutil: The os utility associated to the transfer manager

:type request_executor: s3transfer.futures.BoundedExecutor
:param request_executor: The request executor associated with the
    transfer manager

:type transfer_future: s3transfer.futures.TransferFuture
:param transfer_future: The transfer future associated with the
    transfer request that tasks are being submitted for
NZContentLengthETag )metasizeetag	call_args)_get_head_object_request_from_copy_sourcecopy_source
extra_argsitemsEXTRA_ARGS_TO_HEAD_ARGS_MAPPINGZsource_clientZhead_objectZprovide_transfer_sizeZprovide_object_etaggetZmultipart_threshold_submit_copy_request_submit_multipart_request)selfclientconfigosutilrequest_executortransfer_futurer   Zhead_object_requestr   paramZvalueresponses   &&&&&&      6/usr/lib/python3.14/site-packages/s3transfer/copies.py_submitZCopySubmissionTask._submitS   sI   ,   %%-##((0 (,,66I>>))  
 #--J !+ 0 0 2@@@  (<<UC !3 !..:: %H   66)
   44X\\&5IJ $$v'A'AA%%/ **/    c                sB   VP                   P                  p\        VR 4      pV P                  P	                  V\        V P                  RVRVP                  RVP                  RVP                  RVP                  RVRVP                   P                  /RR	7      4       R
# )progressr&   r   bucketkeyr   	callbacksr   T)transfer_coordinatormain_kwargsis_finalN)r   r   r   _transfer_coordinatorsubmitCopyObjectTaskr   r1   r2   r   r   )r%   r&   r'   r(   r)   r*   r   progress_callbackss   &&&&&&  r-   r#   Z'CopySubmissionTask._submit_copy_request   s     $((22	 +?JG 	""))%)%?%?f!9#8#8i..9== )"6"6!3O0055 	
r/   c                s   VP                   P                  p/ pVP                  P                  4        F  w  rWP                  9  g   K  WV&   K  	  V P
                  P                  V\        V P
                  R VRVP                  RVP                  RV/R7      4      p
VP                  p\        4       pVP                  WP                   P                  4      p\        \        P                   ! VP                   P                  \#        V4      ,          4      4      p. p\%        VR4      p\'        ^V^,           4       EF9  pV P)                  VP                  4      p\+        VV^,
          VVP                   P                  4      VR&   VP                   P,                  e   VP                   P,                  VR&   V P/                  VV^,
          VVP                   P                  4      pVP                  P1                  R	4      pVP3                  V P
                  P                  V\5        V P
                  R VR
VP6                  RVP                  RVP                  RVRVRVRVRV/	RV
/R7      4      4       EK<  	  V P9                  VP                  4      pV P
                  P                  V\;        V P
                  R VRVP                  RVP                  RV/RV
RV/RR7      4       R# )r&   r1   r2   r   )r4   r5   r0   ZCopySourceRangeNr   ZChecksumAlgorithmr   part_numberr3   r   checksum_algorithm	upload_id)r4   r5   pending_main_kwargsZpartsT)r4   r5   r>   r6   )r   r   r   r    CREATE_MULTIPART_ARGS_BLACKLISTr7   r8   r   r1   r2   Zmultipart_chunksizer   Zadjust_chunksizer   ZintmathZceilZfloatr   Zrange_extra_upload_part_argsr   r   _get_transfer_sizer"   ZappendCopyPartTaskr   _extra_complete_multipart_argsr   )r%   r&   r'   r(   r)   r*   r   Zcreate_multipart_extra_argsr+   ZvalZcreate_multipart_future	part_sizeZadjuster	num_partsZpart_futuresr:   r;   Zextra_part_argsr   r<   Zcomplete_multipart_extra_argss   &&&&&&               r-   r$   Z,CopySubmissionTask._submit_multipart_request   s    $((22	 ')##..446JE@@@58E2 7 #'"<"<"C"C%%)%?%?fi..9== "=	#
 ..	$&--++00
	 IIo**//%	2BBC
	
 *?JG IM2K"::$$O 2Ka$$))	2O-. ##((4#((--   34
 **a$$))	D "+!5!5!9!9:M!N**11$ -1-G-G$f)9+@+@$i&6&6!9==);(/');"D02D
% ()@-7 3d )-(K(K  )
% 	""))'%)%?%?fi..9== "?	  !8\% 	
r/   c                s    \        V\        4      '       d   \        P                  ! V4      # \        R V R\	        V4       R24      h)zLExpecting dictionary formatted: {"Bucket": bucket_name, "Key": key} but got z	 or type Z.)Z
isinstanceZdictcopyZ	TypeErrorZtype)r%   r      &&r-   r   Z<CopySubmissionTask._get_head_object_request_from_copy_source   sI    k4((99[))&-yk1B0C1F r/   c                ,    \        WP                  4      # N)r	   UPLOAD_PART_COPY_ARGSr%   r   rH   r-   rA   Z*CopySubmissionTask._extra_upload_part_args*  s     !-G-GHHr/   c                rI   rJ   )r	   COMPLETE_MULTIPART_ARGSrL   rH   r-   rD   Z1CopySubmissionTask._extra_complete_multipart_args/  s     -I-IJJr/   c                s>    W#^,
          8X  d   WBV,          ,
          # V# )i   r   )r%   rE   Z
part_indexrF   Ztotal_transfer_sizes   &&&&&r-   rB   Z%CopySubmissionTask._get_transfer_size2  s$     Q& 'y*@AAr/   r   N)r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   ZMetadataDirectiveZTaggingDirective)r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r!   rK   r?   rM   r.   r#   r$   r   rA   rD   rB   __static_attributes____classdictcell__Z__classdict__   @r-   r
   r
   !   s     5 	Y#%6%':"$4(*@%':4
'#
'#AF
4n
`I
K r/   r
   c                   s*   a  ] tR tRt o RtR tRtV tR# )r9   i<  zTask to do a nonmultipart copyc           	     sZ    VP                   ! RRVRVRV/VB  V F  pV! VR7       K  	  R# )a  
:param client: The client to use when calling PutObject
:param copy_source: The CopySource parameter to use
:param bucket: The name of the bucket to copy to
:param key: The name of the key to copy to
:param extra_args: A dictionary of any extra arguments that may be
    used in the upload.
:param callbacks: List of callbacks to call after copy
:param size: The size of the transfer. This value is passed into
    the callbacks


CopySourceBucketKeyZbytes_transferredNr   )Zcopy_object)	r%   r&   r   r1   r2   r   r3   r   callbacks	   &&&&&&&& r-   _mainZCopyObjectTask._main?  sF     	 	
"	
+1	
7:	
>H	
 "Ht, "r/   r   NrN   rO   rP   rQ   rR   r\   rS   rT   rU   rV   r-   r9   r9   <  s     (- -r/   r9   c                   s.   a  ] tR tRt o RtRR ltRtV tR# )rC   iU  z)Task to upload a part in a multipart copyNc                s    VP                   ! RRVRVRVRVRV/VB pT F  pT! T	R7       K  	  TR,          R,          pRTRT/pT
'       d5   RT
P                  4        2pTTR,          9   d   TR,          T,          TT&   T#   \         d]   pTP                  P                  R/ 4      P                  R4      pTR,          pTR,          pTR8X  d   \	        R	T R
T R24      hh Rp?ii ; i)a  
:param client: The client to use when calling PutObject
:param copy_source: The CopySource parameter to use
:param bucket: The name of the bucket to upload to
:param key: The name of the key to upload to
:param upload_id: The id of the upload
:param part_number: The number representing the part of the multipart
    upload
:param extra_args: A dictionary of any extra arguments that may be
    used in the upload.
:param callbacks: List of callbacks to call after copy part
:param size: The size of the transfer. This value is passed into
    the callbacks
:param checksum_algorithm: The algorithm that was used to create the multipart
    upload

:rtype: dict
:returns: A dictionary representing a part::

    {'Etag': etag_value, 'PartNumber': part_number}

    This value can be appended to a list to be used to complete
    the multipart upload. If a checksum is in the response,
    it will also be included.
rW   rX   rY   ZUploadIdZ
PartNumberZErrorZCodeZPreconditionFailedzContents of stored object "z" in bucket "z" did not match expected ETag.NrZ   ZCopyPartResultr   ZChecksumr   )Zupload_part_copyr    r,   r"   r   Zupper)r%   r&   r   r1   r2   r=   r;   r   r3   r   r<   r,   ZeZ
error_codeZsrc_keyZ
src_bucketr[   r   Zpart_metadataZchecksum_members   &&&&&&&&&&&         r-   r\   ZCopyPartTask._mainX  sE   L	.. &  #	
 ' H( "Ht, "()&1|[A ();)A)A)C(DEO(+;"<<19:J1K#2o. -  	488@J!%(G$X.J11'1' ;"", .%%  	s   B C+AC&&C+r   rJ   r]   rU   rV   r-   rC   rC   U  s     3E Er/   rC   )rG   r@   Zbotocore.exceptionsr    Zs3transfer.exceptionsr   Zs3transfer.tasksr   r   r   r   Zs3transfer.utilsr   r   r   r	   r
   r9   rC   r   r/   r-   <module>r^      sP      + 3  X Xv-T -2H4 Hr/   