Ë
    äš¾jZ  ã                   óæ   — d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZ ddlmZmZmZ ddlmZ ddlmZ  ed	e¬
«      Zdedefd„Z G d„ de j8                  e
e   «      Zy)é    N)ÚPath)ÚTemporaryDirectory)ÚClassVarÚGenericÚCallableÚIterableÚOptionalÚTupleÚTypeVarÚUnioné   )ÚCloudImplementationÚ	CloudPathÚimplementation_registry)ÚFileCacheMode)ÚInvalidConfigurationExceptionÚBoundedCloudPath)ÚboundÚkeyÚreturnc                 ó,   ‡ — dt         dt         fˆ fd„}|S )NÚclsr   c                 ó’   •— t        | t        «      st        d«      ‚| t        ‰   _        ‰t        ‰   _        t        ‰   | _        | S )Nz,Only subclasses of Client can be registered.)Ú
issubclassÚClientÚ	TypeErrorr   Ú_client_classÚnameÚ_cloud_meta)r   r   s    €ú]/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/cloudpathlib/client.pyÚ	decoratorz(register_client_class.<locals>.decorator   sF   ø€ Ü˜#œvÔ&ÜÐJÓKÐKØ58Ô Ñ$Ô2Ø,/Ô Ñ$Ô)Ü1°#Ñ6ˆŒØˆ
ó    )Útype)r   r!   s   ` r    Úregister_client_classr$      s   ø€ ð”tð ¤õ ð Ðr"   c            
       óÄ  — e Zd ZU eed<   dZeed      ed<   ddej                  fdee
eef      dee
eej                  f      dee   fd„Zd!d
„Zed"d„«       Zd!d„Zde
eef   ded	efd„Zd„ Zej2                  dede
eej                  f   d	efd„«       Zej2                  ded	efd„«       Zej2                  deded	eeeef      fd„«       Z ej2                  	 d#dededed	efd„«       Z!ej2                  d#deded	dfd„«       Z"ej2                  de
eej                  f   ded	efd„«       Z#ej2                  ded	efd„«       Z$ej2                  	 d$dede%d	efd „«       Z&y)%r   r   NúClient[BoundedCloudPath]Ú_default_clientÚfile_cache_modeÚlocal_cache_dirÚcontent_type_methodc                 óf  — d | _         d | _        | j                  j                  «        t	        |t
        «      rt        |«      }|€t        j                  «       }|€'t        j                  j                  dd «      }|dk(  rd }|r|€t        j                  }|t        j                  k(  r|€t        dt        j                  › d�«      ‚|€7t        «       | _        | j                  j                  }|€t        j                  }t!        |«      | _        || _        |€t        j                  }|| _         y )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__zClient.__init__    s0  € ð  $ˆÔØ"ˆÔØ×Ñ×.Ñ.Ô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                 ó  — t        | dd «      t        j                  t        j                  t        j                  fv rF| j                  «        | j                  j                  «       r| j                  j                  «        y y y )Nr(   )	Úgetattrr   r7   Ú
close_fileÚcloudpath_objectÚclear_cacher8   ÚexistsÚrmdir©r9   s    r    Ú__del__zClient.__del__T   sr   € ô �4Ð*¨DÓ1Ü×!Ñ!Ü×$Ñ$Ü×*Ñ*ð6
ñ 
ð
 ×ÑÔà×$Ñ$×+Ñ+Ô-Ø×%Ñ%×+Ñ+Õ-ð .ð
r"   c                 óJ   — | j                   € | «       | _         | j                   S )z—Get the default client, which the one that is used when instantiating a cloud path
        instance for this cloud without a client specified.
        )r'   )r   s    r    Úget_default_clientzClient.get_default_clienta   s&   € ð
 ×ÑÐ&Ù"%£%ˆCÔØ×"Ñ"Ð"r"   c                 ó&   — | | j                   _        y)z‹Set this client instance as the default one used when instantiating cloud path
        instances for this cloud without a client specified.N)Ú	__class__r'   rB   s    r    Úset_as_default_clientzClient.set_as_default_clientj   s   € ð *.ˆ�‰Õ&r"   Ú
cloud_pathÚpartsc                 óB   —  | j                   j                  |g|¢­d| iŽS )NÚclient)r   Ú
path_class)r9   rI   rJ   s      r    r   zClient.CloudPatho   s%   € Ø*ˆt×Ñ×*Ñ*¨:ÐK¸ÒKÀdÑKÐKr"   c                 óä   — | j                   j                  «       rV| j                   j                  «       D ]8  }|j                  «       r|j	                  «        Œ$t        j                  |«       Œ: yy)zqClears the contents of the cache folder.
        Does not remove folder so it can keep being written to.
        N)r8   r@   ÚiterdirÚis_fileÚunlinkÚshutilÚrmtree)r9   Úps     r    r?   zClient.clear_cacher   sW   € ð × Ñ ×'Ñ'Ô)Ø×*Ñ*×2Ñ2Ó4ò %�Ø—9‘9”;Ø—H‘H•Jä—M‘M !Õ$ñ	%ð *r"   Ú
local_pathc                  ó   — y ©N© )r9   rI   rU   s      r    Ú_download_filezClient._download_file}   ó   € ð 	r"   c                  ó   — y rW   rX   ©r9   rI   s     r    Ú_existszClient._existsƒ   ó   € àr"   Ú	recursivec                  ó   — y)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.
        NrX   )r9   rI   r_   s      r    Ú	_list_dirzClient._list_dir‡   s   € ð$ 	r"   ÚsrcÚdstÚ
remove_srcc                  ó   — y rW   rX   )r9   rb   rc   rd   s       r    Ú
_move_filezClient._move_file›   rZ   r"   ÚpathÚ
missing_okc                  ó   — y)z›Remove a file or folder from the server.

        Parameters
        ----------
        path : CloudPath
            The file or folder to remove.
        NrX   )r9   rg   rh   s      r    Ú_removezClient._remove¡   s   € ð 	r"   c                  ó   — y rW   rX   )r9   rU   rI   s      r    Ú_upload_filezClient._upload_file¬   rZ   r"   c                  ó   — y rW   rX   r\   s     r    Ú_get_public_urlzClient._get_public_url²   r^   r"   Úexpire_secondsc                  ó   — y rW   rX   )r9   rI   ro   s      r    Ú_generate_presigned_urlzClient._generate_presigned_url¶   rZ   r"   )r   N)r   r&   )T)i  )'Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r'   r   r	   Ú	mimetypesÚ
guess_typer   r1   r   r3   ÚPathLiker   r:   rC   ÚclassmethodrE   rH   r   r   r?   ÚabcÚabstractmethodr   rY   Úboolr]   r   r
   ra   rf   rj   rl   rn   Úintrq   rX   r"   r    r   r      s|  … Ø$Ó$ØFJ€O�X˜hÐ'AÑBÑCÓJð @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   )rz   rv   r3   Úpathlibr   rR   Útempfiler   Útypingr   r   r   r   r	   r
   r   r   Ú	cloudpathr   r   r   Úenumsr   Ú
exceptionsr   r   r1   r$   ÚABCr   rX   r"   r    ú<module>r…      sg   ðÛ 
Û Û 	Ý Û Ý 'ß Y× YÓ Yç NÑ NÝ  Ý 5áÐ-°YÔ?Ð ð	˜sð 	 xó 	ô^ˆS�W‰W�gÐ.Ñ/õ ^r"   