ó
    &ÝNjbY  ã                   óÀ   • S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJrJrJrJr   " S S\5      r " S	 S
\	5      r " S S\5      r " S S\5      rg)é    N)Ú	parse_qsl)ÚClientError)ÚS3CopyFailedError)ÚCompleteMultipartUploadTaskÚCreateMultipartUploadTaskÚSubmissionTaskÚTask)ÚChunksizeAdjusterÚcalculate_range_parameterÚget_callbacksÚget_filtered_dictc            
       ó¶   • \ rS rSrSrSSSSSSS	S
SS.	r/ SQr/ SQr/ SQr/ SQr	S
S/r
/ SQrS
S/rS
S/r/ SQrS rS r  SS jrS rS rS rS rS rS rSrg)ÚCopySubmissionTaské"   z+Task for submitting tasks to execute a copyÚIfMatchÚIfModifiedSinceÚIfNoneMatchÚIfUnmodifiedSinceÚSSECustomerKeyÚSSECustomerAlgorithmÚSSECustomerKeyMD5ÚRequestPayerÚExpectedBucketOwner)	ÚCopySourceIfMatchÚCopySourceIfModifiedSinceÚCopySourceIfNoneMatchÚCopySourceIfUnmodifiedSinceÚCopySourceSSECustomerKeyÚCopySourceSSECustomerAlgorithmÚCopySourceSSECustomerKeyMD5r   r   )r   r   r   r   r   r   r    r   r   r   r   r   )r   r   r   r   r   r   r    ÚMetadataDirectiveÚTaggingDirectiveÚAnnotationDirectiveÚTagging)ÚCacheControlÚContentDispositionÚContentEncodingÚContentLanguageÚContentTypeÚExpiresÚMetadata)r   r   r   r   r   )r   r   ÚChecksumAlgorithmc           
      ó   • 0 nSnUR                   R                  nUR                   R                  b  UR                   R                  cé  U R	                  UR
                  5      n	UR                  n
U
R                  5        H(  u  p¼X°R                  ;   d  M  UU	U R                  U   '   M*     UR                  R                  " S0 U	D6nUR                   R                  US   5        UR                   R                  UR                  S5      5        U R                  U5      nUR                  S5      nUR                   R                  UR                  :  a  U R!                  XX4U5        gU R#                  UUUUUUUS9  g)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ÚETagÚ	VersionId)Úsource_version_id© )ÚmetaÚ	call_argsÚsizeÚetagÚ)_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Úprovide_object_etagÚgetÚ_extract_preserved_metadataÚmultipart_thresholdÚ_submit_copy_requestÚ_submit_multipart_request)ÚselfÚclientÚconfigÚosutilÚrequest_executorÚtransfer_futureÚpreserved_metadatar1   r4   Úhead_object_requestr9   ÚparamÚvalueÚresponses                 ÚN/home/mande/repo/quber/.venv/lib/python3.13/site-packages/s3transfer/copies.pyÚ_submitÚCopySubmissionTask._submito   sŠ  € ð*  ÐØ ÐØ#×(Ñ(×2Ñ2ˆ	à× Ñ ×%Ñ%Ñ-Ø×#Ñ#×(Ñ(Ñ0ð ×>Ñ>Ø×)Ñ)óð  ð
 #×-Ñ-ˆJð !+× 0Ñ 0Ö 2‘�Ø×@Ñ@Õ@ð ð (Ø×<Ñ<¸UÑCóñ !3ð !×.Ñ.×:Ò:ñ Ø%ñˆHð × Ñ ×6Ñ6Ø˜Ñ)ôð
 × Ñ ×4Ñ4°X·\±\À&Ó5IÔJØ!%×!AÑ!AÀ(Ó!KÐð !)§¡¨[Ó 9Ðð ×Ñ×$Ñ$ v×'AÑ'AÓAØ×%Ñ%Ø ¸/õð ×*Ñ*ØØØØ ØØ"Ø"3ð +ò ó    c                 ó.  • UR                   R                  n[        US5      nU R                  R	                  U[        U R                  UUR                  UR                  UR                  UR                  UUR                   R                  S.SS95        g )NÚprogress)rF   r8   ÚbucketÚkeyr9   Ú	callbacksr5   T)Útransfer_coordinatorÚmain_kwargsÚis_final)r3   r4   r   Ú_transfer_coordinatorÚsubmitÚCopyObjectTaskr8   rV   rW   r9   r5   )rE   rF   rG   rH   rI   rJ   r4   Úprogress_callbackss           rP   rC   Ú'CopySubmissionTask._submit_copy_request¾   s�   € ð $×(Ñ(×2Ñ2ˆ	ô +¨?¸JÓGÐð 	×"Ñ"×)Ñ)ØÜØ%)×%?Ñ%?à$Ø#,×#8Ñ#8Ø'×.Ñ.Ø$Ÿ=™=Ø"+×"6Ñ"6Ø!3Ø+×0Ñ0×5Ñ5ñð ñõ	
