HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib/python3.10/site-packages/s3transfer/__pycache__/crt.cpython-310.pyc
o

�h���@s�ddlZddlZddlmZddlZddlZddlZddl	Zddl
mZmZm
Z
mZddlmZmZmZmZmZddlmZmZmZddlmZddlmZddlmZdd	lmZdd
lm Z ddl!m"Z"ddl#m$Z$m%Z%dd
l&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,e�-e.�Z/da0dd�Z1dddde ddfdd�Z2d/dd�Z3Gdd�d�Z4Gdd�de%�Z5Gdd�de$�Z6Gdd�d�Z7Gdd �d e7�Z8Gd!d"�d"e�Z9Gd#d$�d$�Z:Gd%d&�d&�Z;Gd'd(�d(�Z<Gd)d*�d*�Z=Gd+d,�d,�Z>Gd-d.�d.�Z?dS)0�N)�BytesIO)�AwsCredentials�AwsCredentialsProvider�AwsSigningAlgorithm�AwsSigningConfig)�ClientBootstrap�ClientTlsContext�DefaultHostResolver�EventLoopGroup�TlsContextOptions)�S3Client�S3RequestTlsMode�
S3RequestType)�UNSIGNED)�urlsplit)�Config)�NoCredentialsError)�MB)�TransferNotDoneError)�BaseTransferFuture�BaseTransferMeta)�TransferManager)�CallArgs�OSUtils�
get_callbacks�is_s3express_bucketcCs>tdurtj�|�}z|��Wn
tyYdSw|atS�N)�CRT_S3_PROCESS_LOCK�awscrt�s3�CrossProcessLock�acquire�RuntimeError)�name�crt_lock�r%�D/usr/local/CyberPanel/lib/python3.10/site-packages/s3transfer/crt.py�acquire_crt_s3_process_lock8s�r'�Tc
Cs�t|�}t|�}t||�}	d}
|rtjntj}|dur2t�}|r'|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)�ca_filepathF)� provided_throughput_target_bytesT)�	bootstrap�region�credential_provider�	part_size�tls_mode�tls_connection_options�throughput_target_gbps�enable_s3express)
r
r	rr
�ENABLED�DISABLEDr�&override_default_trust_store_from_path�verify_peerr�new_connection_options�_get_crt_throughput_target_gbpsr)r,�crt_credentials_provider�num_threads�target_throughputr.�use_ssl�verify�event_loop_group�
host_resolverr+r0r/�tls_ctx_options�client_tls_option�target_gbpsr%r%r&�create_s3_crt_clientQs84
����rCcCsH|durtj��}t�d|�|durd}n|dd}t�d|�|S)Nz-Recommended CRT throughput target in gbps: %sg$@r(iʚ;z'Using CRT throughput target in gbps: %s)rr�&get_recommended_throughput_target_gbps�logger�debug)r*rBr%r%r&r8�s
��r8c@s�eZdZejZejZejZdZejZd$dd�Z	dd�Z
dd�Z	d%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|durt�|_||_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)�self�
crt_s3_client�crt_request_serializer�osutilr%r%r&�__init__�s��
zCRTTransferManager.__init__cCs|Srr%�rTr%r%r&�	__enter__�szCRTTransferManager.__enter__cGsd}|rd}|�|�dS)NFT��	_shutdown)rT�exc_type�	exc_value�args�cancelr%r%r&�__exit__�szCRTTransferManager.__exit__cCsN|duri}|duri}|�||j�|�|�t|||||d�}|�d|�S)N��bucket�key�fileobj�
extra_args�subscribers�
get_object)�_validate_all_known_args�ALLOWED_DOWNLOAD_ARGS�_validate_if_bucket_supportedr�_submit_transfer)rTrcrdrerfrg�callargsr%r%r&�download�s
�zCRTTransferManager.downloadcCsX|duri}|duri}|�||j�|�|�|�|�t|||||d�}|�d|�S)Nrb�
put_object)ri�ALLOWED_UPLOAD_ARGSrk�&_validate_checksum_algorithm_supportedrrl)rTrercrdrfrgrmr%r%r&�upload�s

