ó
    ëBj  ã                   óÞ   • S SK r S SKrS SKrS SKJr  S SKrS SKJr  S SKJ	r	J
r
JrJrJrJrJr  SSKJrJrJr  SSKJr  SSKJr  \" S	\S
9rS\S\
4S jr " S S\ R6                  \	\   5      rg)é    N)ÚPath)ÚTemporaryDirectory)ÚGenericÚCallableÚIterableÚOptionalÚTupleÚTypeVarÚUnioné   )ÚCloudImplementationÚ	CloudPathÚimplementation_registry)ÚFileCacheMode)ÚInvalidConfigurationExceptionÚBoundedCloudPath)ÚboundÚkeyÚreturnc                 ó0   ^ • S[         S[         4U 4S jjnU$ )NÚclsr   c                 óœ   >• [        U [        5      (       d  [        S5      eU [        T   l        T[        T   l        [        T   U l        U $ )Nz,Only subclasses of Client can be registered.)Ú
issubclassÚClientÚ	TypeErrorr   Ú_client_classÚnameÚ_cloud_meta)r   r   s    €ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/cloudpathlib/client.pyÚ	decoratorÚ(register_client_class.<locals>.decorator   sI   ø€ Ü˜#œv×&Ñ&ÜÐJÓKÐKØ58Ô Ñ$Ô2Ø,/Ô Ñ$Ô)Ü1°#Ñ6ˆŒØˆ
ó    )Útype)r   r    s   ` r   Úregister_client_classr$      s   ø€ ð”tð ¤÷ ð Ðr"   c            
       óØ  • \ rS rSr% \\S'   SrSS\R                  4S\	\
\\4      S\	\
\\R                  4      S\	\   4S jjrS!S	 jr\S"S
 j5       rS!S jrS\
\\4   S\S\4S jrS r\R2                  S\S\
\\R                  4   S\4S j5       r\R2                  S\S\4S j5       r\R2                  S\S\S\\\\4      4S j5       r \R2                   S#S\S\S\S\4S jj5       r!\R2                  S#S\S\SS4S jj5       r"\R2                  S\
\\R                  4   S\S\4S j5       r#\R2                  S\S\4S j5       r$\R2                   S$S\S\%S\4S jj5       r&S r'g)%r   é   r   NÚfile_cache_modeÚlocal_cache_dirÚcontent_type_methodc                 óŠ  • S U l         S U l        U R                  R                  5         [	        U[
        5      (       a  [        U5      nUc  [        R                  " 5       nUc(  [        R                  R                  SS 5      nUS:X  a  S nU(       a  Uc  [        R                  nU[        R                  :X  a   Uc  [        S[        R                   S35      eUc8  [        5       U l        U R                  R                  nUc  [        R                  n[!        U5      U l        X0l        Uc  [        R                  nXl         g )NÚCLOUDPATHLIB_LOCAL_CACHE_DIRÚ zIf you use the 'zP' cache mode, you must pass a `local_cache_dir` when you instantiate the client.)r'   Ú_cache_tmp_dirr   Úvalidate_completenessÚ
isinstanceÚstrr   Úfrom_environmentÚosÚenvironÚgetÚ
persistentr   r   r   Útmp_dirr   Ú_local_cache_dirr)   )Úselfr'   r(   r)   s       r   Ú__init__ÚClient.__init__    s/  € ð  $ˆÔØ"ˆÔØ×Ñ×.Ñ.Ô0ô �o¤s×+Ñ+Ü+¨OÓ<ˆOð Ñ"Ü+×<Ò<Ó>ˆOàÑ"Ü Ÿj™jŸn™nÐ-KÈTÓRˆOð  "Ó$Ø"&�ö ˜Ñ6Ü+×6Ñ6ˆOàœm×6Ñ6Ó6¸?Ñ;RÜ/Ø"¤=×#;Ñ#;Ð"<ð  =Mð  Nóð ð
 Ñ"Ü"4Ó"6ˆDÔØ"×1Ñ1×6Ñ6ˆOàÑ&Ü"/×"7Ñ"7�ä $ _Ó 5ˆÔØ#6Ô ð Ñ"Ü+×3Ñ3ˆOà.Õr"   r   c                 ó  • [        U SS 5      [        R                  [        R                  [        R                  4;   aK  U R                  5         U R                  R                  5       (       a  U R                  R                  5         g g g )Nr'   )	Úgetattrr   r6   Ú
close_fileÚcloudpath_objectÚclear_cacher7   ÚexistsÚrmdir©r8   s    r   Ú__del__ÚClient.__del__T   su   € ô �4Ð*¨DÓ1Ü×!Ñ!Ü×$Ñ$Ü×*Ñ*ð6
ó 
ð
 ×ÑÔà×$Ñ$×+Ñ+×-Ñ-Ø×%Ñ%×+Ñ+Õ-ð .ð
r"   c                 óL   • U R                   c  U " 5       U l         U R                   $ )z‡Get the default client, which the one that is used when instantiating a cloud path
instance for this cloud without a client specified.
)Ú_default_client)r   s    r   Úget_default_clientÚClient.get_default_clienta   s&   € ð
 ×ÑÑ&Ù"%£%ˆCÔØ×"Ñ"Ð"r"   c                 ó$   • X R                   l        g)zƒSet this client instance as the default one used when instantiating cloud path
instances for this cloud without a client specified.N)Ú	__class__rF   rB   s    r   Úset_as_default_clientÚClient.set_as_default_clientj   s   € ð *.�‰Õ&r"   Ú
cloud_pathÚpartsc                 óB   • U R                   R                  " U/UQ7SU 06$ )NÚclient)r   Ú
path_class)r8   rM   rN   s      r   r   ÚClient.CloudPatho   s#   € Ø×Ñ×*Ò*¨:ÐK¸ÒKÀdÑKÐKr"   c                 ó   • U R                   R                  5       (       a_  U R                   R                  5        H@  nUR                  5       (       a  UR	                  5         M*  [
        R                  " U5        MB     gg)zaClears the contents of the cache folder.
Does not remove folder so it can keep being written to.
N)r7   r@   ÚiterdirÚis_fileÚunlinkÚshutilÚrmtree)r8   Úps     r   r?   ÚClient.clear_cacher   sW   € ð × Ñ ×'Ñ'×)Ñ)Ø×*Ñ*×2Ñ2Ö4�Ø—9‘9—;‘;Ø—H‘H–Jä—M’M !Ö$ò	 5ð *r"   Ú
local_pathc                 ó   • g ©N© )r8   rM   r[   s      r   Ú_download_fileÚClient._download_file}   ó   € ð 	r"   c                 ó   • g r]   r^   ©r8   rM   s     r   Ú_existsÚClient._existsƒ   ó   € àr"   Ú	recursivec                 ó   • g)a'  List all the files and folders in a directory.

Parameters
----------
cloud_path : CloudPath
    The folder to start from.
recursive : bool
    Whether or not to list recursively.

Returns
-------
contents : Iterable[Tuple]
    Of the form [(CloudPath, is_dir), ...] for every child of the dir.
Nr^   )r8   rM   rg   s      r   Ú	_list_dirÚClient._list_dir‡   s   € ð$ 	r"   ÚsrcÚdstÚ
remove_srcc                 ó   • g r]   r^   )r8   rk   rl   rm   s       r   Ú
_move_fileÚClient._move_file›   ra   r"   ÚpathÚ
missing_okc                 ó   • g)zsRemove a file or folder from the server.

Parameters
----------
path : CloudPath
    The file or folder to remove.
Nr^   )r8   rq   rr   s      r   Ú_removeÚClient._remove¡   s   € ð 	r"   c                 ó   • g r]   r^   )r8   r[   rM   s      r   Ú_upload_fileÚClient._upload_file¬   ra   r"   c                 ó   • g r]   r^   rc   s     r   Ú_get_public_urlÚClient._get_public_url²   rf   r"   Úexpire_secondsc                 ó   • g r]   r^   )r8   rM   r|   s      r   Ú_generate_presigned_urlÚClient._generate_presigned_url¶   ra   r"   )r-   r7   r)   r'   )r   N)r   r   )T)i  )(Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__rF   Ú	mimetypesÚ
guess_typer   r   r0   r   r2   ÚPathLiker   r9   rC   ÚclassmethodrG   rK   r   r   r?   ÚabcÚabstractmethodr   r_   Úboolrd   r   r	   ri   ro   rt   rw   rz   Úintr~   Ú__static_attributes__r^   r"   r   r   r      sl  ‡ Ø$Ó$Ø€Oð @DØ=AØ2;×2FÑ2Fñ	2/à! %¨¨]Ð(:Ñ";Ñ<ð2/ð " %¨¨R¯[©[Ð(8Ñ"9Ñ:ð2/ð & hÑ/õ	2/ôh.ð ó#ó ð#ô.ð
L E¨#Ð/?Ð*?Ñ$@ð LÈ#ð LÐRbô Lò	%ð 	×ÑðØ*ðØ8=¸cÀ2Ç;Á;Ð>NÑ8Oðà	óó ðð
 	×ÑðÐ"2ð °tó ó ðð 	×ÑðØ*ðØ7;ðà	�%Ð(¨$Ð.Ñ/Ñ	0óó ðð& 	×ÑàOSñØ#ðØ*:ðØHLðà	ôó ðð
 	×ÑñÐ,ð ¸$ð È$ô ó ðð 	×ÑðØ  R§[¡[Ð 0Ñ1ðØ?Oðà	óó ðð
 	×ÑðÐ*:ð ¸só ó ðð 	×ÑàBIñØ*ðØ<?ðà	ôó ór"   r   )r‰   r…   r2   Úpathlibr   rW   Útempfiler   Útypingr   r   r   r   r	   r
   r   Ú	cloudpathr   r   r   Úenumsr   Ú
exceptionsr   r   r0   r$   ÚABCr   r^   r"   r   Ú<module>r•      sg   ðÛ 
Û Û 	Ý Û Ý 'ß O× OÑ Oç NÑ NÝ  Ý 5áÐ-°YÑ?Ð ð	˜sð 	 xô 	ô^ˆS�W‰W�gÐ.Ñ/õ ^r"   