Ë
    äš¾jþG  ã                   ó>  — d dl Z d dlZd dlmZmZ d dlmZmZmZm	Z	m
Z
mZmZ ddlmZmZ ddlmZ ddlmZ ddlmZ d	d
lmZ 	 d dlmZ d dlmZmZ d dlmZ d dlm Z  d dl!Z" ed«       G d„ de«      «       Z%e%jL                  e%_        y# e#$ r ded   _$        Y Œ9w xY w)é    N)ÚPathÚPurePosixPath)ÚAnyÚCallableÚDictÚIterableÚOptionalÚTupleÚUnioné   )ÚClientÚregister_client_class)Úimplementation_registry)ÚFileCacheMode)ÚCloudPathExceptioné   )ÚS3Path)ÚSession)ÚTransferConfigÚ
S3Transfer)ÚConfig)ÚClientErrorFÚs3c                   óF  ‡ — e Zd ZdZddddddddddddej
                  dfdee   dee   dee   dee   ded	   d
ee   ded   dee	ee
f      dee	eej                  f      dee   dee   ded   dee   dee   fˆ fd„Zd+dee   fd„Zdedeeef   fd„Zdede	eej                  f   defd„Zdedee   fd„Zdedefd„Zdefd„Zd,dedeeeef      fd „Zd-d!ed"ed#edefd$„Zd-ded%eddfd&„Zde	eej                  f   dedefd'„Zdedefd(„Z d.ded)e!defd*„Z"ˆ xZ#S )/ÚS3ClientzêClient class for AWS S3 which handles authentication with AWS for [`S3Path`](../s3path/)
    instances. See documentation for the [`__init__` method][cloudpathlib.s3.s3client.S3Client.__init__]
    for detailed authentication options.NFÚaws_access_key_idÚaws_secret_access_keyÚaws_session_tokenÚno_sign_requestÚbotocore_sessionzbotocore.session.SessionÚprofile_nameÚboto3_sessionr   Úfile_cache_modeÚlocal_cache_dirÚendpoint_urlÚaddressing_styleÚboto3_transfer_configr   Úcontent_type_methodÚ
