HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/awscli/customizations/s3/__pycache__/s3handler.cpython-36.pyc
3

�T_[�@s:ddlZddlZddlmZddlmZmZmZmZm	Z	m
Z
ddlmZddl
mZddl
mZddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddl(m)Z)ej*e+�Z,Gd d!�d!e-�Z.Gd"d#�d#e-�Z/Gd$d%�d%e-�Z0Gd&d'�d'e0�Z1Gd(d)�d)e0�Z2Gd*d+�d+e0�Z3Gd,d-�d-e1�Z4Gd.d/�d/e2�Z5Gd0d1�d1e0�Z6Gd2d3�d3e0�Z7dS)4�N)�TransferManager)�human_readable_size�MAX_UPLOAD_SIZE�find_bucket_key�
relative_path�create_warning�NonSeekableStream)�*create_transfer_config_from_runtime_config)�UploadResultSubscriber)�DownloadResultSubscriber)�CopyResultSubscriber)�UploadStreamResultSubscriber)�DownloadStreamResultSubscriber)�DeleteResultSubscriber)�QueuedResult)�
SuccessResult)�
FailureResult)�DryRunResult)�ResultRecorder)�
ResultPrinter)�OnlyShowErrorsResultPrinter)�NoProgressResultPrinter)�ResultProcessor)�CommandResultRecorder)�RequestParamsMapper)�StdoutBytesWriter)�ProvideSizeSubscriber)�"ProvideUploadContentTypeSubscriber)� ProvideCopyContentTypeSubscriber)�!ProvideLastModifiedTimeSubscriber)�DirectoryCreatorSubscriber)�DeleteSourceFileSubscriber)�DeleteSourceObjectSubscriber)� DeleteCopySourceObjectSubscriber)�get_binary_stdinc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�S3TransferHandlerFactory�cCs||_||_dS)aFactory for S3TransferHandlers

        :type cli_params: dict
        :param cli_params: The parameters provide to the CLI command

        :type runtime_config: RuntimeConfig
        :param runtime_config: The runtime config for the CLI command
            being run
        N)�_cli_params�_runtime_config)�self�
cli_paramsZruntime_config�r+�/usr/lib/python3.6/s3handler.py�__init__:s
z!S3TransferHandlerFactory.__init__c	Csrt|j�}|j|_|j|_t||�}tjd|j|j	�t
�}|g}|j||�t||�}t
|||�}t||j|�S)agCreates a S3TransferHandler instance

        :type client: botocore.client.Client
        :param client: The client to power the S3TransferHandler

        :type result_queue: queue.Queue
        :param result_queue: The result queue to be used to process results
            for the S3TransferHandler

        :returns: A S3TransferHandler instance
        z7Using a multipart threshold of %s and a part size of %s)r	r(�MAX_IN_MEMORY_CHUNKSZmax_in_memory_upload_chunksZmax_in_memory_download_chunksr�LOGGER�debugZmultipart_thresholdZmultipart_chunksizer�_add_result_printerrr�S3TransferHandlerr')	r)Zclient�result_queueZtransfer_config�transfer_manager�result_recorder�result_processor_handlersZresult_processorZcommand_result_recorderr+r+r,�__call__Gs$

z!S3TransferHandlerFactory.__call__cCsh|jjd�rdS|jjd�r&t|�}n4|jjd�r<t|�}n|jjd�sRt|�}nt|�}|j|�dS)N�quietZonly_show_errors�	is_streamZprogress)r'�getrrr�append)r)r5r6Zresult_printerr+r+r,r1ks


z,S3TransferHandlerFactory._add_result_printerN)�__name__�
__module__�__qualname__r.r-r7r1r+r+r+r,r%7s
$r%c@seZdZdd�Zdd�ZdS)r2cCsP||_||_|j|jj|f}t|�t|�t|�t|�t|�t|�t	|�g|_
dS)aBackend for performing S3 transfers

        :type transfer_manager: s3transfer.manager.TransferManager
        :param transfer_manager: Transfer manager to use for transfers

        :type cli_params: dict
        :param cli_params: The parameters passed to the CLI command in the
            form of a dictionary

        :type result_command_recorder: ResultCommandRecorder
        :param result_command_recorder: The result command recorder to be
            used to get the final result of the transfer
        N)�_transfer_manager�_result_command_recorderr3�UploadStreamRequestSubmitter�DownloadStreamRequestSubmitter�UploadRequestSubmitter�DownloadRequestSubmitter�CopyRequestSubmitter�DeleteRequestSubmitter�LocalDeleteRequestSubmitter�_submitters)r)r4r*Zresult_command_recorderZsubmitter_argsr+r+r,r-zs