rS   Nc                 ó¼  • UR                   R                  nU R                  UR                  U=(       d    0 5      n	0 n
U	R	                  5        H  u  p¼X°R
                  ;  d  M  XÊU'   M     U R                  R                  U[        U R                  UUR                  UR                  U
S.S95      nUR                  n[        5       nUR                  XåR                   R                  5      n[        [         R"                  " UR                   R                  [%        U5      -  5      5      n/ n['        US5      n[)        SUS-   5       GH%  nU R+                  UR                  5      n[-        UUS-
  UUR                   R                  5      US'   UR                   R.                  b  UR                   R.                  US'   U R1                  UUS-
  UUR                   R                  5      nUR                  R3                  S5      nUR5                  U R                  R                  U[7        U R                  UUR8                  UR                  UR                  UUUUUS.	S	U0S
95      5        GM(     U R;                  UR                  5      nU R                  R                  U[=        U R                  UUR                  UR                  UUUS.UUS.SS95        g )N)rF   rV   rW   r9   )rY   rZ   rU   é   ÚCopySourceRanger   r,   )	rF   r8   rV   rW   Úpart_numberr9   rX   r5   Úchecksum_algorithmÚ	upload_id)rY   rZ   Úpending_main_kwargs)rF   rV   rW   r9   r4   r1   )rf   ÚpartsT)rY   rZ   rg   r[   )r3   r4   Ú_apply_preserved_metadatar9   r:   ÚCREATE_MULTIPART_ARGS_BLACKLISTr\   r]   r   rV   rW   Úmultipart_chunksizer
   Úadjust_chunksizer5   ÚintÚmathÚceilÚfloatr   ÚrangeÚ_extra_upload_part_argsr   r6   Ú_get_transfer_sizer@   ÚappendÚCopyPartTaskr8   Ú_extra_complete_multipart_argsÚCopyCompleteMultipartUploadTask)rE   rF   rG   rH   rI   rJ   rK   r1   r4   Úmerged_extra_argsÚcreate_multipart_extra_argsrM   ÚvalÚcreate_multipart_futureÚ	part_sizeÚadjusterÚ	num_partsÚpart_futuresr_   rd   Úextra_part_argsr5   re   Úcomplete_multipart_extra_argss                           rP   rD   Ú,CopySubmissionTask._submit_multipart_requestØ   sæ  € ð $×(Ñ(×2Ñ2ˆ	Ø ×:Ñ:Ø× Ñ Ð"4×":¸ó
Ðð ')Ð#Ø+×1Ñ1Ö3‰JˆEØ×@Ñ@Õ@Ø58¨EÓ2ñ 4ð #'×"<Ñ"<×"CÑ"CØÜ%Ø%)×%?Ñ%?à$Ø'×.Ñ.Ø$Ÿ=™=Ø"=ñ	ñó#
Ðð ×.Ñ.ˆ	Ü$Ó&ˆØ×-Ñ-Ø×+Ñ+×0Ñ0ó
ˆ	ô Ü�IŠI�o×*Ñ*×/Ñ/´%¸	Ó2BÑBÓCó
ˆ	ð
 ˆÜ*¨?¸JÓGÐä   I°¡M×2ˆKØ"×:Ñ:Ø×$Ñ$óˆOô 2KØØ˜a‘ØØ×$Ñ$×)Ñ)ó	2ˆOÐ-Ñ.ð ×#Ñ#×(Ñ(Ñ4à#×(Ñ(×-Ñ-ð  Ð 3Ñ4ð
 ×*Ñ*ØØ˜a‘ØØ×$Ñ$×)Ñ)ó	ˆDð "+×!5Ñ!5×!9Ñ!9Ð:MÓ!NÐØ×ÑØ×*Ñ*×1Ñ1Ø$Ü Ø-1×-GÑ-Gà&,Ø+4×+@Ñ+@Ø&/×&6Ñ&6Ø#,§=¡=Ø+6Ø*9Ø);Ø$(Ø2Dñ
