Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/s3transfer/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/s3transfer/__pycache__/crt.cpython-38.pyc
U

P��gh��@sddlZddlZddlZddlmZddlZddlZddlZ	ddl
Z	ddlmZm
Z
mZmZddlmZmZmZmZmZddlmZmZmZddl	mZddlmZddlmZdd	lmZdd
l m!Z!m"Z"ddl#m$Z$m%Z%ddl&m'Z'dd
l(m)Z)m*Z*ddl+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1e�2e3�Z4da5dd�Z6dddde%ddfdd�Z7d2dd�Z8Gdd�d�Z9Gdd�de*�Z:Gdd�de)�Z;Gdd�d�Z<Gd d!�d!e<�Z=Gd"d#�d#e�Z>Gd$d%�d%�Z?Gd&d'�d'�Z@Gd(d)�d)�ZAGd*d+�d+�ZBGd,d-�d-�ZCGd.d/�d/�ZDGd0d1�d1�ZEdS)3�N)�BytesIO)�AwsCredentials�AwsCredentialsProvider�AwsSigningAlgorithm�AwsSigningConfig)�ClientBootstrap�ClientTlsContext�DefaultHostResolver�EventLoopGroup�TlsContextOptions)�S3Client�S3RequestTlsMode�
S3RequestType)�UNSIGNED)�urlsplit)�Config)�NoCredentialsError)�	ArnParser�InvalidArnException)�FULL_OBJECT_CHECKSUM_ARGS�MB)�TransferNotDoneError)�BaseTransferFuture�BaseTransferMeta)�TransferManager)�CallArgs�OSUtils�
get_callbacks�is_s3express_bucketcCs@tdkr<tj�|�}z|��Wntk
r6YdSX|atS�N)�CRT_S3_PROCESS_LOCK�awscrt�s3ZCrossProcessLock�acquire�RuntimeError)�nameZcrt_lock�r&�;/opt/cppython/lib/python3.8/site-packages/s3transfer/crt.py�acquire_crt_s3_process_lock:sr(�Tc
Cs�t|�}t|�}t||�}	d}
|r(tjntj}|dk	rdt�}|rN|j|d�nd|_t	|�}
|
�
�}
t|d�}t|	|||||
|dd�S)a�
    :type region: str
    :param region: The region used for signing

    :type crt_credentials_provider:
        Optional[awscrt.auth.AwsCredentialsProvider]
    :param crt_credentials_provider: CRT AWS credentials provider
        to use to sign requests. If not set, requests will not be signed.

    :type num_threads: Optional[int]
    :param num_threads: Number of worker threads generated. Default
        is the number of processors in the machine.

    :type target_throughput: Optional[int]
    :param target_throughput: Throughput target in bytes per second.
        By default, CRT will automatically attempt to choose a target
        throughput that matches the system's maximum network throughput.
        Currently, if CRT is unable to determine the maximum network
        throughput, a fallback target throughput of ``1_250_000_000`` bytes
        per second (which translates to 10 gigabits per second, or 1.16
        gibibytes per second) is used. To set a specific target
        throughput, set a value for this parameter.

    :type part_size: Optional[int]
    :param part_size: Size, in Bytes, of parts that files will be downloaded
        or uploaded in.

    :type use_ssl: boolean
    :param use_ssl: Whether or not to use SSL.  By default, SSL is used.
        Note that not all services support non-ssl connections.

    :type verify: Optional[boolean/string]
    :param verify: Whether or not to verify SSL certificates.
        By default SSL certificates are verified.  You can provide the
        following values:

        * False - do not validate SSL certificates.  SSL will still be
            used (unless use_ssl is False), but SSL certificates
            will not be verified.
        * path/to/cert/bundle.pem - A filename of the CA cert bundle to
            use. Specify this argument if you want to use a custom CA cert
            bundle instead of the default one on your system.
    N)Zca_filepathF)� provided_throughput_target_bytesT)�	bootstrap�regionZcredential_provider�	part_size�tls_mode�tls_connection_optionsZthroughput_target_gbpsZenable_s3express)