zS3TransferHandler.__init__cCsz|j�d|j�Rd}x:|D]2}x,|jD]"}|j|�r&|j|�rF|d7}Pq&WqW|jj|�WdQRXWdQRX|jj�S)a�Process iterable of FileInfos for transfer

        :type fileinfos: iterable of FileInfos
        param fileinfos: Set of FileInfos to submit to underlying transfer
            request submitters to make transfer API calls to S3

        :rtype: CommandResult
        :returns: The result of the command that specifies the number of
            failures and warnings encountered.
        r�N)r@r?rH�
can_submit�submitZnotify_total_submissionsZget_command_result)r)Z	fileinfosZtotal_submissions�fileinfoZ	submitterr+r+r,�call�s



zS3TransferHandler.callN)r<r=r>r-rMr+r+r+r,r2ys%r2c@s�eZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �BaseTransferRequestSubmitterNcCs||_||_||_dS)a\Submits transfer requests to the TransferManager

        Given a FileInfo object and provided CLI parameters, it will add the
        necessary extra arguments and subscribers in making a call to the
        TransferManager.

        :type transfer_manager: s3transfer.manager.TransferManager
        :param transfer_manager: The underlying transfer manager

        :type result_queue: queue.Queue
        :param result_queue: The result queue to use

        :type cli_params: dict
        :param cli_params: The associated CLI parameters passed in to the
            command as a dictionary.
        N)r?�
_result_queuer')r)r4r3r*r+r+r,r-�sz%BaseTransferRequestSubmitter.__init__cCs|j|�}|s|j|�SdS)a�Submits a transfer request based on the FileInfo provided

        There is no guarantee that the transfer request will be made on
        behalf of the fileinfo as a fileinfo may be skipped based on
        circumstances in which the transfer is not possible.

        :type fileinfo: awscli.customizations.s3.fileinfo.FileInfo
        :param fileinfo: The FileInfo to be used to submit a transfer
            request to the underlying transfer manager.

        :rtype: s3transfer.futures.TransferFuture
        :returns: A TransferFuture representing the transfer if it the
            transfer was submitted. If it was not submitted nothing
            is returned.
        N)�_warn_and_signal_if_skip�
_do_submit)r)rLZshould_skipr+r+r,rK�s
z#BaseTransferRequestSubmitter.submitcCstd��dS)a�Checks whether it can submit a particular FileInfo

        :type fileinfo: awscli.customizations.s3.fileinfo.FileInfo
        :param fileinfo: The FileInfo to check if the transfer request
            submitter can handle.

        :returns: True if it can use the provided FileInfo to make a transfer
            request to the underlying transfer manager. False, otherwise.
        zcan_submit()N)�NotImplementedError)r)rLr+r+r,rJ�s
z'BaseTransferRequestSubmitter.can_submitcCs�i}|jr|j||j�g}|j||�|jr`d|ji}|jjdd�rNd|d<|j|jf|��|jjd�sz|j|||�S|j|�dS)Nr3�is_moveF�move�
transfer_typeZdryrun)	�REQUEST_MAPPER_METHODr'�_add_additional_subscribers�RESULT_SUBSCRIBER_CLASSrOr:r;�_submit_transfer_request�_submit_dryrun)r)rL�
extra_args�subscribers�
result_kwargsr+r+r,rQ�s