extra_argsc                 óø  •— |
xs t        j                  d«      }
|�|| _        nt        |||||¬«      | _        |rd|ini | _        | j                  |rt        j                  j                  nd¬«      | _	        | j                  j                  d|
| j                  ¬«      | _        | j                  j                  d|
| j                  ¬«      | _        || _        |€i }|| _        |j                  «       D ��ci c]  \  }}|t         j"                  v sŒ||“Œ c}}| _        |j                  «       D ��ci c]  \  }}|t         j&                  v sŒ||“Œ c}}| _        |j                  «       D ��ci c]  \  }}|t         j*                  v sŒ||“Œ c}}| _        dD �ci c]   }|| j                  v r|| j                  |   “Œ" c}| _        |
| _        t2        ‰| �i  |	||¬	«       yc c}}w c c}}w c c}}w c c}w )
aT  Class constructor. Sets up a boto3 [`Session`](
        https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html).
        Directly supports the same authentication interface, as well as the same environment
        variables supported by boto3. See [boto3 Session documentation](
        https://boto3.amazonaws.com/v1/documentation/api/latest/guide/session.html).

        If no authentication arguments or environment variables are provided, then the client will
        be instantiated as anonymous, which will only have access to public buckets.

        Args:
            aws_access_key_id (Optional[str]): AWS access key ID.
            aws_secret_access_key (Optional[str]): AWS secret access key.
            aws_session_token (Optional[str]): Session key for your AWS account. This is only
                needed when you are using temporarycredentials.
            no_sign_request (Optional[bool]): If `True`, credentials are not looked for and we use unsigned
                requests to fetch resources. This will only allow access to public resources. This is equivalent
                to `--no-sign-request` in the [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/).
            botocore_session (Optional[botocore.session.Session]): An already instantiated botocore
                Session.
            profile_name (Optional[str]): Profile name of a profile in a shared credentials file.
            boto3_session (Optional[Session]): An already instantiated boto3 Session.
            file_cache_mode (Optional[Union[str, FileCacheMode]]): How often to clear the file cache; see
                [the caching docs](https://cloudpathlib.drivendata.org/stable/caching/) for more information
                about the options in cloudpathlib.eums.FileCacheMode.
            local_cache_dir (Optional[Union[str, os.PathLike]]): Path to directory to use as cache
                for downloaded files. If None, will use a temporary directory. Default can be set with
                the `CLOUDPATHLIB_LOCAL_CACHE_DIR` environment variable.
            endpoint_url (Optional[str]): S3 server endpoint URL to use for the constructed boto3 S3 resource and client.
                Parameterize it to access a customly deployed S3-compatible object store such as MinIO, Ceph or any other.
            addressing_style (Optional[str]): S3 addressing style to pass through to boto3's S3 config.
                Use `"virtual"` for virtual-hosted style URLs; boto3's other values (`"path"` and
                `"auto"`) are accepted as well. If None, boto3's default behavior is used.
            boto3_transfer_config (Optional[dict]): Instantiated TransferConfig for managing
                [s3 transfers](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.TransferConfig)
            content_type_method (Optional[Callable]): Function to call to guess media type (mimetype) when
                writing a file to the cloud. Defaults to `mimetypes.guess_type`. Must return a tuple (content type, content encoding).
            extra_args (Optional[dict]): A dictionary of extra args passed to download, upload, copy,
                and list functions as relevant. You can include any keys supported by upload,
                download, or copy operations, and we will pass on only the relevant args. To see the
                extra args that are supported look at the upload, download, and copy lists in the
                [boto3 docs](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer).
        ÚAWS_ENDPOINT_URLN)r   r   r   r    r!   r&   ©Úsignature_versionr   ©r%   Úconfig)ÚRequestPayerÚExpectedBucketOwner)r$   r(   r#   )ÚosÚgetenvÚsessr   Ú
_s3_configÚ_get_boto3_configÚbotocoreÚsessionÚUNSIGNEDÚ_boto3_configÚresourcer   Úclientr'   Ú_extra_argsÚitemsr   ÚALLOWED_DOWNLOAD_ARGSÚboto3_dl_extra_argsÚALLOWED_UPLOAD_ARGSÚboto3_ul_extra_argsÚALLOWED_COPY_ARGSÚboto3_copy_extra_argsÚboto3_list_extra_argsÚ_endpoint_urlÚsuperÚ__init__)Úselfr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   ÚkÚvÚ	__class__s                    €úb/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/cloudpathlib/s3/s3client.pyrH   zS3Client.__init__   s  ø€ ðv $ÒD¤r§y¡yÐ1CÓ'DˆØÐ$Ø%ˆD�IäØ"3Ø&;Ø"3Ø!1Ø)ôˆDŒIñ EUÐ-Ð/?Ñ@ÐZ\ˆŒØ!×3Ñ3Ù;Jœh×.Ñ.×7Ò7ÐPTð 4ó 
ˆÔð —)‘)×$Ñ$ T¸ÈT×M_ÑM_Ð$Ó`ˆŒØ—i‘i×&Ñ& t¸,Èt×OaÑOaÐ&ÓbˆŒà%:ˆÔ"àÐØˆJà%ˆÔà'×-Ñ-Ó/÷$
Ù�Q˜°1¼
×8XÑ8XÒ3XˆAˆq‰Dó$
ˆÔ ð (×-Ñ-Ó/÷$
Ù�Q˜°1¼
×8VÑ8VÒ3VˆAˆq‰Dó$
ˆÔ ð (×-Ñ-Ó/÷&
Ù�Q˜°1¼
×8TÑ8TÒ3TˆAˆq‰Dó&
ˆÔ"ð =ö&
àØ�D×$Ñ$Ñ$ð ˆt×Ñ Ñ"Ñ"ò&
ˆÔ"ð
 *ˆÔä‰ÑØ+Ø 3Ø+ð 	õ 	
ùó'$
ùó$
ùó&
ùò&
s*   Ã9G%ÄG%Ä5G+ÅG+Å1G1ÆG1Æ%G7r-   c                 óh   — i }|�||d<   | j                   r| j                   |d<   |rt        di |¤ŽS d S )Nr-   r   © )r5   r   )rI   r-   Úconfig_kwargss      rM   r6   zS3Client._get_boto3_configŠ   sB   € Ø(*ˆØÐ(Ø1BˆMÐ-Ñ.Ø�?Š?Ø"&§/¡/ˆM˜$Ñá*7ŒvÑ&˜Ñ&ÐA¸TÐAó    Ú
cloud_pathÚreturnc                 óÞ   —  | j                   j                  d|j                  |j                  dœ| j                  ¤Ž}|d   |d   |j                  dd «      |j                  dd «      |d   dœS )	N©ÚBucketÚKeyÚLastModifiedÚContentLengthÚETagÚContentTypeÚMetadata)Úlast_modifiedÚsizeÚetagÚcontent_typeÚextrarO   )r<   Úhead_objectÚbucketÚkeyr@   Úget)rI   rR   Údatas      rM   Ú_get_metadatazS3Client._get_metadata“   s}   € à&ˆt�{‰{×&Ñ&ð 
Ø×$Ñ$Ø—‘ñ
ð ×&Ñ&ñ
ˆð " .Ñ1Ø˜Ñ)Ø—H‘H˜V TÓ*Ø ŸH™H ]°DÓ9Ø˜*Ñ%ñ
ð 	
rQ   Ú
local_pathc                 óÞ   — t        |«      }| j                  j                  |j                  |j                  «      }|j                  t        |«      | j                  | j                  ¬«       |S )N©r   Ú	ExtraArgs)	r   r   ÚObjectrc   rd   Údownload_fileÚstrr'   r@   )rI   rR   rh   Úobjs       rM   Ú_download_filezS3Client._download_file£   s\   € Ü˜*Ó%ˆ
Ø�g‰g�n‰n˜Z×.Ñ.°
·±Ó?ˆà×ÑÜ�
‹O D×$>Ñ$>È$×JbÑJbð 	ô 	
ð ÐrQ   c                 ó>   — |j                   sy| j                  |«      S )NÚdir)rd   Ú_s3_file_query)rI   rR   s     rM   Ú_is_file_or_dirzS3Client._is_file_or_dir¬   s   € à�~Š~Øð ×"Ñ" :Ó.Ð.rQ   c                 ó  — |j                   sVdD �ci c]!  }|| j                  v sŒ|| j                  |   “Œ# }}	  | j                  j                  dd|j                  i|¤Ž y| j                  |«      d uS c c}w # t
        $ r Y yw xY w)N)r1   rV   TFrO   )rd   r=   r<   Úhead_bucketrc   r   rs   )rI   rR   rJ   ra   s       rM   Ú_existszS3Client._exists´   sœ   € à�~Š~à0GöØ+,È1ÐPT×P`ÑP`ÒK`��4×#Ñ# AÑ&Ñ&ðˆEð ðØ'�—‘×'Ñ'ÑJ¨z×/@Ñ/@ÐJÀEÒJØð ×"Ñ" :Ó.°dÐ:Ð:ùòøô ò Ùðús   ‘A6¥A6º(A; Á;	BÂBc           	      ó  — 	  | j                   j                  d|j                  |j                  j	                  d«      dœ| j
                  ¤Ž y# t        | j                   j                  j                  f$ rŒ |j                  j	                  d«      dz   }t        d„  | j                  j                  |j                  «      j                  j                  dd|i| j                  ¤Žj                  d«      D «       d«      cY S w xY w)	zFBoto3 query used for quick checks of existence and if path is file/dirú/rU   Úfilec              3   ó    K  — | ]  }d –— Œ y­w)rr   NrO   )Ú.0ro   s     rM   ú	<genexpr>z*S3Client._s3_file_query.<locals>.<genexpr>Ô   s   è ø€ ò àô ñùs   ‚ÚPrefixr   NrO   )r<   rb   rc   rd   Úrstripr@   r   Ú
