Ë
    äš¾j†  ã                   óÀ   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 ddlmZmZmZmZ e
rddlmZ  ej$                  d	«      Z ed
«       G d„ de«      «       Zy)é    N)ÚPath)ÚTemporaryDirectory)ÚAnyÚOptionalÚTYPE_CHECKINGé   )Ú	CloudPathÚNoStatErrorÚ_ensure_local_path_within_baseÚregister_path_classé   )ÚS3ClientzK^s3://(?P<arn>arn:aws:s3::\d{12}:accesspoint/[^/]+\.mrap)(?:/(?P<key>.*))?$Ús3c                   óÚ   — e Zd ZU dZdZeed<   ded<   eed<   eed<   edefd	„«       Z	dde
e   fd„Zddede
e   fd„Zdd„Zedefd„«       Zedefd„«       Zed„ «       Zedefd„«       Zy
)ÚS3Patha9  Class for representing and operating on AWS S3 URIs, in the style of the Python standard
    library's [`pathlib` module](https://docs.python.org/3/library/pathlib.html). Instances
    represent a path in S3 with filesystem path semantics, and convenient methods allow for basic
    operations like joining, reading, writing, iterating over contents, etc. This class almost
    entirely mimics the [`pathlib.Path`](https://docs.python.org/3/library/pathlib.html#pathlib.Path)
    interface, so most familiar properties and methods should be available and behave in the
    expected way.

    The [`S3Client`](../s3client/) class handles authentication with AWS. If a client instance is
    not explicitly specified on `S3Path` instantiation, a default client is used. See `S3Client`'s
    documentation for more details.
    zs3://Úcloud_prefixr   ÚclientÚ_bucketÚ_local_pathÚreturnc                 ó   — | j                   S ©N)Úbucket©Úselfs    ú`/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/cloudpathlib/s3/s3path.pyÚdrivezS3Path.drive+   s   € à�{‰{Ðó    NÚmodec                  ó   — y r   © )r   ÚparentsÚexist_okr   s       r   ÚmkdirzS3Path.mkdir/   s   € àr   r#   c                 ó:  — | j                  «       r-|st        d| › �«      ‚| j                  j                  | | «       y t	        «       }t        |j                  «      dz  }|j                  «        | j                  j                  || «       |j                  «        y )NzFile exists: Úempty)
ÚexistsÚFileExistsErrorr   Ú
_move_filer   r   ÚnameÚtouchÚ_upload_fileÚcleanup)r   r#   r   ÚtfÚps        r   r+   zS3Path.touch3   st   € Ø�;‰;Œ=ÙÜ%¨°d°VÐ&<Ó=Ð=Ø�K‰K×"Ñ" 4¨Õ.ä#Ó%ˆBÜ�R—W‘W“ Ñ'ˆAØ�G‰GŒIà�K‰K×$Ñ$ Q¨Ô-à�J‰J�Lr   c                 ó0  — 	 | j                   j                  | «      }t        j                  d d | j                  d d d |j                  d	d
«      d |j                  dd
«      j                  «       d f
«      S # | j                   j                   j                  j                  $ rt}|j                  j                  di «      }|j                  j                  di «      j                  d«      }|j                  d«      dv s|dk(  rt        d| › d�«      ‚‚ d }~ww xY w)NÚErrorÚResponseMetadataÚHTTPStatusCodeÚCode)Ú404Ú	NoSuchKeyi”  zNo stats available for z%; it may be a directory or not exist.Úsizer   Úlast_modified)r   Ú_get_metadataÚ
exceptionsÚClientErrorÚresponseÚgetr
   ÚosÚstat_resultr   Ú	timestamp)r   Úfollow_symlinksÚmetaÚerrorÚ
error_infoÚstatus_codes         r   ÚstatzS3Path.statA   s  € ð
	Ø—;‘;×,Ñ,¨TÓ2ˆDô �~‰~àØØ×!Ñ!ØØØØ—‘˜ Ó#ØØ—‘˜¨!Ó,×6Ñ6Ó8Øðó
ð 	
øð �{‰{×!Ñ!×,Ñ,×8Ñ8ò 	àŸ™×+Ñ+¨G°RÓ8ˆJØŸ.™.×,Ñ,Ð-?ÀÓD×HÑHÐIYÓZˆKØ�~‰~˜fÓ%Ð)=Ñ=ÀÐPSÒASÜ!Ø-¨d¨VÐ3XÐYóð ð ûð	ús   ‚A4 Á4-DÂ!A/DÄDc                 ó  — t        | d«      r| j                  S t        j                  t	        | «      «      x}r"|j                  d«      | _        | j                  S | j                  j                  dd«      d   | _        | j                  S )z[The bucket name, or the full MRAP ARN for MRAP paths.

        :type: :class:`str`
        r   Úarnú/r   r   )Úhasattrr   Ú_MRAP_PATTERNÚmatchÚstrÚgroupÚ
_no_prefixÚsplit)r   rL   s     r   r   zS3Path.bucket]   sw   € ô �4˜Ô#Ø—<‘<ÐÜ!×'Ñ'¬¨D«	Ó2Ð2ˆ5Ð2Ø Ÿ;™; uÓ-ˆDŒLð �|‰|Ðð  Ÿ?™?×0Ñ0°°aÓ8¸Ñ;ˆDŒLØ�|‰|Ðr   c                 óJ   — | j                   }|j                  d«      r|dd  }|S )NrI   r   )Ú_no_prefix_no_driveÚ
startswith)r   Úkeys     r   rT   z
S3Path.keyk   s+   € à×&Ñ&ˆð �>‰>˜#ÔØ�a�b�'ˆCàˆ
r   c                 óV   — | j                   j                  | «      j                  d«      S )NÚetag)r   r9   r=   r   s    r   rV   zS3Path.etagv   s"   € à�{‰{×(Ñ(¨Ó.×2Ñ2°6Ó:Ð:r   c                 ó*  — t        | d«      r| j                  S | j                  }t        j                  dk(  r|j                  dd«      }t        | j                  j                  |z  | j                  j                  | d¬«      | _        | j                  S )Nr   Úwin32ú:z%3AF)Úresolve)	rJ   r   rO   ÚsysÚplatformÚreplacer   r   Ú_local_cache_dir)r   Ú	no_prefixs     r   Ú_localzS3Path._localz   s   € ä�4˜Ô'Ø×#Ñ#Ð#Ø—O‘Oˆ	ä�<‰<˜7Ò"Ø!×)Ñ)¨#¨uÓ5ˆIÜ9Ø�K‰K×(Ñ(¨9Ñ4Ø�K‰K×(Ñ(ØØô	
ˆÔð ×ÑÐr   )FFN)TN)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rM   Ú__annotations__r   Úpropertyr   r   r   r$   Úboolr+   rF   r   rT   rV   r`   r!   r   r   r   r      sÎ   … ñð  €L�#ÓØÓØƒLØÓàð�sò ó ðñ¸À#¹ó ñ˜dð °¸#±ó ó
ð8 ð˜ò ó ðð ð�Sò ó ðð ñ;ó ð;ð ð ˜ò  ó ñ r   r   )r>   Úrer[   Úpathlibr   Útempfiler   Útypingr   r   r   Ú	cloudpathr	   r
   r   r   Ús3clientr   ÚcompilerK   r   r!   r   r   ú<module>ro      sb   ðÛ 	Û 	Û 
Ý Ý 'ß /Ñ /÷ó ñ Ý"à�—
‘
ØRó€ñ
 �TÓôp ˆYó p ó ñp r   