%ð (Ð)@ð-ñó÷ñ7 3ðd )-×(KÑ(KØ× Ñ ó)
Ð%ð
 	×"Ñ"×)Ñ)ØÜ+Ø%)×%?Ñ%?à$Ø'×.Ñ.Ø$Ÿ=™=Ø"?Ø!*Ø):ñð "9Ø)ñ%ð ñõ	
rS   c                 óJ   • 0 nU R                    H  nX1;   d  M
  X   X#'   M     U$ ©N)ÚPRESERVED_METADATA_FIELDS)rE   Úhead_object_responseÚ	preservedÚfields       rP   rA   Ú.CopySubmissionTask._extract_preserved_metadataU  s0   € Øˆ	Ø×3Ô3ˆEØÕ,Ø#7Ñ#>�	Ó ñ 4ð ÐrS   c                 óÌ   • UR                  S5      S:X  a  U$ UR                  5        VVs0 s H  u  p4X0R                  ;  d  M  X4_M     nnnUR                  U5        U$ s  snnf )Nr!   ÚREPLACE)r@   r:   r…   Úupdate)rE   r9   rK   ÚkÚvÚresults         rP   ri   Ú,CopySubmissionTask._apply_preserved_metadata\  sp   € ð �>‰>Ð-Ó.°)Ó;ØÐà'×-Ñ-Ô/ô
Ú/‘T�QØ×6Ñ6Ñ6ó ˆAŠDÑ/ð 	ñ 
ð 	�‰Ð(Ô)Øˆùó
s   «A ÁA c                 óŽ   • [        U[        5      (       a  [        R                  " U5      $ [        SU S[	        U5       S35      e)NzLExpecting dictionary formatted: {"Bucket": bucket_name, "Key": key} but got z	 or type Ú.)Ú
isinstanceÚdictÚcopyÚ	TypeErrorÚtype)rE   r8   s     rP   r7   Ú<CopySubmissionTask._get_head_object_request_from_copy_sourcei  sI   € Ü�k¤4×(Ñ(Ü—9’9˜[Ó)Ð)äðà&˜- y´°kÓ1BÐ0CÀ1ðFóð rS   c                 ó,   • [        XR                  5      $ r„   )r   ÚUPLOAD_PART_COPY_ARGS©rE   r9   s     rP   rr   Ú*CopySubmissionTask._extra_upload_part_argss  s   € ô ! ×-GÑ-GÓHÐHrS   c                 ó,   • [        XR                  5      $ r„   )r   ÚCOMPLETE_MULTIPART_ARGSr›   s     rP   rv   Ú1CopySubmissionTask._extra_complete_multipart_argsx  s   € Ü  ×-IÑ-IÓJÐJrS   c                 ó$   • X#S-
  :X  a  XBU-  -
  $ U$ )Nrb   r2   )rE   r|   Ú
part_indexr~   Útotal_transfer_sizes        rP   rs   Ú%CopySubmissionTask._get_transfer_size{  s$   € ð  Q™Ó&ð '°yÑ*@ÑAÐAØÐrS   r2   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r;   rš   rj   r…   rž   ÚGET_OBJECT_TAGGING_ARGSÚPUT_OBJECT_TAGGING_ARGSÚLIST_OBJECT_ANNOTATIONS_ARGSÚGET_OBJECT_ANNOTATION_ARGSÚPUT_OBJECT_ANNOTATION_ARGSrQ   rC   rD   rA   ri   r7   rr   rv   rs   Ú__static_attributes__r2   rS   rP   r   r   "   s¾   † Ù5ð 'Ø%6Ø!.Ø':Ø$4Ø*@Ø':Ø&Ø4ñ
'Ð#òÐò'Ð#ò!ÐòÐð  .Ð/DÐEÐòÐð
 %3Ð4IÐ#JÐ Ø"0Ð2GÐ!HÐò"ÐòMò^
ðB  Øô{
òzòòòIò
KõrS   r   c                   ó*   • \ rS rSrSrS rS rS rSrg)rw   i…  zÐCompleteMultipartUpload variant that also applies tags and annotations.

After the destination object is finalized, copies/applies tags and
annotations inline. Errors during apply propagate as task failures.
c	                 óÄ   • UR                   " SUUUSU0S.UD6n	U	R                  S5      n
U	R                  S5      nU R                  XX‹5        U R                  XX‹U
5        g )NÚParts)ÚBucketÚKeyÚUploadIdÚMultipartUploadr/   r0   r2   )Úcomplete_multipart_uploadr@   Ú_apply_tagsÚ_apply_annotations)rE   rF   rV   rW   rf   rh   r9   r4   r1   rO   Ú	dest_etagÚdest_version_ids               rP   Ú_mainÚ%CopyCompleteMultipartUploadTask._mainŒ  sy   € ð ×3Ò3ð 
ØØØØ$ eÐ,ñ	
ð
 ñ