exceptionsÚ	NoSuchKeyÚnextr   rV   ÚobjectsÚfilterrE   Úlimit)rI   rR   rd   s      rM   rs   zS3Client._s3_file_queryÃ   sõ   € ð	à#ˆD�K‰K×#Ñ#ð Ø!×(Ñ(Ø—N‘N×)Ñ)¨#Ó.ñð ×*Ñ*òð
 øô ˜TŸ[™[×3Ñ3×=Ñ=Ð>ò 	Ø—.‘.×'Ñ'¨Ó,¨sÑ2ˆCäñð(˜Ÿ™Ÿ™ z×'8Ñ'8Ó9ß ™§¡ñRØ/2ðRØ6:×6PÑ6PñRç™˜q›ôð ó
ò 
ð	ús   ‚AA ÁB2DÄDc           
   #   óò  ‡ ‡K  — ‰j                   sJ|rt        d«      ‚ˆˆ fd„‰ j                  j                  «       j	                  dg «      D «       E d {  –—†  y ‰j
                  }|r|j                  d«      s|dz  }t        «       }‰ j                  j                  d«      } |j                  d‰j                   ||rdnddœ‰ j                  ¤ŽD �]  }|j	                  dg «      D ]h  }|j	                  d	«      j                  d«      }||vsŒ(‰ j                  ‰j                  › ‰j                   › d|› �«      d
f–— |j                  |«       Œj |j	                  dg «      D �]‡  }	|	j	                  d«      t        |«      d  }
t!        |
«      j"                  D ]t  }|t%        |«      j                  d«      z   }||vsŒ%t%        |«      dk7  sŒ4‰ j                  ‰j                  › ‰j                   › d|› �«      d
f–— |j                  |«       Œv |	j	                  d«      j                  d«      }||v rŒÒ|	j	                  d«      j                  d«      rW|	j	                  d«      dk(  rC‰ j                  ‰j                  › ‰j                   › d|› �«      d
f–— |j                  |«       �ŒI‰ j                  ‰j                  › ‰j                   › d|	j	                  d«      › �«      df–— �ŒŠ �Œ  y 7 �ŒŸ­w)NztCannot recursively list all buckets and contents; you can get all the buckets then recursively list each separately.c              3   óf   •K  — | ](  }‰j                  ‰j                  › |d    › �«      df–— Œ* y­w)ÚNameTN)Ú	CloudPathÚcloud_prefix)r|   ÚbrR   rI   s     €€rM   r}   z%S3Client._list_dir.<locals>.<genexpr>ç   s;   øè ø€ ò àð —‘ :×#:Ñ#:Ð";¸A¸f¹I¸;Ð GÓHÈ$ÔOñùs   ƒ.1ÚBucketsry   Úlist_objects_v2Ú )rV   r~   Ú	DelimiterÚCommonPrefixesr~   TÚContentsrW   ú.ÚSizer   FrO   )rc   ÚNotImplementedErrorr<   Úlist_bucketsre   rd   ÚendswithÚsetÚget_paginatorÚpaginaterE   r   r‰   rŠ   ÚaddÚlenr   Úparentsrn   )rI   rR   Ú	recursiveÚprefixÚyielded_dirsÚ	paginatorÚresultÚresult_prefixÚ	canonicalÚ
result_keyÚo_relative_pathÚparentÚparent_canonicals   ``           rM   Ú	_list_dirzS3Client._list_dirß   s  ùè ø€ à× Ò ÙÜ)ð Kóð ôàŸ™×1Ñ1Ó3×7Ñ7¸	À2ÓFô÷ ð ð à—‘ˆÙ˜&Ÿ/™/¨#Ô.Ø�c‰MˆFä“uˆà—K‘K×-Ñ-Ð.?Ó@ˆ	à(�i×(Ñ(ð 
Ø×$Ñ$ØÙ&‘r¨Cñ
ð ×(Ñ(ñ	
ó 7	ˆFð "(§¡Ð,<¸bÓ!Aò 	0�Ø)×-Ñ-¨hÓ7×>Ñ>¸sÓC�	Ø LÒ0àŸ™Ø)×6Ñ6Ð7¸
×8IÑ8IÐ7JÈ!ÈIÈ;ÐWóð ð	ò ð !×$Ñ$ YÕ/ð	0ð %Ÿj™j¨°RÓ8ó $�
à",§.¡.°Ó"7¼¸F»¸Ð"F�Ü+¨OÓ<×DÑDò 	;�FØ'-´°F³×0BÑ0BÀ3Ó0GÑ'GÐ$Ø'¨|Ò;ÄÀFÃÈsÓ@Rà ŸN™NØ#-×#:Ñ#:Ð";¸J×<MÑ<MÐ;NÈaÐP`ÐOaÐ bóð !ð	ò ð %×(Ñ(Ð)9Õ:ð	;ð 'ŸN™N¨5Ó1×8Ñ8¸Ó=�	Ø Ñ,Øð —>‘> %Ó(×1Ñ1°#Ô6¸:¿>¹>È&Ó;QÐUVÒ;VàŸ™Ø)×6Ñ6Ð7¸
×8IÑ8IÐ7JÈ!ÈIÈ;ÐWóð ð	ò ð !×$Ñ$ YÖ/ð
 Ÿ™Ø)×6Ñ6Ð7¸
×8IÑ8IÐ7JÈ!ÈJÏNÉNÐ[`ÓLaÐKbÐcóð ð	ô ò?$ñ'7	ðûs'   „AK7ÁK4ÁB9K7ÄB/K7Ç K7ÇD&K7ÚsrcÚdstÚ
remove_srcc                 ó~  — ||k(  r¯| j                   j                  |j                  |j                  «      }| j                  j                  «       D ��ci c]  \  }}|dvr||“Œ }}} |j                  d|j                  |j                  dœ| j                  |«      j                  di «      ddœ|¤Ž |S | j                   j                  |j                  |j                  «      }|j                  |j                  |j                  dœ| j                  | j                  ¬«       |r| j                  |«       |S c c}}w )N)r\   ÚMetadataDirectiverU   ra   ÚREPLACE)Ú
CopySourcer\   r­   )rk   r   rO   )r   rl   rc   rd   rD   r>   Ú	copy_fromrg   re   Úcopyr'   Ú_remove)	rI   r©   rª   r«   ÚorJ   rK   Útouch_extrasÚtargets	            rM   Ú
_move_filezS3Client._move_file.  s$  € à�#Š:Ø—‘—‘˜sŸz™z¨3¯7©7Ó3ˆAð !×6Ñ6×<Ñ<Ó>÷á�A�qØÐ=Ñ=ð �1‘ðˆLñ ð
 ˆA�K‰Kð Ø&)§j¡j¸¿¹ÑAØ×+Ñ+¨CÓ0×4Ñ4°W¸bÓAØ"+ñð ò	ð" ˆ