�zCRTTransferManager.uploadcCsL|duri}|duri}|�||j�|�|�t||||d�}|�d|�S)N)rcrdrfrg�
delete_object)ri�ALLOWED_DELETE_ARGSrkrrl)rTrcrdrfrgrmr%r%r&�delete
s
�zCRTTransferManager.deleteFcCs|�|�dSrr[�rTr`r%r%r&�shutdown�zCRTTransferManager.shutdowncCs@|jr|j��D]\}}|�|�}|rtd|�d���qdSdS)Nz'TransferManager methods do not support z+ resource. Use direct client calls instead.)� VALIDATE_SUPPORTED_BUCKET_VALUES�_UNSUPPORTED_BUCKET_PATTERNS�items�match�
ValueError)rTrc�resource�patternr|r%r%r&rks

���z0CRTTransferManager._validate_if_bucket_supportedcCs0|D]}||vrtd|�dd�|�����qdS)NzInvalid extra_args key 'z', must be one of: z, )r}�join)rT�actual�allowed�kwargr%r%r&ri)s����z+CRTTransferManager._validate_all_known_argscCsH|�d�}|durdSttjjj�}|��|vr"td|�d|����dS)N�ChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )�get�listrr�S3ChecksumAlgorithm�__members__�upperr})rTrf�checksum_algorithm�supported_algorithmsr%r%r&rq1s
���z9CRTTransferManager._validate_checksum_algorithm_supportedcCs |jD]
}|��s
|��qdSr)rO�doner`�rT�coordinatorr%r%r&�_cancel_transfers<s

��z$CRTTransferManager._cancel_transferscC�|jD]}|��qdSr)rO�resultr�r%r%r&�_finish_transfersA�

�z$CRTTransferManager._finish_transferscCr�r)rO�%wait_until_on_done_callbacks_completer�r%r%r&�_wait_transfers_doneEr�z'CRTTransferManager._wait_transfers_donecCsz|r|��z1z|��Wnty|��Ynty"YnwW|��dSW|��dSW|��dS|��wr)r�r��KeyboardInterrupt�	Exceptionr�rvr%r%r&r\Is����zCRTTransferManager._shutdowncK�|j��dSr)rR�release�rT�kwargsr%r%r&�_release_semaphoreVrxz%CRTTransferManager._release_semaphorec

Cs|jg}t|j|jd�}t|j|�|d�}td	i|��}t|�}|�|�z$|j�	�|j
�|d�}|�|j
�|||||�}	|j
jd	i|	��}
Wn&tyo}z|�|d�|j
j|d|d�}||d�WYd}~n
d}~ww|�|
�|j�|�|jd7_|S)
N)�transfer_id�exception_translator)�metar��queuedTr�)�after_subscribers)�error�r%)r��CRTTransferCoordinatorrSrN�CRTTransferMeta�CRTTransferFuture�AfterDoneHandler�appendrRr!rL�get_crt_callback�get_make_request_argsrJ�make_requestr��
set_exception�set_s3_requestrO)
rT�request_type�	call_args�on_done_after_callsr��
components�future�	afterdone�	on_queued�crt_callargs�crt_s3_request�e�on_doner%r%r&rlYsJ�
�

�����
z#CRTTransferManager._submit_transferr�NN�F)�__name__�
__module__�__qualname__rrjrprtryrzrXrZrarnrrrurwrkrirqr�r�r�r\r�rlr%r%r%r&rG�s.

�





rGc@s>eZdZdZddd�Zedd��Zedd��Zed	d
��ZdS)r�z*Holds metadata about the CRTTransferFutureNcCs||_||_i|_dSr)�_transfer_id�
_call_args�
_user_context)rTr�r�r%r%r&rX�s
zCRTTransferMeta.__init__cC�|jSr)r�rYr%r%r&r���zCRTTransferMeta.call_argscCr�r)r�rYr%r%r&r��r�zCRTTransferMeta.transfer_idcCr�r)r�rYr%r%r&�user_context�r�zCRTTransferMeta.user_contextr�)	r�r�r��__doc__rX�propertyr�r�r�r%r%r%r&r��s


