Ë
    ãš¾jÅ  ã                   óŒ   — d dl Z 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	 dddœZ
 e j                  d«      Z G d	„ d
e«      Zy)é    N)ÚAbstractArchiveFileSystem)Úcompr)Úinfer_compressionÚfileÚ	directory)ó   0ó   5Útarc                   ót   ‡ — e Zd ZdZdZdZdZeˆ fd„«       Z	 	 	 	 	 dˆ fd„	Z	d„ Z
d„ Zd	„ Zdd
„Zd„ Zd„ Zˆ xZS )ÚTarFileSystemzzCompressed Tar archives as a file-system (read-only)

    Supports the following formats:
    tar.gz, tar.bz2, tar.xz
    Ú r
   Fc                 ó@   •— t         ‰| �  |«      j                  d«      S )Nú/)ÚsuperÚ_strip_protocolÚlstrip)ÚclsÚpathÚ	__class__s     €úd/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/fsspec/implementations/tar.pyr   zTarFileSystem._strip_protocol   s    ø€ ô ‰wÑ& tÓ,×3Ñ3°CÓ8Ð8ó    c                 ó  •— t        ‰	| �  d
i |¤Ž |xs i }t        |t        «      r7t	        j
                  |fd|i|¤Ž| _        | j                  j                  «       }|€•d }	 t        |d«      r|j                  }nQt        |d«      r|j                  }n8t        |d«      r|j                  }nt        |d«      r|j                  «       d   }|�&t        |«      }t        j                  d|› d|› �«       |�t!        |   |«      }|| _        || _        t'        j(                  | j$                  ¬	«      | _        d | _        || _        d | _        | j3                  «        y # t        $ r"}t        j                  d|› �«       Y d }~Œ·d }~ww xY w)NÚprotocolÚoriginalr   ÚnameÚinfoz:Unable to determine file name, not inferring compression: zInferred compression z from file name )Úfileobj© )r   Ú__init__Ú
isinstanceÚstrÚfsspecÚopenÚofÚhasattrr   r   r   r   Ú	ExceptionÚloggerÚwarningr   r   Ú_fo_refÚfoÚtarfileÚTarFiler
   Ú	dir_cacheÚindex_storeÚindexÚ_index)
Úselfr*   r.   Útarget_optionsÚtarget_protocolÚcompressionÚkwargsr   Úexr   s
            €r   r   zTarFileSystem.__init__   su  ø€ ô 	‰ÑÑ"˜6Ò"Ø'Ò-¨2ˆä�bœ#ÔÜ—k‘k "ÑQ¨ÐQÀ.ÑQˆDŒGØ—‘—‘“ˆBð ÐØˆDð
ô
 ˜2˜zÔ*ØŸ;™;‘Dô ˜R Ô(ØŸ7™7‘Dô ˜R Ô(ØŸ7™7‘Dô ˜R Ô(ØŸ7™7›9 VÑ,�Dð ÐÜ/°Ó5�Ü—‘Ð3°K°=Ð@PÐQUÐPVÐWÔXàÐ"ô �{Ñ# BÓ'ˆBàˆŒØˆŒÜ—?‘?¨4¯7©7Ô3ˆŒØˆŒà&ˆÔØˆŒ
Ø�‰�øô+ ò Ü—‘ØPÐQSÐPTÐU÷ñ ûðús   Á#A*E Å	F	Å'FÆF	c                 ó|  — i }| j                   D ]¤  }|j                  «       }t        j                  |d   d«      |d<   |d   j	                  d«      }t        j                  dd|«      }||d<   |j                  «       s|j                  «       r| j                  |«      |d<   ||j                  |f||<   Œ¦ || _        y )NÚtyper   r   r   ú/+Úsize)r
   Úget_infoÚtypemapÚgetÚrstripÚreÚsubÚislnkÚissymÚ_link_target_sizeÚoffset_datar/   )r1   ÚoutÚtir   Ú	orig_namer   s         r   r0   zTarFileSystem._indexa   s®   € àˆØ—(‘(ò 
	:ˆBØ—;‘;“=ˆDÜ"Ÿ;™; t¨F¡|°VÓ<ˆD�‰LØ˜V™×+Ñ+¨CÓ0ˆIä—6‘6˜$  YÓ/ˆDØˆD�‰LØ�x‰xŒz˜RŸX™XœZà#×5Ñ5°bÓ9��V‘Ø˜rŸ~™~¨yÐ9ˆC�ŠIð
	:ð ˆ�
r   c                 ó\  — t        «       }|j                  «       s|j                  «       rh|j                  |v ry|j	                  |j                  «       	 | j
                  j                  |«      }|j                  «       rŒW|j                  «       rŒh|j                  S # t        $ r Y yw xY w)Nr   )	ÚsetrA   rB   r   Úaddr
   Ú_find_link_targetÚKeyErrorr:   )r1   rF   Úseens      r   rC   zTarFileSystem._link_target_sizes   sƒ   € Ü‹uˆØ�h‰hŒj˜BŸH™HœJØ�w‰w˜$‰ØØ�H‰H�R—W‘WÔðØ—X‘X×/Ñ/°Ó3�ð �h‰h�j˜BŸH™H�Jð �w‰wˆøô ò áðús   ÁB Â	B+Â*B+c           	      ó0  — | j                   �y | j                  | j                  «      D �ci c]	  }||dddœ“Œ c}| _         | j                   j                  | j                  j	                  «       D ��ci c]  \  }}}|d   |“Œ c}}«       y c c}w c c}}w )Nr   r   )r   r:   r8   r   )r-   Ú_all_dirnamesr/   ÚupdateÚvalues)r1   Údirnamer   Ú_s       r   Ú	_get_dirszTarFileSystem._get_dirs€   s�   € Ø�>‰>Ð%Øð
  ×-Ñ-¨d¯j©jÓ9ö