ð —W‘W—^‘^ C§J¡J°·±Ó8ˆFØ�K‰KØŸ:™:¨c¯g©gÑ6Ø×4Ñ4Ø×1Ñ1ð ô ñ Ø—‘˜SÔ!Øˆ
ùó-s   ÁD9Ú
missing_okc                 óÞ  — | j                  |¬«      }|dk(  r~ | j                  j                  |j                  |j                  «      j
                  di | j                  ¤Ž}|j                  d«      j                  d«      dvrt        d|› d|› �«      ‚y |dk(  rÂ| j                  j                  |j                  «      }|j                  }|r|j                  d	«      s|d	z  }  |j                  j                  dd
|i| j                  ¤Žj
                  di | j                  ¤Ž}|d   j                  d«      j                  d«      dvrt        d|› d|› �«      ‚y |st        d|› d�«      ‚y )N)rR   rz   ÚResponseMetadataÚHTTPStatusCode)éÌ   éÈ   zDelete operation failed for z with response: rr   ry   r~   r   z(Cannot delete file that does not exist: z# (consider passing missing_ok=True)rO   )rt   r   rl   rc   rd   ÚdeleterE   re   r   rV   r–   rƒ   r„   ÚFileNotFoundError)rI   rR   r·   Úfile_or_dirÚresprc   rž   s          rM   r²   zS3Client._removeK  sˆ  € Ø×*Ñ*°jÐ*ÓAˆØ˜&Ò ØK�4—7‘7—>‘> *×"3Ñ"3°Z·^±^ÓD×KÑKñ Ø×,Ñ,ñˆDð �x‰xÐ*Ó+×/Ñ/Ð0@ÓAÈÑSÜ(Ø2°:°,Ð>NÈtÈfÐUóð ð Tð
 ˜EÒ!à—W‘W—^‘^ J×$5Ñ$5Ó6ˆFà—^‘^ˆFÙ˜fŸo™o¨cÔ2Ø˜#‘�à\Ð(�6—>‘>×(Ñ(ÑU°ÐU¸$×:TÑ:TÑU×\Ñ\ñ Ø×,Ñ,ñˆDð �A‰w�{‰{Ð-Ó.×2Ñ2Ð3CÓDÈJÑVÜ(Ø2°:°,Ð>NÈtÈfÐUóð ð Wñ Ü'Ø>¸z¸lÐJmÐnóð ð rQ   c                 óV  — | j                   j                  |j                  |j                  «      }| j                  j                  «       }| j                  �+| j                  t        |«      «      \  }}|�||d<   |�||d<   |j                  t        |«      | j                  |¬«       |S )Nr[   ÚContentEncodingrj   )
r   rl   rc   rd   rB   r±   r(   rn   Úupload_filer'   )rI   rh   rR   ro   r)   r`   Úcontent_encodings          rM   Ú_upload_filezS3Client._upload_filel  sž   € Ø�g‰g�n‰n˜Z×.Ñ.°
·±Ó?ˆà×-Ñ-×2Ñ2Ó4ˆ
à×#Ñ#Ð/Ø-1×-EÑ-EÄcÈ*ÃoÓ-VÑ*ˆLÐ*ØÐ'Ø,8�
˜=Ñ)ØÐ+Ø0@�
Ð,Ñ-à�‰œ˜J›°×0JÑ0JÐV`ˆÔaØÐrQ   c                 óì   — | j                  t        j                  ¬«      }| j                  j	                  d| j
                  |¬«      }|j                  d|j                  |j                  dœd¬«      }|S )zúApparently the best way to get the public URL is to generate a presigned URL
        with the unsigned config set. This creates a temporary unsigned client to generate
        the correct URL
        See: https://stackoverflow.com/a/48197877
        r,   r   r.   Ú
get_objectrU   r   ©ÚParamsÚ	ExpiresIn)	r6   r7   r9   r4   r<   rF   Úgenerate_presigned_urlrc   rd   )rI   rR   Úunsigned_configÚunsigned_clientÚurls        rM   Ú_get_public_urlzS3Client._get_public_url{  sy   € ð ×0Ñ0Ä8×CTÑCTÐ0ÓUˆØŸ)™)×*Ñ*Ø˜t×1Ñ1¸/ð +ó 
ˆð #×9Ñ9ØØ(×/Ñ/¸
¿¹ÑGØð :ó 
ˆð
 ˆ
rQ   Úexpire_secondsc                 óp   — | j                   j                  d|j                  |j                  dœ|¬«      }|S )NrÇ   rU   rÈ   )r<   rË   rc   rd   )rI   rR   rÐ   rÎ   s       rM   Ú_generate_presigned_urlz S3Client._generate_presigned_urlŒ  s:   € Ø—;‘;×5Ñ5ØØ(×/Ñ/¸
¿¹ÑGØ$ð 6ó 
ˆð
 ˆ
rQ   )N)F)T)i  )$Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	mimetypesÚ
guess_typer	   rn   Úboolr   r   r2   ÚPathLiker   ÚdictrH   r6   r   r   r   rg   r   rp   rt   rw   rs   r   r
   r¨   r¶   r²   rÅ   rÏ   ÚintrÒ   Ú__classcell__)rL   s   @rM   r   r      sv  ø„ ñ,ð ,0Ø/3Ø+/Ø*/ØAEØ&*Ø-1Ø?CØ=AØ&*Ø*.Ø<@Ø2;×2FÑ2FØ%)ñl
à# C™=ðl
ð  (¨™}ðl
ð $ C™=ð	l
ð
 " $™ðl
ð #Ð#=Ñ>ðl
ð ˜s‘mðl
ð   	Ñ*ðl
ð " %¨¨]Ð(:Ñ";Ñ<ðl
ð " %¨¨R¯[©[Ð(8Ñ"9Ñ:ðl
ð ˜s‘mðl
ð # 3™-ðl
ð  (Ð(8Ñ9ðl
ð & hÑ/ðl
ð ˜T‘Nõl
ñ\B°8¸C±=ó Bð
¨ð 
°4¸¸S¸±>ó 
ð ¨ð ¸UÀ3ÈÏÉÐCSÑ=Tð ÐY]ó ð/¨&ð /°X¸c±]ó /ð; &ð ;¨Tó ;ð¨ó ñ8M Fð MÀÈÈvÐW[È|ÑI\Ñ@]ó Mñ^˜fð ¨6ð ¸tð Èvó ñ: &ð °dð Àdó ðB u¨S°"·+±+Ð-=Ñ'>ð ÈFð ÐW]ó ð¨&ð °Só ñ"°&ð È#ð Ð\_÷ rQ   r   )'r×   r2   Úpathlibr   r   Útypingr   r   r   r   r	   r
   r   r<   r   r   Ú	cloudpathr   Úenumsr   r€   r   Ús3pathr   Úboto3.sessionr   Úboto3.s3.transferr   r   Úbotocore.configr   Úbotocore.exceptionsr   Úbotocore.sessionr7   ÚModuleNotFoundErrorÚdependencies_loadedr   r‰   rO   rQ   rM   ú<module>rê      s�   ðÛ Û 	ß 'ß H× HÑ Hç 2Ý /Ý !Ý +Ý ð>Ý%ß<Ý&Ý/Ûñ
 �tÓô{ˆvó {ó ð{ð| ×$Ñ$€…øðG ò >Ø8=Ð˜DÑ!Ö5ð>ús   ÁB
 Â
BÂB