r�c@sDeZdZddd�Zedd��Zdd�Zddd	�Zd
d�Zdd
�Z	dS)r�NcCs ||_|durt�|_||_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)rTr�r�r%r%r&rX�s	
zCRTTransferFuture.__init__cCr�r)r�rYr%r%r&r��r�zCRTTransferFuture.metacCs
|j��Sr)r�r�rYr%r%r&r���
zCRTTransferFuture.donecC�|j�|�dSr)r�r��rT�timeoutr%r%r&r���zCRTTransferFuture.resultcCr�r)r�r`rYr%r%r&r`�rxzCRTTransferFuture.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)r�rr�r��rT�	exceptionr%r%r&r��s
�zCRTTransferFuture.set_exceptionr�r)
r�r�r�rXr�r�r�r�r`r�r%r%r%r&r��s


r�c@�eZdZdd�Zdd�ZdS)�BaseCRTRequestSerializercC�td��)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()��NotImplementedError)rT�
transfer_typer�r%r%r&�serialize_http_request�sz/BaseCRTRequestSerializer.serialize_http_requestcCr�)Nztranslate_crt_exception()r�r�r%r%r&rM�sz0BaseCRTRequestSerializer.translate_crt_exceptionN)r�r�r�r�rMr%r%r%r&r��sr�c@sfeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�BotocoreCRTRequestSerializerNcCsp||_|dur	i}|�||�|jdi|��|_|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.*r%)
�_session�_resolve_client_config�
create_client�_clientr��events�register�_capture_http_request�+_change_response_to_serialized_http_request�_make_fake_http_response)rT�session�
client_kwargsr%r%r&rX�s
�
�
�z%BotocoreCRTRequestSerializer.__init__cCsPd}|��r
|��}d|vr|d}ttd�}|r|�|�}||d<d|d<dS)N�config)�signature_versionr�service_name)�get_default_client_configrr�merge)rTr�r��user_provided_config�
client_configr%r%r&r��s

z3BotocoreCRTRequestSerializer._resolve_client_configc	Cs�t|j�}|j}|jr|�d|j��}g}|j��D]\}}t|t�r+|�||f�q|�|t|d�f�qt	j
�|�}t	j
j|j
|||jd�}|S)N�?zutf-8)�method�path�headers�body_stream)r�urlr��queryr�r{�
isinstance�strr�r�http�HttpHeaders�HttpRequestr��body)	rT�aws_request�	url_parts�crt_path�headers_listr#�value�crt_headers�crt_requestr%r%r&�_crt_request_from_aws_request�s"

�z:BotocoreCRTRequestSerializer._crt_request_from_aws_requestcCs�|�|�}|j�d�durt|j�}|j�d|j�|j�d�dur(|j�d�|j�d�dur<|jdur<|j�	dd�|j�d�durJ|j�d�|S)N�hostzContent-MD5zContent-Length�0zTransfer-Encoding)
r�r�r�rr��set�netloc�remover��add)rT�botocore_http_requestr�r�r%r%r&�_convert_to_crt_http_requests


z9BotocoreCRTRequestSerializer._convert_to_crt_http_requestcKs||jd<dS)N�http_request)�context�rT�requestr�r%r%r&r�.rxz2BotocoreCRTRequestSerializer._capture_http_requestcKs|d}|��|d<dS)Nr�HTTPRequest)�prepare)rTr�parsedr�r
r%r%r&r�1szHBotocoreCRTRequestSerializer._change_response_to_serialized_http_requestcKstj�dditd��S)N���)�botocore�
awsrequest�AWSResponse�FakeRawResponser	r%r%r&r�7s�z5BotocoreCRTRequestSerializer._make_fake_http_responsecCs&t|j|�d|j|jd�|j��dS)N)�Bucket�Keyrr%)�getattrr�rcrdrf)rT�
client_methodr�r%r%r&�_get_botocore_http_request?s���z7BotocoreCRTRequestSerializer._get_botocore_http_requestcCs|�||jj�}|�|�}|Sr)rr�r�r)rTr�r�rr�r%r%r&r�Ds
�
z3BotocoreCRTRequestSerializer.serialize_http_requestcCst|tjj�r|�|�SdSr)r�rr�S3ResponseError� _translate_crt_s3_response_errorr�r%r%r&rMKs
z4BotocoreCRTRequestSerializer.translate_crt_exceptioncCs�|j}|dkr	dSdd�|jD�}|j}|dur$|jjj}|�|�j}nd}tj	�
|�||jd�}|jjj
||d�}|�di��d�}	|jj�|	�}
|
||d�S)	Ni-cSsi|]\}}||�qSr%r%)�.0�k�vr%r%r&�
<dictcomp>XszQBotocoreCRTRequestSerializer._translate_crt_s3_response_error.<locals>.<dictcomp>)r��status_coder�)�shape�Error�Code)�operation_name)rr�r#r�r��
service_model�operation_model�output_shaperr�HeadersDictr��_response_parser�parser��
exceptions�	from_code)rT�s3_response_errorrr�r#r$r �
response_dict�parsed_response�
error_code�error_classr%r%r&rQs&

��z=BotocoreCRTRequestSerializer._translate_crt_s3_response_errorr)r�r�r�rXr�r�rr�r�r�rr�rMrr%r%r%r&r��s

r�c@seZdZddd�ZdS)r�Nccs�	|�|�}|sdS|Vqr)�read)rT�amt�decode_content�chunkr%r%r&�streamos�
�zFakeRawResponse.stream)r1N)r�r�r�r6r%r%r%r&rnsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�BotocoreCRTCredentialsWrappercC�
||_dSr)�_resolved_credentials)rT�resolved_botocore_credentialsr%r%r&rXxr�z&BotocoreCRTCredentialsWrapper.__init__cCs|����}t|j|j|j�Sr)�_get_credentials�get_frozen_credentialsr�
access_key�
secret_key�token)rT�credentialsr%r%r&�__call__{s�z&BotocoreCRTCredentialsWrapper.__call__cCs
t�|�Sr)r�new_delegaterYr%r%r&�to_crt_credentials_provider�r�z9BotocoreCRTCredentialsWrapper.to_crt_credentials_providercCs|jdurt��|jSr)r9rrYr%r%r&r;�s
z.BotocoreCRTCredentialsWrapper._get_credentialsN)r�r�r�rXrArCr;r%r%r%r&r7ws
r7c@sneZdZdZ	ddd�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_requestrP�Lock�_lock�
_exception�_crt_future�Event�_done_event)rTr��
s3_requestr�r%r%r&rX�s
zCRTTransferCoordinator.__init__cCr�r)rErYr%r%r&rL�r�z!CRTTransferCoordinator.s3_requestcCr�r)rKrrYr%r%r&�set_done_callbacks_complete�rxz2CRTTransferCoordinator.set_done_callbacks_completecCr�r)rK�waitr�r%r%r&r��r�z<CRTTransferCoordinator.wait_until_on_done_callbacks_completeFcCsN|j�|��r
|r||_Wd�dSWd�dS1s wYdSr)rGr�rH)rTr�r�r%r%r&r��s�"�z$CRTTransferCoordinator.set_exceptioncCs|jr
|j��dSdSr)rEr`rYr%r%r&r`�s�zCRTTransferCoordinator.cancelc
Cs�|jr|j�z<z|j�|�Wn(ty!|��|j�|��ty7}z|�|�WYd}~nd}~wwW|jrAd|_dSdS|jrId|_wr)rHrIr�r�r`r��handle_exceptionrE)rTr�r�r%r%r&r��s"���

�zCRTTransferCoordinator.resultc
Cs^d}|jr&z|�|�}Wnty%}z
tjd|d�WYd}~nd}~ww|dur-||�|�)NzUnable to translate exception.)�exc_info)rDr�rErF)rT�exc�translated_excr�r%r%r&rO�s��z'CRTTransferCoordinator.handle_exceptioncCs|jdurdS|j��S)NF)rIr�rYr%r%r&r��s

zCRTTransferCoordinator.donecCs||_|jj|_dSr)rE�finished_futurerI)rTrLr%r%r&r��sz%CRTTransferCoordinator.set_s3_request)NNNrr�)r�r�r�r�rXr�rLrMr�r�r`r�rOr�r�r%r%r%r&r��s
�



r�c@sBeZdZdd�Zdd�Z		ddd�Zdd	�Zd
d�Zdd
�ZdS)rKcCs||_||_dSr)�_request_serializer�	_os_utils)rTrV�os_utilsr%r%r&rX�s
zS3ClientArgsCreator.__init__cCs(t|d|��|j�}|||||g|d�S)N�_get_make_request_args_�r�r�r�r��on_done_before_callsr�)r�_default_get_make_request_args)rTr�r�r�r�r��request_args_handlerr%r%r&r��s��z)S3ClientArgsCreator.get_make_request_argsNcs����fdd�}|S)Ncsfg}�dur
|�7}|t���7}�dur|�7}|D]}�dkr)||dd�q||i|��qdS)N�progressr)�bytes_transferred)r)r_r��callbacks_list�callback�r��before_subscribers�
callback_typer�r%r&�invoke_all_callbacks�s�zBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacksr%)rTr�rbrar�rcr%r`r&r��sz$S3ClientArgsCreator.get_crt_callbackcCs�d}t|jt�r|j}|j�|�}||jd<n|j|jd<|j�dd���}	tj	j
tj	j|	tj	jj
d�}
d|jd<|j||||||d�}||d	<|
|d
<|S)N�
ContentLength�Bodyr��CRC32)�	algorithm�locationzoverride-to-be-removed�
ContentMD5rX�
send_filepath�checksum_config)r�rer�rU�
get_file_sizerf�popr�rr�S3ChecksumConfigr��S3ChecksumLocation�TRAILERrZ)rTr�r�r�r�rYr�rj�data_lenr�rk�make_request_argsr%r%r&�!_get_make_request_args_put_objects6	��
�
�z5S3ClientArgsCreator._get_make_request_args_put_objectcCs�d}d}tjjdd�}	t|jt�r&|j}
|j�|
�}|�t	||
||j��nt
|j�}|j||||||d�}||d<||d<|	|d<|S)NT)�validate_responserX�
recv_filepath�on_bodyrk)rrrnr�rer�rU�get_temp_filenamer��RenameTempFileHandler�OnBodyFileObjWriterrZ)rTr�r�r�r�rYr�rurvrk�final_filepathrrr%r%r&�!_get_make_request_args_get_object,s0	
��
�z5S3ClientArgsCreator._get_make_request_args_get_objectcCs�|j�||�tt|��tj�|�|d||�|�|d�d�}|dtjkr3d�dd�|�d�D��|d	<t	|j
�r@ttj
d
�|d<|S)Nr�r\)r
�typer��on_progressr|�css�|]}|��VqdSr)�title)r�xr%r%r&�	<genexpr>is�
�zES3ClientArgsCreator._default_get_make_request_args.<locals>.<genexpr>�_r#)rg�signing_config)rTr�rrr��DEFAULTr�r��splitrrcrr�V4_S3EXPRESS)rTr�r�r�r�rYr�rrr%r%r&rZPs(
���
�
�

�z2S3ClientArgsCreator._default_get_make_request_argsr�)	r�r�r�rXr�r�rsr{rZr%r%r%r&rK�s
�*$rKc@r�)rxcCs||_||_||_||_dSr)r��_final_filename�_temp_filenamerI)rTr��final_filename�
temp_filenamerWr%r%r&rXus
zRenameTempFileHandler.__init__c
Ksx|d}|r|j�|j�dSz|j�|j|j�WdSty;}z|j�|j�|j�|�WYd}~dSd}~ww)Nr�)rI�remove_filer��rename_filer�r�r�r�)rTr�r�r�r%r%r&rA{s
���zRenameTempFileHandler.__call__N�r�r�r�rXrAr%r%r%r&rxtsrxc@r�)r�cCr8r)r�r�r%r%r&rX�r�zAfterDoneHandler.__init__cKr�r)r�rMr�r%r%r&rA�rxzAfterDoneHandler.__call__Nr�r%r%r%r&r���r�c@r�)rycCr8r)�_fileobj)rTrer%r%r&rX�r�zOnBodyFileObjWriter.__init__cKr�r)r��write)rTr5r�r%r%r&rA�r�zOnBodyFileObjWriter.__call__Nr�r%r%r%r&ry�r�ryr)@�loggingrP�ior�awscrt.httpr�	awscrt.s3�botocore.awsrequestr�botocore.session�awscrt.authrrrr�	awscrt.iorrr	r
rrr
rr�botocore.compatr�botocore.configr�botocore.exceptionsr�s3transfer.constantsr�s3transfer.exceptionsr�s3transfer.futuresrr�s3transfer.managerr�s3transfer.utilsrrrr�	getLoggerr�rErr'rCr8rGr�r�r�r�rr7r�rKrxr�ryr%r%r%r&�<module>sZ

�
UL&	I"