HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python311/lib/python3.11/site-packages/s3transfer/__pycache__/crt.cpython-311.pyc
�

/�;f�y���ddlZddlZddlmZddlZddlZddlZddl	Zddl
mZmZm
Z
mZddlmZmZmZmZmZddlmZmZmZddlmZddlmZddlmZdd	lmZdd
lm Z ddl!m"Z"ddl#m$Z$m%Z%dd
l&m'Z'm(Z(m)Z)m*Z*ej+e,��Z-da.d�Z/dddde zddfd�Z0d+d�Z1Gd�d��Z2Gd�de%��Z3Gd�de$��Z4Gd�d��Z5Gd�de5��Z6Gd�de��Z7Gd�d ��Z8Gd!�d"��Z9Gd#�d$��Z:Gd%�d&��Z;Gd'�d(��Z<Gd)�d*��Z=dS),�N)�BytesIO)�AwsCredentials�AwsCredentialsProvider�AwsSigningAlgorithm�AwsSigningConfig)�ClientBootstrap�ClientTlsContext�DefaultHostResolver�EventLoopGroup�TlsContextOptions)�S3Client�S3RequestTlsMode�
S3RequestType)�UNSIGNED)�urlsplit)�Config)�NoCredentialsError)�MB)�TransferNotDoneError)�BaseTransferFuture�BaseTransferMeta)�CallArgs�OSUtils�
get_callbacks�is_s3express_bucketc��t�Htj�|��}	|���n#t
$rYdSwxYw|atS�N)�CRT_S3_PROCESS_LOCK�awscrt�s3�CrossProcessLock�acquire�RuntimeError)�name�crt_locks  �A/opt/alt/python311/lib/python3.11/site-packages/s3transfer/crt.py�acquire_crt_s3_process_lockr'7sk���"��9�-�-�d�3�3��	����������	�	�	��4�4�		����
'���s�=�
A�
A�Tc
��t|��}t|��}t||��}	d}
|rtjntj}|�Qt
��}|r|�|���nd|_t|��}
|
�
��}
t|���}t|	|||||
|d���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)
rr
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,r1r0�tls_ctx_options�client_tls_option�target_gbpss               r&�create_s3_crt_clientrDPs��h&�k�2�2��'�(8�9�9�M�� 0�-�@�@�I�!��%,�J�� � �1A�1J�
���+�-�-���	0��B�B�"�
C�
�
�
�
�+0�O�'�,�_�=�=��!2�!I�!I�!K�!K��1�):����K����4���5�*��	�	�	�	�c���|�>tj���}t�d|��|�d}n|dzdz}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+rCs  r&r9r9�sp��'�/��i�F�F�H�H�����;�[�	
�	
�	
����K��7��:�]�J��
�L�L�:�K�H�H�H��rEc�p�eZdZdd�Zd�Zd�Z	dd�Zdd�Zdd�Zdd	�Z	d
�Z
d�Zd�Zd
�Z
dd�Zd�Zd�ZdS)�CRTTransferManagerNc���|�t��|_||_t||j��|_|j|_g|_tj	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�osutils    r&�__init__zCRTTransferManager.__init__�so���>�"�9�9�D�L�+��� 3�"�D�L�!
�!
���
#�:�	
�&�%'��!�#�-�c�2�2�������rEc��|Sr��rYs r&�	__enter__zCRTTransferManager.__enter__�s���rEc�<�d}|rd}|�|��dS)NFT��	_shutdown)rY�exc_type�	exc_value�args�cancels     r&�__exit__zCRTTransferManager.__exit__�s,�����	��F����v�����rEc�f�|�i}|�i}t|||||���}|�d|��S)N��bucket�key�fileobj�
extra_args�subscribers�
get_object�r�_submit_transfer)rYrlrmrnrorp�callargss       r&�downloadzCRTTransferManager.download�sU�����J����K�����!�#�
�
�
���$�$�\�8�<�<�<rEc��|�i}|�i}|�|��t|||||���}|�d|��S)Nrk�
put_object)�&_validate_checksum_algorithm_supportedrrs)rYrnrlrmrorprts       r&�uploadzCRTTransferManager.upload�sg�����J����K��3�3�J�?�?�?�����!�#�
�
�
���$�$�\�8�<�<�<rEc�d�|�i}|�i}t||||���}|�d|��S)N)rlrmrorp�
delete_objectrr)rYrlrmrorprts      r&�deletezCRTTransferManager.delete�sP�����J����K����!�#�	
�
�
���$�$�_�h�?�?�?rEFc�0�|�|��dSrrc�rYrhs  r&�shutdownzCRTTransferManager.shutdown
s�����v�����rEc���|�d��}|�dSttjjj��}|���|vrtd|�d|�����dS)N�ChecksumAlgorithmzChecksumAlgorithm: z* not supported. Supported algorithms are: )�get�listrr �S3ChecksumAlgorithm�__members__�upper�
ValueError)rYro�checksum_algorithm�supported_algorithmss    r&rxz9CRTTransferManager._validate_checksum_algorithm_supported
s���'�^�^�,?�@�@���%��F�#�F�I�$A�$M�N�N���#�#�%�%�-A�A�A��D�&8�D�D�-A�D�D���
�B�ArEc�j�|jD]*}|���s|����+dSr)rT�donerh�rY�coordinators  r&�_cancel_transfersz$CRTTransferManager._cancel_transferssE���4�	%�	%�K��#�#�%�%�
%��"�"�$�$�$��	%�	%rEc�B�|jD]}|����dSr)rT�resultr�s  r&�_finish_transfersz$CRTTransferManager._finish_transferss3���4�	!�	!�K���� � � � �	!�	!rEc�B�|jD]}|����dSr)rT�%wait_until_on_done_callbacks_completer�s  r&�_wait_transfers_donez'CRTTransferManager._wait_transfers_done!s7���4�	@�	@�K��=�=�?�?�?�?�	@�	@rEc��|r|���	|���n/#t$r|���Ynt$rYnwxYw|���dS#|���wxYwr)r�r��KeyboardInterrupt�	Exceptionr�r~s  r&rdzCRTTransferManager._shutdown%s����	%��"�"�$�$�$�	(��"�"�$�$�$�$�� �	%�	%�	%��"�"�$�$�$�$�$��	�	�	��D�	����
�%�%�'�'�'�'�'��D�%�%�'�'�'�'���s2�-�A2�A�A2�
	A�A2�A�A2�2Bc�8�|j���dSr)rW�release�rY�kwargss  r&�_release_semaphorez%CRTTransferManager._release_semaphore2s������!�!�!�!�!rEc���|jg}t|j|j���}t	|j|��|d�}td	i|��}t