ˆð —L‘L Ó(ˆ	Ø"Ÿ,™, {Ó3ˆØ×Ñ˜Ð,=ÔOØ×ÑØÐ0À9õ	
rS   c                 ó\  • UR                   nUR                  S5      nUS;  a  g US:X  aq  UR                  S   UR                  S   S.[        U[        R
                  5      EnU(       a  X7S'   UR                  R                  " S0 UD6R                  S/ 5      nO0[        UR                  S	S
5      SS9 V	V
s/ s H	  u  pšXšS.PM     nn	n
U(       d  g UR                  UR                  SU0S.[        U[        R                  5      EnU(       a  XKS'   UR                  " S0 UD6  g s  sn
n	f )Nr"   )ÚCOPYr‹   r¾   r²   r³   ©r²   r³   r0   ÚTagSetr$   Ú T)Úkeep_blank_values)r³   ÚValue)r²   r³   r$   r2   )r9   r@   r8   r   r   r©   r<   Úget_object_taggingr   rV   rW   rª   Úput_object_tagging)rE   rF   r4   r1   rº   r9   Ú	directiveÚ
src_kwargsÚtag_setr�   rŽ   Ú
put_kwargss               rP   r·   Ú+CopyCompleteMultipartUploadTask._apply_tags¥  sN  € Ø×)Ñ)ˆ
Ø—N‘NÐ#5Ó6ˆ	ØÐ/Ó/ØØ˜Óà#×/Ñ/°Ñ9Ø ×,Ñ,¨UÑ3ñô $ØÔ 2× JÑ JóðˆJö !Ø*;˜;Ñ'Ø×-Ñ-×@Ò@ñ Øñç‰c�(˜BÓñ ô &Ø—N‘N 9¨bÓ1Ø&*òôò‘D�Að Ô&ñð ñ ö Øà×&Ñ&Ø—=‘=Ø  'Ð*ñ
ô  ØÔ.×FÑFóð	
ˆ
ö Ø&5�{Ñ#Ø×!Ò!Ñ/ JÓ/ùó's   Â9D(c                 ó¨  • UR                   nUR                  S5      S:w  a  g UR                  S   UR                  S   S.nU(       a  X7S'   0 UE[        U[        R
                  5      En0 UE[        U[        R                  5      En	[        U[        R                  5      n
UR                  R                  " S0 UD6n/ n0 nUR                  S/ 5       H’  nUS   nUR                  R                  " S0 U	DSU0D6nUR                  UR                  UUS	   R                  5       S
.U
EnU(       a  UUS'   U(       a  UUS'    UR                  " S0 UD6  UR                  U5        M”     U(       aE  [#        SUR                   SUR                   SU S[%        UR'                  5       5       SU 3
5      eg ! [          a  nUXß'    S nAM÷  S nAff = f)Nr#   r¾   r²   r³   r¿   r0   ÚAnnotationsÚAnnotationNameÚAnnotationPayload)r²   r³   rÍ   rÎ   ÚObjectIfMatchz#Failed to copy annotations to s3://Ú/z. Succeeded: z
. Failed: z
. Errors: r2   )r9   r@   r8   r   r   r«   r¬   r­   r<   Úlist_object_annotationsÚget_object_annotationrV   rW   ÚreadÚput_object_annotationrt   Ú	Exceptionr   ÚlistÚkeys)rE   rF   r4   r1   rº   r¹   r9   Úsrc_baseÚlist_kwargsÚget_kwargs_baseÚput_passthroughÚlist_responseÚ	succeededÚfailedÚ
annotationÚnameÚpayload_responserÉ   Úes                      rP   r¸   Ú2CopyCompleteMultipartUploadTask._apply_annotationsÍ  s#  € ð ×)Ñ)ˆ
Ø�>‰>Ð/Ó0°FÓ:Øà×+Ñ+¨HÑ5Ø×(Ñ(¨Ñ/ñ
ˆö Ø$5�[Ñ!ð
Øð
äØÔ.×KÑKóð
ˆð
Øð
äØÔ.×IÑIóð
ˆô ,ØÔ*×EÑEó
ˆð "×/Ñ/×GÒGñ 
Øñ
ˆð ˆ	ØˆØ'×+Ñ+¨M¸2Ö>ˆJØÐ.Ñ/ˆDØ(×6Ñ6×LÒLñ  Ø!ñ à#ò Ðð
 $×*Ñ*Ø —}‘}Ø"&Ø%5Ð6IÑ%J×%OÑ%OÓ%Qñ	ð
 "ðˆJö Ø*9�
˜;Ñ'ÞØ.7�
˜?Ñ+ð!Ø×,Ò,Ñ:¨zÒ:Ø× Ñ  Ö&ñ' ?ö, Ü#ðØ!×(Ñ(Ð)¨¨9¯=©=¨/ð :Ø'˜[ð )Ü §¡£Ó.Ð/ð 0Ø!˜(ð	$óð ð øô ó !Ø �—ûð!ús   Å#F8Æ8
GÇGÇGr2   N)	r¤   r¥   r¦   r§   r¨   r»   r·   r¸   r®   r2   rS   rP   rw   rw   …  s   † ñò
ò2&0õPCrS   rw   c                   ó   • \ rS rSrSrS rSrg)r^   i  zTask to do a nonmultipart copyc                 óL   • UR                   " SX#US.UD6  U H	  nU" US9  M     g)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

)Ú
CopySourcer²   r³   ©Úbytes_transferredNr2   )Úcopy_object)	rE   rF   r8   rV   rW   r9   rX   r5   Úcallbacks	            rP   r»   ÚCopyObjectTask._main  s8   € ð 	×Òð 	
Ø"°sñ	
Ø>Hò	
ó "ˆHÙ tÔ,ò "rS   r2   N©r¤   r¥   r¦   r§   r¨   r»   r®   r2   rS   rP   r^   r^     s
   † Ù(õ-rS   r^   c                   ó$   • \ rS rSrSr SS jrSrg)ru   i,  z)Task to upload a part in a multipart copyNc           	      óŒ  •  UR                   " SUUUUUS.UD6nU H	  nU" U	S9  M     US   S   nUUS.nU
(       a'  SU
R                  5        3nUUS   ;   a  US   U   UU'   U$ ! [         aS  nUR                  R                  S0 5      R                  S5      nUS   nUS   nUS:X  a  [	        SU SU S	35      ee S
nAff = f)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³   r´   Ú
PartNumberÚErrorÚCoder³   r²   ÚPreconditionFailedzContents of stored object "z" in bucket "z" did not match expected ETag.Nrç   ÚCopyPartResultr/   )r/   rï   ÚChecksumr2   )Úupload_part_copyr   rO   r@   r   Úupper)rE   rF   r8   rV   rW   rf   rd   r9   rX   r5   re   rO   râ   Ú
error_codeÚsrc_keyÚ
src_bucketrê   r6   Úpart_metadataÚchecksum_members                       rP   r»   ÚCopyPartTask._main/  s'  € ðL	Ø×.Ò.ð Ø&ØØØ"Ø&ñð ñˆHó( "ˆHÙ tÔ,ñ "àÐ(Ñ)¨&Ñ1ˆØ!%°[ÑAˆÞØ (Ð);×)AÑ)AÓ)CÐ(DÐEˆOØ (Ð+;Ñ"<Ó<Ø19Ð:JÑ1KØ#ñ2�˜oÑ.ð Ðøô- ó 	ØŸ™Ÿ™¨°Ó4×8Ñ8¸Ó@ˆJØ! %Ñ(ˆGØ$ XÑ.ˆJØÐ1Ó1Ü'Ø1°'°ð ;"Ø", ð .%ð%óð ð ûð	ús   ‚A& Á&
CÁ0AB>Â>Cr2   r„   rì   r2   rS   rP   ru   ru   ,  s   † Ù3ð  ÷ErS   ru   )r•   rn   Úurllib.parser   Úbotocore.exceptionsr   Ús3transfer.exceptionsr   Ús3transfer.tasksr   r   r   r	   Ús3transfer.utilsr
   r   r   r   r   rw   r^   ru   r2   rS   rP   Ú<module>r     sc   ðó Û Ý "å +å 3÷ó ÷ó ô`˜ô `ôFKÐ&Aô Kô\-�Tô -ô2H�4õ HrS   