r
r	rr
ZENABLEDZDISABLEDrZ&override_default_trust_store_from_pathZverify_peerrZnew_connection_options�_get_crt_throughput_target_gbpsr)r,Zcrt_credentials_providerZnum_threadsZtarget_throughputr-Zuse_ssl�verifyZevent_loop_groupZ
host_resolverr+r/r.Ztls_ctx_optionsZclient_tls_option�target_gbpsr&r&r'�create_s3_crt_clientSs84
����r3cCsH|dkr,tj��}t�d|�|dkr8d}n|dd}t�d|�|S)Nz-Recommended CRT throughput target in gbps: %sg$@r)iʚ;z'Using CRT throughput target in gbps: %s)r!r"Z&get_recommended_throughput_target_gbps�logger�debug)r*r2r&r&r'r0�s
�r0c@s�eZdZejZejZejZdZejZd$dd�Z	dd�Z
dd�Zd%d	d
�Zd&dd�Z
d'd
d�Zd(dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd)dd�Zd d!�Zd"d#�ZdS)*�CRTTransferManagerTNcCsH|dkrt�|_||_t||j�|_|j|_g|_t�	d�|_
d|_dS)aFA transfer manager interface for Amazon S3 on CRT s3 client.

        :type crt_s3_client: awscrt.s3.S3Client
        :param crt_s3_client: The CRT s3 client, handling all the
            HTTP requests and functions under then hood

        :type crt_request_serializer: s3transfer.crt.BaseCRTRequestSerializer
        :param crt_request_serializer: Serializer, generates unsigned crt HTTP
            request.

        :type osutil: s3transfer.utils.OSUtils
        :param osutil: OSUtils object to use for os-related behavior when
            using with transfer manager.
        N�r)r�_osutil�_crt_s3_client�S3ClientArgsCreator�_s3_args_creator�translate_crt_exception�_crt_exception_translator�_future_coordinators�	threading�	Semaphore�
_semaphore�_id_counter)�selfZ
crt_s3_client�crt_request_serializer�osutilr&r&r'�__init__�s��zCRTTransferManager.__init__cCs|Srr&�rCr&r&r'�	__enter__�szCRTTransferManager.__enter__cGsd}|rd}|�|�dS)NFT��	_shutdown)rC�exc_type�	exc_value�args�cancelr&r&r'�__exit__�szCRTTransferManager.__exit__cCsN|dkri}|dkri}|�||j�|�|�t|||||d�}|�d|�S)N��bucket�key�fileobj�
extra_args�subscribersZ
get_object)�_validate_all_known_args�ALLOWED_DOWNLOAD_ARGS�_validate_if_bucket_supportedr�_submit_transfer)rCrQrRrSrTrU�callargsr&r&r'�download�s
�zCRTTransferManager.downloadcCsX|dkri}|dkri}|�||j�|�|�|�|�t|||||d�}|�d|�S)NrPZ
put_object)rV�ALLOWED_UPLOAD_ARGSrX�&_validate_checksum_algorithm_supportedrrY)rCrSrQrRrTrUrZr&r&r'�upload�s

�zCRTTransferManager.uploadcCsL|dkri}|dkri}|�||j�|�|�t||||d�}|�d|�S)N)rQrRrTrUZ
delete_object)rV�ALLOWED_DELETE_ARGSrXrrY)rCrQrRrTrUrZr&r&r'�deletes
�zCRTTransferManager.deleteFcCs|�|�dSrrI�rCrNr&r&r'�shutdownszCRTTransferManager.shutdowncCs<|jr8|j��D]&\}}|�|�}|rtd|�d���qdS)Nz'TransferManager methods do not support z+ resource. Use direct client calls instead.)� VALIDATE_SUPPORTED_BUCKET_VALUES�_UNSUPPORTED_BUCKET_PATTERNS�items�match�
ValueError)rCrQ�resource�patternrfr&r&r'rXs