|��}|�|��	|j�	��|j
�|d��}|��|j
�|||||��}	|j
jd	i|	��}
|�|
��nV#t $rI}|�|d��|j
�|d|���}||���Yd}~nd}~wwxYw|j�|��|xjdz
c_|S)
N)�transfer_id�exception_translator)�metar��queuedTr�)�after_subscribers)�error�r_)r��CRTTransferCoordinatorrXrS�CRTTransferMeta�CRTTransferFuture�AfterDoneHandler�appendrWr"rQ�get_crt_callback�get_make_request_argsrO�make_request�set_s3_requestr��
set_exceptionrT)
rY�request_type�	call_args�on_done_after_callsr��
components�future�	afterdone�	on_queued�crt_callargs�crt_s3_request�e�on_dones
             r&rsz#CRTTransferManager._submit_transfer5s���#�6�7��,��(�!%�!?�
�
�
��
$�D�$4�i�@�@�&�
�
�
�#�0�0�Z�0�0��$�[�1�1�	��"�"�9�-�-�-�	7��O�#�#�%�%�%��-�>�>�����I�
�I�K�K�K��0�F�F�����#���L�>�T�0�=�M�M��M�M�N�
�&�&�~�6�6�6�6���	�	�	��%�%�a��.�.�.��+�<�<���2E�=���G�
�G�!��������������	����	
�!�(�(��5�5�5����A�����
s�-A.C1�1
E�;?D?�?Er�NN�F)�__name__�
__module__�__qualname__r]rariruryr|rrxr�r�r�rdr�rsr_rEr&rKrK�s����������:������BF�=�=�=�=� 
=�
=�
=�
=�@�@�@�@�����	�	�	�%�%�%�
!�!�!�@�@�@�(�(�(�(�"�"�"�'�'�'�'�'rErKc�\�eZdZdZdd�Zed���Zed���Zed���ZdS)r�z*Holds metadata about the CRTTransferFutureNc�0�||_||_i|_dSr)�_transfer_id�
_call_args�
_user_context)rYr�r�s   r&r]zCRTTransferMeta.__init__bs��'���#�������rEc��|jSr)r�r`s r&r�zCRTTransferMeta.call_argsgs
����rEc��|jSr)r�r`s r&r�zCRTTransferMeta.transfer_idks��� � rEc��|jSr)r�r`s r&�user_contextzCRTTransferMeta.user_contextos���!�!rEr�)	r�r�r��__doc__r]�propertyr�r�r�r_rEr&r�r�_s������4�4� � � � �
����X���!�!��X�!��"�"��X�"�"�"rEr�c�F�eZdZdd�Zed���Zd�Zd	d�Zd�Zd�Z	dS)
r�Nc�L�||_|�t��|_||_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)rYr�r�s   r&r]zCRTTransferFuture.__init__us+����
��<�(�*�*�D�J�'����rEc��|jSr)r�r`s r&r�zCRTTransferFuture.meta�s
���z�rEc�4�|j���Sr)r�r�r`s r&r�zCRTTransferFuture.done�s��� �%�%�'�'�'rEc�:�|j�|��dSr)r�r��rY�timeouts  r&r�zCRTTransferFuture.result�s���� � ��)�)�)�)�)rEc�8�|j���dSr)r�rhr`s r&rhzCRTTransferFuture.cancel�s���� � �"�"�"�"�"rEc��|���std���|j�|d���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��rY�	exceptions  r&r�zCRTTransferFuture.set_exception�sM���y�y�{�{�	�&����
�	
��'�'�	�D�'�A�A�A�A�ArEr�r)
r�r�r�r]r�r�r�r�rhr�r_rEr&r�r�ts�������(�(�(�(�����X��(�(�(�*�*�*�*�#�#�#�B�B�B�B�BrEr�c��eZdZd�Zd�ZdS)�BaseCRTRequestSerializerc� �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)rY�
transfer_typer�s   r&�serialize_http_requestz/BaseCRTRequestSerializer.serialize_http_request�s��"�"<�=�=�=rEc� �td���)Nztranslate_crt_exception()r�r�s  r&rRz0BaseCRTRequestSerializer.translate_crt_exception�s��!�"=�>�>�>rEN)r�r�r�r�rRr_rEr&r�r��s2������>�>�>�?�?�?�?�?rEr�c�R�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
dS)�BotocoreCRTRequestSerializerNc�h�||_|�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)rY�session�
client_kwargss   r&r]z%BotocoreCRTRequestSerializer.__init__�s��� ��
�� ��M��#�#�G�]�;�;�;�,�w�,�=�=�}�=�=������ �)�)�"�D�$>�	
�	
�	
�	
��� �)�)��t�O�	
�	
�	
�	
��� �)�)��� =�	
�	
�	
�	
�	
rEc���d}|���r|���}d|vr|d}tt���}|r|�|��}||d<d|d<dS)N�config)�signature_versionr �service_name)�get_default_client_configrr�merge)rYr�r��user_provided_config�
client_configs     r&r�z3BotocoreCRTRequestSerializer._resolve_client_config�s���#���,�,�.�.�	G�#*�#D�#D�#F�#F� ��}�$�$�#0��#:� ���:�:�:�
��	F�0�6�6�}�E�E�M�"/�
�h��(,�
�n�%�%�%rEc���t|j��}|j}|jr|�d|j��}g}|j���D]W\}}t
|t��r|�||f���2|�|t|d��f���Xtj
�|��}tj
�|j
|||j���}|S)N�?zutf-8)�method�path�headers�body_stream)r�urlr��queryr��items�
isinstance�strr�r�http�HttpHeaders�HttpRequestr��body)	rY�aws_request�	url_parts�crt_path�headers_listr$�value�crt_headers�crt_requests	         r&�_crt_request_from_aws_requestz:BotocoreCRTRequestSerializer._crt_request_from_aws_request�s����[�_�-�-�	��>���?�	7�"�6�6�Y�_�6�6�H���&�.�4�4�6�6�	A�	A�K�D�%��%��%�%�
A��#�#�T�5�M�2�2�2�2��#�#�T�3�u�g�+>�+>�$?�@�@�@�@��k�-�-�l�;�;���k�-�-��%���#�(�	.�
�
���rEc��|�|��}|j�d���4t|j��}|j�d|j��|j�d���|j�d��|j�d���"|j�|j�	dd��|j�d���|j�d��|S)N�hostzContent-MD5zContent-Length�0zTransfer-Encoding)
rr�r�rr��set�netloc�remover�add)rY�botocore_http_requestrrs    r&�_convert_to_crt_http_requestz9BotocoreCRTRequestSerializer._convert_to_crt_http_request�s����8�8�9N�O�O����"�"�6�*�*�2� �!6�!:�;�;�I���#�#�F�I�,<�=�=�=���"�"�=�1�1�=���&�&�}�5�5�5���"�"�#3�4�4�<�$�)�1��#�'�'�(8�#�>�>�>���"�"�#6�7�7�C���&�&�':�;�;�;��rEc��||jd<dS)N�http_request)�context�rY�requestr�s   r&r�z2BotocoreCRTRequestSerializer._capture_http_request
s��*1����'�'�'rEc�D�|d}|���|d<dS)Nr�HTTPRequest)�prepare)rYr�parsedr�rs     r&r�zHBotocoreCRTRequestSerializer._change_response_to_serialized_http_request
s(���.�)�� '��� 1� 1��}���rEc�`�tj�dditd����S)N��rE)�botocore�
awsrequest�AWSResponse�FakeRawResponsers   r&r�z5BotocoreCRTRequestSerializer._make_fake_http_responses1���"�.�.�����C� � �	
�
�	
rEc�h�t|j|��d|j|jd�|j��dS)N)�Bucket�Keyrr_)�getattrr�rlrmro)rY�
client_methodr�s   r&�_get_botocore_http_requestz7BotocoreCRTRequestSerializer._get_botocore_http_requestsI��3�w�t�|�]�3�3�
��#���
�
�:C�:N�
�
�
��	rEc�p�|�||jj��}|�|��}|Sr)r*r�r�r)rYr�r�rrs     r&r�z3BotocoreCRTRequestSerializer.serialize_http_request s>�� $� ?� ?��6�;�0�!
�!
���7�7�8M�N�N���rEc�n�t|tjj��r|�|��SdSr)r�rr �S3ResponseError� _translate_crt_s3_response_errorr�s  r&rRz4BotocoreCRTRequestSerializer.translate_crt_exception's2���i���!:�;�;�	��8�8��C�C�C��4rEc���|j}|dkrdSd�|jD��}|j}|�,|jjj}|�|��j}nd}tj	�
|��||jd�}|jj�
||���}|�di���d��}	|jj�|	��}
|
||���S)Ni-c��i|]\}}||��	Sr_r_)�.0�k�vs   r&�
<dictcomp>zQBotocoreCRTRequestSerializer._translate_crt_s3_response_error.<locals>.<dictcomp>4s��>�>�>�D�A�q�1�a�>�>�>rE)r��status_coder)�shape�Error�Code)�operation_name)r5r�r9r�r��
service_model�operation_model�output_shaper!r"�HeadersDictr�_response_parser�parser��
exceptions�	from_code)rY�s3_response_errorr5r�r9r:r6�
response_dict�parsed_response�
error_code�error_classs           r&r.z=BotocoreCRTRequestSerializer._translate_crt_s3_response_error-s��'�3�������4�>�>�$5�$=�>�>�>��*�9���%� �L�-�;�M�!�1�1�.�A�A�N�E�E��E� �*�6�6�w�?�?�&�%�*�
�
�
�
�,�7�=�=���>�
�
��%�(�(��"�5�5�9�9�&�A�A�
��l�-�7�7�
�C�C���{�?�>�J�J�J�JrEr)r�r�r�r]r�rrr�r�r�r*r�rRr.r_rEr&r�r��s�������
�
�
�
�6-�-�-����,���<2�2�2�2�2�2�
�
�
����
������K�K�K�K�KrEr�c��eZdZdd�ZdS)r$�Nc#�DK�	|�|��}|sdS|V��r)�read)rY�amt�decode_content�chunks    r&�streamzFakeRawResponse.streamKs5����	��I�I�c�N�N�E��
����K�K�K�		rE)rHN)r�r�r�rNr_rEr&r$r$Js(�����������rEr$c�&�eZdZd�Zd�Zd�Zd�ZdS)�BotocoreCRTCredentialsWrapperc��||_dSr)�_resolved_credentials)rY�resolved_botocore_credentialss  r&r]z&BotocoreCRTCredentialsWrapper.__init__Ts��%B��"�"�"rEc��|������}t|j|j|j��Sr)�_get_credentials�get_frozen_credentialsr�
access_key�
secret_key�token)rY�credentialss  r&�__call__z&BotocoreCRTCredentialsWrapper.__call__WsA���+�+�-�-�D�D�F�F����"�K�$:�K�<M�
�
�	
rEc�*�tj|��Sr)r�new_delegater`s r&�to_crt_credentials_providerz9BotocoreCRTCredentialsWrapper.to_crt_credentials_provider]s��%�2�4�8�8�8rEc�:�|j�t���|jSr)rRrr`s r&rUz.BotocoreCRTCredentialsWrapper._get_credentials`s ���%�-�$�&�&�&��)�)rEN)r�r�r�r]r[r^rUr_rEr&rPrPSsS������C�C�C�
�
�
�9�9�9�*�*�*�*�*rErPc�h�eZdZdZ	dd�Zed���Zd�Zdd�Zdd�Z	d	�Z
dd
�Zd�Zd�Z
d
�ZdS)r�z-A helper class for managing CRTTransferFutureNc��||_||_||_tj��|_d|_d|_tj��|_	dSr)
r��_exception_translator�_s3_requestrU�Lock�_lock�
_exception�_crt_future�Event�_done_event)rYr��
s3_requestr�s    r&r]zCRTTransferCoordinator.__init__isP��'���%9��"�%����^�%�%��
�������$�?�,�,����rEc��|jSr)rcr`s r&rjz!CRTTransferCoordinator.s3_requestts����rEc�8�|j���dSr)rirr`s r&�set_done_callbacks_completez2CRTTransferCoordinator.set_done_callbacks_completexs����������rEc�:�|j�|��dSr)ri�waitr�s  r&r�z<CRTTransferCoordinator.wait_until_on_done_callbacks_complete{s������g�&�&�&�&�&rEFc��|j5|���r|r||_ddd��dS#1swxYwYdSr)rer�rf)rYr�r�s   r&r�z$CRTTransferCoordinator.set_exception~s���
�Z�	,�	,��9�9�;�;�
,�(�
,�"+���	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�3�7�7c�J�|jr|j���dSdSr)rcrhr`s r&rhzCRTTransferCoordinator.cancel�s2����	&���#�#�%�%�%�%�%�	&�	&rEc�h�|jr|j�	|j�|��nd#t$r0|���|j�|���t
$r}|�|��Yd}~nd}~wwxYw|jr	d|_dSdS#|jrd|_wxYwr)rfrgr�r�rhr��handle_exceptionrc)rYr�r�s   r&r�zCRTTransferCoordinator.result�s����?�	"��/�!�
	(���#�#�G�,�,�,�,�� �	�	�	��K�K�M�M�M���#�#�G�,�,�,���	%�	%�	%��!�!�!�$�$�$�$�$�$�$�$�����	%������
(�#'�� � � �
(�
(��t��
(�#'�� �'�'�'�'s-�+�B!�AB�-B�B!�B�B!�!B1c��d}|jrJ	|�|��}n3#t$r&}t�d|���Yd}~nd}~wwxYw|�||�|�)NzUnable to translate exception.)�exc_info)rbr�rHrI)rY�exc�translated_excr�s    r&rsz'CRTTransferCoordinator.handle_exception�s������%�	�
�!%�!;�!;�C�!@�!@�����
�
�
����=���J�J�J����������	
����
�%� �c�)��Is�!�
A�A�Ac�F�|j�dS|j���S)NF)rgr�r`s r&r�zCRTTransferCoordinator.done�s%����#��5���$�$�&�&�&rEc�6�||_|jj|_dSr)rc�finished_futurerg)rYrjs  r&r�z%CRTTransferCoordinator.set_s3_request�s��%����+�;����rE)NNNrr�)r�r�r�r�r]r�rjrmr�r�rhr�rsr�r�r_rEr&r�r�fs�������7�7�GK�	-�	-�	-�	-�� � ��X� ����'�'�'�'�,�,�,�,�
&�&�&�
(�
(�
(�
(�
�
�
�'�'�'�
<�<�<�<�<rEr�c�8�eZdZd�Zd�Z		dd�Zd�Zd�Zd�ZdS)	rPc�"�||_||_dSr)�_request_serializer�	_os_utils)rYr[�os_utilss   r&r]zS3ClientArgsCreator.__init__�s��#9�� �!����rEc�V�t|d|��|j��}|||||g|���S)N�_get_make_request_args_�r�r�r�r��on_done_before_callsr�)r(�_default_get_make_request_args)rYr�r�r�r�r��request_args_handlers       r&r�z)S3ClientArgsCreator.get_make_request_args�sV�� '��4�l�4�4��/� 
� 
��
$�#�%��#��!#� 3�

�
�
�	
rENc����������fd�}|S)Nc���g}��|�z
}|t����z
}��|�z
}|D]#}�dkr||d����||i|���$dS)N�progressr)�bytes_transferred)r)rgr��callbacks_list�callbackr��before_subscribers�
callback_typer�s    ����r&�invoke_all_callbackszBS3ClientArgsCreator.get_crt_callback.<locals>.invoke_all_callbacks�s�����N�!�-��"4�4���m�F�M�B�B�B�N� �,��"3�3��*�
.�
.��!�J�.�.��H�t�A�w�7�7�7�7�7��H�d�-�f�-�-�-�-�
.�
.rEr_)rYr�r�r�r�r�s ```` r&r�z$S3ClientArgsCreator.get_crt_callback�s6������	.�	.�	.�	.�	.�	.�	.�	.� $�#rEc��d}t|jt��r,|j}|j�|��}||jd<n|j|jd<|j�dd�����}	tj	�
tj	j|	tj	jj
���}
d|jd<|�||||||���}||d	<|
|d
<|S)N�
ContentLength�Bodyr��CRC32)�	algorithm�locationzoverride-to-be-removed�
ContentMD5r��
send_filepath�checksum_config)r�rnrr~�
get_file_sizero�popr�rr �S3ChecksumConfigr��S3ChecksumLocation�TRAILERr�)rYr�r�r�r�r�r�r��data_lenr�r��make_request_argss            r&�!_get_make_request_args_put_objectz5S3ClientArgsCreator._get_make_request_args_put_object�s���
��i�'��-�-�	=�%�-�M��~�3�3�M�B�B�H�4<�I� ��1�1�+4�+<�I� ��(�&�1�5�5���
�
�
�%�'�'�	�!�)�4�4��i�3�4F�G��Y�1�9�5�
�
��.F�	��\�*� �?�?�%��#��!5� 3�
@�
�
��.;��/�*�/>��+�,� � rEc��d}d}tj�d���}	t|jt
��rL|j}
|j�|
��}|�t||
||j����nt|j��}|�||||||���}||d<||d<|	|d<|S)NT)�validate_responser��
recv_filepath�on_bodyr�)rr r�r�rnrr~�get_temp_filenamer��RenameTempFileHandler�OnBodyFileObjWriterr�)rYr�r�r�r�r�r�r�r�r��final_filepathr�s            r&�!_get_make_request_args_get_objectz5S3ClientArgsCreator._get_make_request_args_get_objects����
��� �)�4�4�t�4�L�L���i�'��-�-�		=�&�.�N� �N�<�<�^�L�L�M� �'�'�%��������
�
�
�
�*�)�*;�<�<�G� �?�?�%��#��!5� 3�
@�
�
��.;��/�*�'.��)�$�/>��+�,� � rEc�\�|j�||��tt|���tj��|�|d||��|�|d��d�}t|j��rttj���|d<|S)Nr�r�)r�typer��on_progress)r��signing_config)r}r�r(rr��DEFAULTr�rrlrr�V4_S3EXPRESS)rYr�r�r�r�r�r�r�s        r&r�z2S3ClientArgsCreator._default_get_make_request_args,s����/�F�F��f�����|�1�1�3�3�]�5J����,�,��� 4�6I��� �0�0���D�D�
�
���y�/�0�0�	�2B�-�:�3�3�3��.�/�!� rEr�)	r�r�r�r]r�r�r�r�r�r_rEr&rPrP�s}������"�"�"�
�
�
�* ��$�$�$�$�2(!�(!�(!�T"!�"!�"!�H!�!�!�!�!rErPc��eZdZd�Zd�ZdS)r�c�>�||_||_||_||_dSr)r��_final_filename�_temp_filenamerN)rYr��final_filename�
temp_filenamer\s     r&r]zRenameTempFileHandler.__init__Is%��'���-���+�������rEc�J�|d}|r!|j�|j��dS	|j�|j|j��dS#t
$rD}|j�|j��|j�|��Yd}~dSd}~wwxYw)Nr�)rN�remove_filer��rename_filer�r�r�r�)rYr�r�r�s    r&r[zRenameTempFileHandler.__call__Os����w����
	3��L�$�$�T�%8�9�9�9�9�9�
3���(�(��'��)=��������
3�
3�
3���(�(��)<�=�=�=��!�/�/��2�2�2�2�2�2�2�2�2�����
3���s�%A�
B"�9B�B"N�r�r�r�r]r[r_rEr&r�r�Hs2���������3�3�3�3�3rEr�c��eZdZd�Zd�ZdS)r�c��||_dSr)r�r�s  r&r]zAfterDoneHandler.__init___s��'����rEc�8�|j���dSr)r�rmr�s  r&r[zAfterDoneHandler.__call__bs����5�5�7�7�7�7�7rENr�r_rEr&r�r�^s2������(�(�(�8�8�8�8�8rEr�c��eZdZd�Zd�ZdS)r�c��||_dSr)�_fileobj)rYrns  r&r]zOnBodyFileObjWriter.__init__gs
����
�
�
rEc�:�|j�|��dSr)r��write)rYrMr�s   r&r[zOnBodyFileObjWriter.__call__js���
���E�"�"�"�"�"rENr�r_rEr&r�r�fs2������ � � �#�#�#�#�#rEr�r)>�loggingrU�ior�awscrt.httpr�	awscrt.s3�botocore.awsrequestr!�botocore.session�awscrt.authrrrr�	awscrt.iorr	r
rrr
rrr�botocore.compatr�botocore.configr�botocore.exceptionsr�s3transfer.constantsr�s3transfer.exceptionsr�s3transfer.futuresrr�s3transfer.utilsrrrr�	getLoggerr�rHrr'rDr9rKr�r�r�r�r$rPr�rPr�r�r�r_rEr&�<module>r�sY����������������������������������������������������������@�?�?�?�?�?�?�?�?�?�������$�$�$�$�$�$�"�"�"�"�"�"�2�2�2�2�2�2�#�#�#�#�#�#�6�6�6�6�6�6�C�C�C�C�C�C�C�C�������������
��	�8�	$�	$�������6"����"�f���R�R�R�R�j����$e�e�e�e�e�e�e�e�P"�"�"�"�"�&�"�"�"�*#B�#B�#B�#B�#B�*�#B�#B�#B�L?�?�?�?�?�?�?�?�&ZK�ZK�ZK�ZK�ZK�#;�ZK�ZK�ZK�z�����g����*�*�*�*�*�*�*�*�&F<�F<�F<�F<�F<�F<�F<�F<�RV!�V!�V!�V!�V!�V!�V!�V!�r3�3�3�3�3�3�3�3�,8�8�8�8�8�8�8�8�#�#�#�#�#�#�#�#�#�#rE