z'BaseTransferRequestSubmitter._do_submitcCs@|j}|jjdd�rd}|j|�\}}|jjt|||d��dS)NrSFrT)rU�src�dest)�operation_namer'r:�_format_src_destrO�putr)r)rLrUr^r_r+r+r,rZsz+BaseTransferRequestSubmitter._submit_dryruncCsdS)Nr+)r)r\rLr+r+r,rWsz8BaseTransferRequestSubmitter._add_additional_subscriberscCstd��dS)Nz_submit_transfer_request())rR)r)rLr[r\r+r+r,rYsz5BaseTransferRequestSubmitter._submit_transfer_requestcCs"x|j�D]}||�r
dSq
WdS)NT)�_get_warning_handlers)r)rLZwarning_handlerr+r+r,rPsz5BaseTransferRequestSubmitter._warn_and_signal_if_skipcCsgS)Nr+)r)r+r+r,rcsz2BaseTransferRequestSubmitter._get_warning_handlerscCs|jjd�o|jjd�S)NZguess_mime_typeZcontent_type)r'r:)r)r+r+r,�_should_inject_content_type$sz8BaseTransferRequestSubmitter._should_inject_content_typecCsf|jjd�sb|j�sbtjd|j|jf�|jjd�s^td|jd|j|jf�}|jj	|�dSdS)NZforce_glacier_transferz@Encountered glacier object s3://%s. Not performing %s on object.Zignore_glacier_warningszs3://z�Object is of storage class GLACIER. Unable to perform %s operations on GLACIER objects. You must restore the object to be able to perform the operation. See aws s3 %s help for additional parameter options to ignore or force these transfers.TF)
r'r:Zis_glacier_compatibler/r0r^r`rrOrb)r)rL�warningr+r+r,�
_warn_glacier*sz*BaseTransferRequestSubmitter._warn_glaciercCsDdtjj}tjj|j�j|�}|r@t|jd�}|jj|�dSdS)Nz..z#File references a parent directory.TF)	�os�path�sep�normpathZcompare_key�
startswithrrOrb)r)rLZ
parent_prefixZescapes_cwdrer+r+r,�_warn_parent_reference?s
z3BaseTransferRequestSubmitter._warn_parent_referencecCstd��dS)zAReturns formatted versions of a fileinfos source and destination.raN)rR)r)rLr+r+r,raLsz-BaseTransferRequestSubmitter._format_src_destcCst|�S)N)r)r)rhr+r+r,�_format_local_pathPsz/BaseTransferRequestSubmitter._format_local_pathcCs|jd�r|Sd|S)Nzs3://)rk)r)rhr+r+r,�_format_s3_pathSs
z,BaseTransferRequestSubmitter._format_s3_path)r<r=r>rVrXr-rKrJrQrZrWrYrPrcrdrfrlrarmrnr+r+r+r,rN�s"	
rNc@sNeZdZejZeZdd�Zdd�Z	dd�Z
dd�Zd	d
�Zdd�Z
d
d�ZdS)rCcCs
|jdkS)N�upload)r`)r)rLr+r+r,rJ]sz!UploadRequestSubmitter.can_submitcCsB|jt|j��|j�r$|jt��|jjdd�r>|jt��dS)NrSF)r;r�sizerdrr'r:r!)r)r\rLr+r+r,rW`s
z2UploadRequestSubmitter._add_additional_subscriberscCs.t|j�\}}|j|�}|jj|||||d�S)N)�fileobj�bucket�keyr[r\)rr_�_get_fileinr?ro)r)rLr[r\rrrsZfileinr+r+r,rYgs

z/UploadRequestSubmitter._submit_transfer_requestcCs|jS)N)r^)r)rLr+r+r,rtosz"UploadRequestSubmitter._get_fileincCs|jgS)N)�_warn_if_too_large)r)r+r+r,rcrsz,UploadRequestSubmitter._get_warning_handlerscCsLt|d�rH|jtkrHt|j�}d|tt�f}t||dd�}|jj|�dS)Nrpz&File %s exceeds s3 upload limit of %s.F)Z	skip_file)	�getattrrprrr^rrrOrb)r)rLZ	file_pathZwarning_messagerer+r+r,ruus
z)UploadRequestSubmitter._warn_if_too_largecCs |j|j�}|j|j�}||fS)N)rmr^rnr_)r)rLr^r_r+r+r,rasz'UploadRequestSubmitter._format_src_destN)r<r=r>rZmap_put_object_paramsrVr
rXrJrWrYrtrcrurar+r+r+r,rCYs
rCc@sFeZdZejZeZdd�Zdd�Z	dd�Z
dd�Zd	d
�Zdd�Z
d
S)rDcCs
|jdkS)N�download)r`)r)rLr+r+r,rJ�sz#DownloadRequestSubmitter.can_submitcCsR|jt|j��|jt��|jt|j|j��|jjdd�rN|jt	|j
��dS)NrSF)r;rrpr rZlast_updaterOr'r:r"�
source_client)r)r\rLr+r+r,rW�sz4DownloadRequestSubmitter._add_additional_subscriberscCs.t|j�\}}|j|�}|jj|||||d�S)N)rqrrrsr[r\)rr^�_get_fileoutr?rw)r)rLr[r\rrrsZfileoutr+r+r,rY�s

z1DownloadRequestSubmitter._submit_transfer_requestcCs|jS)N)r_)r)rLr+r+r,ry�sz%DownloadRequestSubmitter._get_fileoutcCs|j|jgS)N)rfrl)r)r+r+r,rc�sz.DownloadRequestSubmitter._get_warning_handlerscCs |j|j�}|j|j�}||fS)N)rnr^rmr_)r)rLr^r_r+r+r,ra�sz)DownloadRequestSubmitter._format_src_destN)r<r=r>rZmap_get_object_paramsrVrrXrJrWrYryrcrar+r+r+r,rD�s	rDc@s>eZdZejZeZdd�Zdd�Z	dd�Z
dd�Zd	d
�ZdS)rEcCs
|jdkS)N�copy)r`)r)rLr+r+r,rJ�szCopyRequestSubmitter.can_submitcCsF|jt|j��|j�r$|jt��|jjdd�rB|jt|j��dS)NrSF)	r;rrprdrr'r:r#rx)r)r\rLr+r+r,rW�sz0CopyRequestSubmitter._add_additional_subscribersc	Cs@t|j�\}}t|j�\}}||d�}|jj||||||jd�S)N)ZBucketZKey)rrrs�copy_sourcer[r\rx)rr_r^r?rzrx)	r)rLr[r\rrrsZ
source_bucketZ
source_keyr{r+r+r,rY�s
z-CopyRequestSubmitter._submit_transfer_requestcCs|jgS)N)rf)r)r+r+r,rc�sz*CopyRequestSubmitter._get_warning_handlerscCs |j|j�}|j|j�}||fS)N)rnr^r_)r)rLr^r_r+r+r,ra�sz%CopyRequestSubmitter._format_src_destN)
r<r=r>rZmap_copy_object_paramsrVrrXrJrWrYrcrar+r+r+r,rE�s
rEc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
rAcCs|jdko|jjd�S)Nror9)r`r'r:)r)rLr+r+r,rJ�s
z'UploadStreamRequestSubmitter.can_submitcCs,|jjdd�}|dk	r(|jtt|���dS)N�
expected_size)r'r:r;r�int)r)r\rLr|r+r+r,rW�sz8UploadStreamRequestSubmitter._add_additional_subscriberscCst�}t|�S)N)r$r)r)rLZbinary_stdinr+r+r,rt�sz(UploadStreamRequestSubmitter._get_fileincCsdS)N�-r+)r)rhr+r+r,rm�sz/UploadStreamRequestSubmitter._format_local_pathN)	r<r=r>r
rXrJrWrtrmr+r+r+r,rA�s
rAc@s0eZdZeZdd�Zdd�Zdd�Zdd�Zd	S)
rBcCs|jdko|jjd�S)Nrwr9)r`r'r:)r)rLr+r+r,rJ�s
z)DownloadStreamRequestSubmitter.can_submitcCsdS)Nr+)r)r\rLr+r+r,rW�sz:DownloadStreamRequestSubmitter._add_additional_subscriberscCst�S)N)r)r)rLr+r+r,ry�sz+DownloadStreamRequestSubmitter._get_fileoutcCsdS)Nr~r+)r)rhr+r+r,rm�sz1DownloadStreamRequestSubmitter._format_local_pathN)	r<r=r>rrXrJrWryrmr+r+r+r,rB�s
rBc@s.eZdZejZeZdd�Zdd�Z	dd�Z
dS)rFcCs|jdko|jdkS)N�deleteZs3)r`�src_type)r)rLr+r+r,rJ�s
z!DeleteRequestSubmitter.can_submitcCs"t|j�\}}|jj||||d�S)N)rrrsr[r\)rr^r?r)r)rLr[r\rrrsr+r+r,rY�sz/DeleteRequestSubmitter._submit_transfer_requestcCs|j|j�dfS)N)rnr^)r)rLr+r+r,rasz'DeleteRequestSubmitter._format_src_destN)r<r=r>rZmap_delete_object_paramsrVrrXrJrYrar+r+r+r,rF�s
rFc@s,eZdZdZdZdd�Zdd�Zdd�ZdS)rGNcCs|jdko|jdkS)NrZlocal)r`r�)r)rLr+r+r,rJ
s
z&LocalDeleteRequestSubmitter.can_submitcCs�|j|�\}}d||d�}z~y<|jjtfddi|���tj|j�|jjtf|��Wn<tk
r�}z |jjt	fd|i|���WYdd}~XnXWddS)Nr)rUr^r_Ztotal_transfer_sizerZ	exceptionT)
rarOrbrrg�remover^r�	Exceptionr)r)rLr[r\r^r_r]�er+r+r,rYs
*z4LocalDeleteRequestSubmitter._submit_transfer_requestcCs|j|j�dfS)N)rmr^)r)rLr+r+r,ra-sz,LocalDeleteRequestSubmitter._format_src_dest)r<r=r>rVrXrJrYrar+r+r+r,rGs
rG)8ZloggingrgZs3transfer.managerrZawscli.customizations.s3.utilsrrrrrrZ'awscli.customizations.s3.transferconfigr	Z awscli.customizations.s3.resultsr
rrr
rrrrrrrrrrrrrrrrrrr r!r"r#Z
awscli.compatr$Z	getLoggerr<r/�objectr%r2rNrCrDrErArBrFrGr+r+r+r,�<module>
sV 
B?",$"