�z0CRTTransferManager._validate_if_bucket_supportedcCs0|D]&}||krtd|�dd�|�����qdS)NzInvalid extra_args key 'z', must be one of: z, )rg�join)rC�actual�allowed�kwargr&r&r'rV+s
�z+CRTTransferManager._validate_all_known_argscCsH|�d�}|dkrdSttjjj�}|��|krDtd|�d|����dS)N�ChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )�get�listr!r"�S3ChecksumAlgorithm�__members__�upperrg)rCrT�checksum_algorithmZsupported_algorithmsr&r&r'r]3s
�z9CRTTransferManager._validate_checksum_algorithm_supportedcCs |jD]}|��s|��qdSr)r>�donerN�rC�coordinatorr&r&r'�_cancel_transfers>s
z$CRTTransferManager._cancel_transferscCs|jD]}|��qdSr)r>�resultrvr&r&r'�_finish_transfersCs
z$CRTTransferManager._finish_transferscCs|jD]}|��qdSr)r>�%wait_until_on_done_callbacks_completervr&r&r'�_wait_transfers_doneGs
z'CRTTransferManager._wait_transfers_donecCs\|r|��z@z|��Wn.tk
r6|��Yntk
rHYnXW5|��XdSr)rxr|rz�KeyboardInterrupt�	Exceptionrar&r&r'rJKs
zCRTTransferManager._shutdowncKs|j��dSr)rA�release�rC�kwargsr&r&r'�_release_semaphoreXsz%CRTTransferManager._release_semaphorec

Cs�|jg}t|j|jd�}t|j|�|d�}tf|�}t|�}|�|�zD|j�	�|j
�|d�}|�|j
�|||||�}	|j
jf|	�}
WnJtk
r�}z,|�|d�|j
j|d|d�}||d�W5d}~XYnX|�|
�|j�|�|jd7_|S)	N)�transfer_id�exception_translator)�metarwZqueuedTru)�after_subscribers)�error�)r��CRTTransferCoordinatorrBr=�CRTTransferMeta�CRTTransferFuture�AfterDoneHandler�appendrAr#r;�get_crt_callback�get_make_request_argsr9Zmake_requestr~�
set_exception�set_s3_requestr>)
rC�request_type�	call_args�on_done_after_callsrw�
components�futureZ	afterdoneZ	on_queuedZcrt_callargsZcrt_s3_request�e�on_doner&r&r'rY[sL�
�


���
z#CRTTransferManager._submit_transfer)N)NN)NN)NN)F)F)�__name__�
__module__�__qualname__rrWr\r_rcrdrFrHrOr[r^r`rbrXrVr]rxrzr|rJr�rYr&r&r&r'r6�s.
�






r6c@s>eZdZdZddd�Zedd��Zedd��Zed	d
��ZdS)r�z*Holds metadata about the CRTTransferFutureNcCs||_||_i|_dSr)�_transfer_id�
_call_args�
_user_context)rCr�r�r&r&r'rF�szCRTTransferMeta.__init__cCs|jSr)r�rGr&r&r'r��szCRTTransferMeta.call_argscCs|jSr)r�rGr&r&r'r��szCRTTransferMeta.transfer_idcCs|jSr)r�rGr&r&r'�user_context�szCRTTransferMeta.user_context)NN)	r�r�r��__doc__rF�propertyr�r�r�r&r&r&r'r��s


r�c@sDeZdZddd�Zedd��Zdd�Zddd	�Zd
d�Zdd
�Z	dS)r�NcCs ||_|dkrt�|_||_dS)aZThe future associated to a submitted transfer request via CRT S3 client

        :type meta: s3transfer.crt.CRTTransferMeta
        :param meta: The metadata associated to the transfer future.

        :type coordinator: s3transfer.crt.CRTTransferCoordinator
        :param coordinator: The coordinator associated to the transfer future.
        N)�_metar��_coordinator)rCr�rwr&r&r'rF�s	zCRTTransferFuture.__init__cCs|jSr)r�rGr&r&r'r��szCRTTransferFuture.metacCs
|j��Sr)r�rurGr&r&r'ru�szCRTTransferFuture.donecCs|j�|�dSr)r�ry�rC�timeoutr&r&r'ry�szCRTTransferFuture.resultcCs|j��dSr)r�rNrGr&r&r'rN�szCRTTransferFuture.cancelcCs$|��std��|jj|dd�dS)z!Sets the exception on the future.z?set_exception can only be called once the transfer is complete.T)�overrideN)rurr�r��rC�	exceptionr&r&r'r��s
�zCRTTransferFuture.set_exception)NN)N)
r�r�r�rFr�r�ruryrNr�r&r&r&r'r��s


r�c@seZdZdd�Zdd�ZdS)�BaseCRTRequestSerializercCstd��dS)alSerialize CRT HTTP requests.

        :type transfer_type: string
        :param transfer_type: the type of transfer made,
            e.g 'put_object', 'get_object', 'delete_object'

        :type future: s3transfer.crt.CRTTransferFuture

        :rtype: awscrt.http.HttpRequest
        :returns: An unsigned HTTP request to be used for the CRT S3 client
        zserialize_http_request()N��NotImplementedError)rC�
transfer_typer�r&r&r'�serialize_http_request�sz/BaseCRTRequestSerializer.serialize_http_requestcCstd��dS)Nztranslate_crt_exception()r�r�r&r&r'r<�sz0BaseCRTRequestSerializer.translate_crt_exceptionN)r�r�r�r�r<r&r&r&r'r��sr�c@sneZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�BotocoreCRTRequestSerializerNcCs�||_|dkri}|�||�|jf|�|_|jjj�d|j�|jjj�d|j�|jjj�d|j	�|jjj�d|j
�dS)a�Serialize CRT HTTP request using botocore logic
        It also takes into account configuration from both the session
        and any keyword arguments that could be passed to
        `Session.create_client()` when serializing the request.

        :type session: botocore.session.Session

        :type client_kwargs: Optional[Dict[str, str]])
        :param client_kwargs: The kwargs for the botocore
            s3 client initialization.
        Nzrequest-created.s3.*zafter-call.s3.*zbefore-send.s3.*zbefore-call.s3.*)�_session�_resolve_client_configZ
create_client�_clientr��events�register�_capture_http_request�+_change_response_to_serialized_http_request�_make_fake_http_response�_remove_checksum_context)rC�session�
client_kwargsr&r&r'rF�s*
�
�
�
�z%BotocoreCRTRequestSerializer.__init__cCsPd}|��r|��}d|kr$|d}ttd�}|r<|�|�}||d<d|d<dS)N�config)Zsignature_versionr"�service_name)Zget_default_client_configrr�merge)rCr�r�Zuser_provided_configZ
client_configr&r&r'r��s

z3BotocoreCRTRequestSerializer._resolve_client_configc	Cs�t|j�}|j}|jr&|�d|j��}g}|j��D]6\}}t|t�rV|�||f�q4|�|t|d�f�q4t	j
�|�}t	j
j|j
|||jd�}|S)N�?zutf-8)�method�path�headersZbody_stream)r�urlr��queryr�re�
isinstance�strr�r!�httpZHttpHeadersZHttpRequestr��body)	rCZaws_request�	url_partsZcrt_pathZheaders_listr%�valueZcrt_headers�crt_requestr&r&r'�_crt_request_from_aws_request�s"

�z:BotocoreCRTRequestSerializer._crt_request_from_aws_requestcCs�|�|�}|j�d�dkr4t|j�}|j�d|j�|j�d�dk	rP|j�d�|j�d�dkrx|jdkrx|j�	dd�|j�d�dk	r�|j�d�|S)N�hostzContent-MD5zContent-Length�0zTransfer-Encoding)
r�r�rorr��set�netloc�remover��add)rC�botocore_http_requestr�r�r&r&r'�_convert_to_crt_http_requests


z9BotocoreCRTRequestSerializer._convert_to_crt_http_requestcKs||jd<dS)N�http_request)�context�rC�requestr�r&r&r'r�3sz2BotocoreCRTRequestSerializer._capture_http_requestcKs|d}|��|d<dS)Nr��HTTPRequest)�prepare)rCr��parsedr�r�r&r&r'r�6szHBotocoreCRTRequestSerializer._change_response_to_serialized_http_requestcKstj�dditd��S)N���)�botocore�
awsrequestZAWSResponse�FakeRawResponser�r&r&r'r�<s�z5BotocoreCRTRequestSerializer._make_fake_http_responsecCs&t|j|�f|j|jd�|j��dS)N)ZBucket�Keyr�)�getattrr�rQrRrT)rCZ
client_methodr�r&r&r'�_get_botocore_http_requestDs���z7BotocoreCRTRequestSerializer._get_botocore_http_requestcCs|�||jj�}|�|�}|Sr)r�r�r�r�)rCr�r�r�r�r&r&r'r�Is�
z3BotocoreCRTRequestSerializer.serialize_http_requestcCs t|tjj�r|�|�SdSdSr)r�r!r"ZS3ResponseError� _translate_crt_s3_response_errorr�r&r&r'r<Ps
z4BotocoreCRTRequestSerializer.translate_crt_exceptioncCs�|j}|dkrdSdd�|jD�}|j}|dk	rH|jjj}|�|�j}nd}tj	�
|�||jd�}|jjj
||d�}|�di��d�}	|jj�|	�}
|
||d�S)	Ni-cSsi|]\}}||�qSr&r&)�.0�k�vr&r&r'�
<dictcomp>]szQBotocoreCRTRequestSerializer._translate_crt_s3_response_error.<locals>.<dictcomp>)r��status_coder�)�shape�ErrorZCode)�operation_name)r�r�r�r�r��
service_modelZoperation_modelZoutput_shaper�r�ZHeadersDictr�Z_response_parser�parsero�
exceptionsZ	from_code)rCZs3_response_errorr�r�r�r�r�Z
response_dictZparsed_responseZ
error_codeZerror_classr&r&r'r�Vs(

��z=BotocoreCRTRequestSerializer._translate_crt_s3_response_errorcKs|�di�}d|kr|d=dS)Nr�Zchecksum)ro)rC�paramsr��request_contextr&r&r'r�rsz5BotocoreCRTRequestSerializer._remove_checksum_context)N)r�r�r�rFr�r�r�r�r�r�r�r�r<r�r�r&r&r&r'r��s

r�c@seZdZddd�ZdS)r��Nccs|�|�}|sq|VqdSr)�read)rC�amt�decode_content�chunkr&r&r'�streamys
zFakeRawResponse.stream)r�N)r�r�r�r�r&r&r&r'r�xsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�BotocoreCRTCredentialsWrappercCs
||_dSr)�_resolved_credentials)rCZresolved_botocore_credentialsr&r&r'rF�sz&BotocoreCRTCredentialsWrapper.__init__cCs|����}t|j|j|j�Sr)�_get_credentialsZget_frozen_credentialsrZ
access_keyZ
secret_key�token)rC�credentialsr&r&r'�__call__�s�z&BotocoreCRTCredentialsWrapper.__call__cCs
t�|�Sr)rZnew_delegaterGr&r&r'�to_crt_credentials_provider�sz9BotocoreCRTCredentialsWrapper.to_crt_credentials_providercCs|jdkrt��|jSr)r�rrGr&r&r'r��s
z.BotocoreCRTCredentialsWrapper._get_credentialsN)r�r�r�rFr�r�r�r&r&r&r'r��sr�c@sleZdZdZddd�Zedd��Zdd�Zdd	d
�Zddd
�Z	dd�Z
ddd�Zdd�Zdd�Z
dd�ZdS)r�z-A helper class for managing CRTTransferFutureNcCs6||_||_||_t��|_d|_d|_t��|_	dSr)
r��_exception_translator�_s3_requestr?�Lock�_lock�
_exception�_crt_future�Event�_done_event)rCr��
s3_requestr�r&r&r'rF�s
zCRTTransferCoordinator.__init__cCs|jSr)r�rGr&r&r'r�sz!CRTTransferCoordinator.s3_requestcCs|j��dSr)rr�rGr&r&r'�set_done_callbacks_complete�sz2CRTTransferCoordinator.set_done_callbacks_completecCs|j�|�dSr)r�waitr�r&r&r'r{�sz<CRTTransferCoordinator.wait_until_on_done_callbacks_completeFc	Cs(|j�|��r|r||_W5QRXdSr)rrur)rCr�r�r&r&r'r��sz$CRTTransferCoordinator.set_exceptioncCs|jr|j��dSr)r�rNrGr&r&r'rN�szCRTTransferCoordinator.cancelc
Cs�|jr|j�zjz|j�|�WnTtk
rH|��|j�|��Yn,tk
rr}z|�|�W5d}~XYnXW5|jr�d|_XdSr)rr�rryr}rNr~�handle_exception)rCr�r�r&r&r'ry�s zCRTTransferCoordinator.resultc
Csbd}|jrJz|�|�}Wn0tk
rH}ztjd|d�W5d}~XYnX|dk	rZ||�n|�dS)NzUnable to translate exception.)�exc_info)r�r~r4r5)rC�excZtranslated_excr�r&r&r'r�sz'CRTTransferCoordinator.handle_exceptioncCs|jdkrdS|j��S)NF)rrurGr&r&r'ru�s
zCRTTransferCoordinator.donecCs||_|jj|_dSr)r�Zfinished_futurer)rCrr&r&r'r��sz%CRTTransferCoordinator.set_s3_request)NNN)N)F)N)r�r�r�r�rFr�rrr{r�rNryrrur�r&r&r&r'r��s�




r�c@s>eZdZdd�Zdd�Zddd�Zdd	�Zd
d�Zdd
�ZdS)r:cCs||_||_dSr)�_request_serializer�	_os_utils)rCrDZos_utilsr&r&r'rF�szS3ClientArgsCreator.__init__cCs(t|d|��|j�}|||||g|d�S)NZ_get_make_request_args_�r�r�rwr��on_done_before_callsr�)r��_default_get_make_request_args)rCr�r�rwr�r�Zrequest_args_handlerr&r&r'r��s��z)S3ClientArgsCreator.get_make_request_argsNcs����fdd�}|S)Ncsbg}�dk	r|�7}|t���7}�dk	r2|�7}|D]&}�dkrR||dd�q6|||�q6dS)N�progressr)Zbytes_transferred)r)rMr�Zcallbacks_list�callback�r��before_subscribers�
callback_typer�r&r'�invoke_all_callbacks�szBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacksr&)rCr�rrr�rr&rr'r��sz$S3ClientArgsCreator.get_crt_callbackcs�d}t�jt�r.�j}|j�|�}|�jd<n�j�jd<d}	t�fdd�tD��s��j�dd��	�}
t
jjt
jj
|
t
jjjd�}	d�jd	<|j|�||||d
�}||d<|	|d<|S)
NZ
ContentLengthZBodyc3s|]}|�jkVqdSr)rT)r�Zchecksum_arg�r�r&r'�	<genexpr>s�zHS3ClientArgsCreator._get_make_request_args_put_object.<locals>.<genexpr>rnZCRC32)�	algorithm�locationzoverride-to-be-removedZ
ContentMD5r
�
send_filepath�checksum_config)r�rSr�rZ
get_file_sizerT�anyr�poprsr!r"�S3ChecksumConfigrqZS3ChecksumLocationZTRAILERr)rCr�r�rwr�rr�rZdata_lenrrt�make_request_argsr&rr'�!_get_make_request_args_put_objects<	��
�
�z5S3ClientArgsCreator._get_make_request_args_put_objectcCs�d}d}tjjdd�}	t|jt�rL|j}
|j�|
�}|�t	||
||j��n
t
|j�}|j||||||d�}||d<||d<|	|d<|S)NT)Zvalidate_responser
�
recv_filepath�on_bodyr)r!r"rr�rSr�rZget_temp_filenamer��RenameTempFileHandler�OnBodyFileObjWriterr)rCr�r�rwr�rr�r!r"rZfinal_filepathrr&r&r'�!_get_make_request_args_get_object;s6	��
�z5S3ClientArgsCreator._get_make_request_args_get_objectc
Cs�|j�||�tt|��tj�|�|d||�|�|d�d�}|dtjkrfd�dd�|�d�D��|d	<t	�}|�
|j�}	r�|	d
dkr�tt
jdddd
�|d<|	d|_nt|j�r�tt
jddd�|d<|S)Nrur)r��typer�Zon_progressr&�css|]}|��VqdSr)�title)r��xr&r&r'rxszES3ClientArgsCreator._default_get_make_request_args.<locals>.<genexpr>�_r�r,�*F)rr,�use_double_uri_encode�should_normalize_uri_pathZsigning_config�
resource_name)rr,r-)rr�r�rrs�DEFAULTr�rj�split�_S3ArnParamHandler�
handle_arnrQrrZ
V4_ASYMMETRICrZV4_S3EXPRESS)
rCr�r�rwr�rr�rZarn_handlerZaccesspoint_arn_detailsr&r&r'r_sP
���
�
��
��

�
z2S3ClientArgsCreator._default_get_make_request_args)NN)	r�r�r�rFr�r�r r%rr&r&r&r'r:�s�
/$r:c@seZdZdd�Zdd�ZdS)r#cCs||_||_||_||_dSr)r��_final_filename�_temp_filenamer8)rCrwZfinal_filenameZ
temp_filenamerEr&r&r'rF�szRenameTempFileHandler.__init__c
Kst|d}|r|j�|j�nTz|j�|j|j�Wn<tk
rn}z|j�|j�|j�|�W5d}~XYnXdS)Nr�)r8Zremove_filer4Zrename_filer3r~r�r�)rCr�r�r�r&r&r'r��s�zRenameTempFileHandler.__call__N�r�r�r�rFr�r&r&r&r'r#�sr#c@seZdZdd�Zdd�ZdS)r�cCs
||_dSr)r�rvr&r&r'rF�szAfterDoneHandler.__init__cKs|j��dSr)r�rr�r&r&r'r��szAfterDoneHandler.__call__Nr5r&r&r&r'r��sr�c@seZdZdd�Zdd�ZdS)r$cCs
||_dSr)�_fileobj)rCrSr&r&r'rF�szOnBodyFileObjWriter.__init__cKs|j�|�dSr)r6�write)rCr�r�r&r&r'r��szOnBodyFileObjWriter.__call__Nr5r&r&r&r'r$�sr$c@s:eZdZdZe�d�Zdd�Zdd�Zdd�Z	d	d
�Z
dS)r1aPartial port of S3ArnParamHandler from botocore.

    This is used to make a determination on MRAP accesspoints for signing
    purposes. This should be safe to remove once we properly integrate auth
    resolution from Botocore into the CRT transfer integration.
    zA^(?P<resource_type>accesspoint|outpost)[/:](?P<resource_name>.+)$cCst�|_dSr)r�_arn_parserrGr&r&r'rF�sz_S3ArnParamHandler.__init__cCs*|�|�}|dkrdS|ddkr&|SdS)N�
resource_typeZaccesspoint)�_get_arn_details_from_bucket�rCrQ�arn_detailsr&r&r'r2�s

z_S3ArnParamHandler.handle_arncCs6z|j�|�}|�|�|WStk
r0YnXdSr)r8Z	parse_arn�_add_resource_type_and_namerr;r&r&r'r:�s
z/_S3ArnParamHandler._get_arn_details_from_bucketcCs4|j�|d�}|r0|�d�|d<|�d�|d<dS)Nrhr9r.)�_RESOURCE_REGEXrf�group)rCr<rfr&r&r'r=�sz._S3ArnParamHandler._add_resource_type_and_nameN)r�r�r�r��re�compiler>rFr2r:r=r&r&r&r'r1�s�	r1)N)F�loggingr@r?�iorZawscrt.httpr!Z	awscrt.s3Zbotocore.awsrequestr�Zbotocore.sessionZawscrt.authrrrrZ	awscrt.iorrr	r
rrr
rrZbotocore.compatrZbotocore.configrZbotocore.exceptionsrZbotocore.utilsrrZs3transfer.constantsrrZs3transfer.exceptionsrZs3transfer.futuresrrZs3transfer.managerrZs3transfer.utilsrrrr�	getLoggerr�r4r r(r3r0r6r�r�r�r�r�r�r�r:r#r�r$r1r&r&r&r'�<module>
s^
�
U
L&&	I:

F1le Man4ger