+
    [mh8                         ^ RI t ^ RI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# )
    N)CompleteMultipartUploadTaskCreateMultipartUploadTaskSubmissionTaskTask)ChunksizeAdjustercalculate_range_parameterget_callbacksget_filtered_dictc                      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CopySourceIfMatchIfMatchCopySourceIfModifiedSinceIfModifiedSinceCopySourceIfNoneMatchIfNoneMatchCopySourceIfUnmodifiedSinceIfUnmodifiedSinceCopySourceSSECustomerKeySSECustomerKeyCopySourceSSECustomerAlgorithmSSECustomerAlgorithmCopySourceSSECustomerKeyMD5SSECustomerKeyMD5RequestPayerExpectedBucketOwnerc                H   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                  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
NContentLength )metasize	call_args)_get_head_object_request_from_copy_sourcecopy_source
extra_argsitemsEXTRA_ARGS_TO_HEAD_ARGS_MAPPINGsource_clienthead_objectprovide_transfer_sizemultipart_threshold_submit_copy_request_submit_multipart_request)selfclientconfigosutilrequest_executortransfer_futurer"   head_object_requestr%   paramvalueresponses   &&&&&&      3/usr/lib/python3/dist-packages/s3transfer/copies.py_submitCopySubmissionTask._submitP   s   , $$, (,,66I>>))  
 #--J !+ 0 0 2@@@  (<<UC !3 !..:: %H   66) $$v'A'AA%%/ **/    c                B   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$   r>   r?   r%   r!   )r.   r/   r0   r1   r2   r3   r"   progress_callbackss   &&&&&&  r8   r,   '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                v   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F  pV P)                  VP                  4      p\+        VV^,
          VVP                   P                  4      VR&   V P-                  VV^,
          VVP                   P                  4      pVP                  P/                  R4      pVP1                  V P
                  P                  V\3        V P
                  R VRVP4                  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 P7                  VP                  4      pV P
                  P                  V\9        V P
                  R VRVP                  RVP                  RV/RV
RV/RR7      4       R# )r/   r>   r?   r%   )rA   rB   r=   CopySourceRangeChecksumAlgorithmr$   part_numberr@   r!   checksum_algorithm	upload_id)rA   rB   pending_main_kwargspartsT)rA   rB   rO   rC   N)r    r"   r%   r&   CREATE_MULTIPART_ARGS_BLACKLISTrD   rE   r   r>   r?   multipart_chunksizer   adjust_chunksizer!   intmathceilfloatr	   range_extra_upload_part_argsr   _get_transfer_sizegetappendCopyPartTaskr$   _extra_complete_multipart_argsr   )r.   r/   r0   r1   r2   r3   r"   create_multipart_extra_argsr5   valcreate_multipart_future	part_sizeadjuster	num_partspart_futuresrG   rL   extra_part_argsr!   rM   complete_multipart_extra_argss   &&&&&&               r8   r-   ,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-. **a$$))	D "+!5!5!9!9:M!N**11$ -1-G-G$f)9+@+@$i&6&6!9==);(/');"D02D
% ()@-/ 3\ )-(K(K  )
% 	""))'%)%?%?fi..9== "?	  !8\% 	
r;   c                    \        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 .)
isinstancedictcopy	TypeErrortype)r.   r$   s   &&r8   r#   <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%   s   &&r8   rY   *CopySubmissionTask._extra_upload_part_args  s     !-G-GHHr;   c                ,    \        WP                  4      # rr   )r
   COMPLETE_MULTIPART_ARGSrt   s   &&r8   r^   1CopySubmissionTask._extra_complete_multipart_args#  s     -I-IJJr;   c                >    W#^,
          8X  d   WBV,          ,
          # V# )   r   )r.   rb   
part_indexrd   total_transfer_sizes   &&&&&r8   rZ   %CopySubmissionTask._get_transfer_size&  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   MetadataDirectiveTaggingDirective)r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r'   rs   rQ   rw   r9   r,   r-   r#   rY   r^   rZ   __static_attributes____classdictcell____classdict__s   @r8   r   r      s     5 	Y#%6%':"$4(*@%':4
'#
'#<|
4j
XI
K r;   r   c                   *   a  ] tR tRt o RtR tRtV tR# )rF   i0  zTask to do a nonmultipart copyc           	     Z    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bytes_transferredNr   )copy_object)	r.   r/   r$   r>   r?   r%   r@   r!   callbacks	   &&&&&&&& r8   _mainCopyObjectTask._main3  sF     	 	
"	
+1	
7:	
>H	
 "Ht, "r;   r   Nr   r   r   r   r   r   r   r   r   s   @r8   rF   rF   0  s     (- -r;   rF   c                   .   a  ] tR tRt o RtRR ltRtV tR# )r]   iI  z)Task to upload a part in a multipart copyNc                   VP                   ! R
RVRVRVRVRV/VB pV F  pV! V	R7       K  	  VR,          R,          pRVRV/pV
'       d3   R	V
P                  4        2pWR,          9   d   VR,          V,          W&   V# )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.
r   r   r   UploadId
PartNumberr   CopyPartResultETagChecksumr   )upload_part_copyupper)r.   r/   r$   r>   r?   rN   rL   r%   r@   r!   rM   r7   r   etagpart_metadatachecksum_members   &&&&&&&&&&&     r8   r   CopyPartTask._mainL  s    L ** 
"

 
 	

 #
 
 "Ht, "()&1|[A ();)A)A)C(DEO+;"<<19:J1K#2. r;   r   rr   r   r   s   @r8   r]   r]   I  s     38 8r;   r]   )rm   rU   s3transfer.tasksr   r   r   r   s3transfer.utilsr   r   r	   r
   r   rF   r]   r   r;   r8   <module>r      sH       O Od-T -2;4 ;r;   