àð ˜g¨q¸+ÑFÑFò
ˆŒð 	�‰×ÑØ26·*±*×2CÑ2CÓ2E×F¡J D¨!¨QˆT�&‰\˜4ÑÓFõ	
ùò	
ùó
 Gs   «BÁ3B
c                 ó&  — |dk7  rt        d«      ‚t        j                  dd|«      }	 | j                  |   \  }}}|d   dk7  rt        d«      ‚| j                  j                  |«      }|d   |_        |S # t        $ r}t        |«      |‚d }~ww xY w)	NÚrbz#Read-only filesystem implementationr9   r   r8   r   zCan only handle regular filesr:   )	Ú
ValueErrorr?   r@   r/   rL   ÚFileNotFoundErrorr
   Úextractfiler:   )	r1   r   Úmoder5   ÚdetailsrS   rG   ÚexcrE   s	            r   Ú_openzTarFileSystem._open�   sž   € Ø�4Š<ÜÐBÓCÐCä�v‰v�d˜C Ó&ˆð	3Ø$(§J¡J¨tÑ$4Ñ!ˆG�Q˜	ð �6‰?˜fÒ$ÜÐ<Ó=Ð=Ø�h‰h×"Ñ" 9Ó-ˆà˜6‘?ˆŒØˆ
øô ò 	3Ü# DÓ)¨sÐ2ûð	3ús   ©A6 Á6	BÁ?BÂBc                 ó8   — | j                   j                  «        y)z;Commits any write changes to the file. Done on ``del`` too.N)r
   Úclose©r1   s    r   r_   zTarFileSystem.close�   s   € à�‰�‰Õr   c                 óÂ   — t        | d«      r| j                  «        | `t        | d«      r5t        | j                  d«      r| j                  j	                  d d d «       y y y )Nr
   r$   Ú__exit__)r%   r_   r
   r$   rb   r`   s    r   Ú__del__zTarFileSystem.__del__¡   sP   € Ü�4˜ÔØ�J‰JŒLØ�Ü�4˜Ô¤7¨4¯7©7°JÔ#?Ø�G‰G×Ñ˜T 4¨Õ.ð $@Ðr   )r   NNNN)rV   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úroot_markerr   ÚcachableÚclassmethodr   r   r0   rC   rT   r]   r_   rc   Ú__classcell__)r   s   @r   r   r      sa   ø„ ñð €KØ€HØ€Hàó9ó ð9ð ØØØØõ@òDò$ò
óò ö/r   r   )Úloggingr?   r+   r"   Úfsspec.archiver   Úfsspec.compressionr   Úfsspec.utilsr   r<   Ú	getLoggerr'   r   r   r   r   ú<module>rq      sE   ðÛ Û 	Û ã Ý 4Ý $Ý *à˜{Ñ
+€à	ˆ×	Ñ	˜5Ó	!€ôW/Ð-õ W/r   