
    Loj                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  SSS.r
\ R                  " S5      r " S	 S
\5      rg)    N)AbstractArchiveFileSystem)compr)infer_compressionfile	directory)   0   5tarc                   h   ^  \ rS rSrSrSrSrSr     SU 4S jjrS r	S r
SS	 jrS
 rS rSrU =r$ )TarFileSystem   znCompressed Tar archives as a file-system (read-only)

Supports the following formats:
tar.gz, tar.bz2, tar.xz
 r
   Fc                 X  > [         T	U ]  " S
0 UD6  U=(       d    0 n[        U[        5      (       a8  [        R
                  " U4SU0UD6U l        U R                  R                  5       nUc  S n [        US5      (       a  UR                  nO`[        US5      (       a  UR                  nOB[        US5      (       a  UR                  nO$[        US5      (       a  UR                  5       S   nUb&  [        U5      n[        R                  SU SU 35        Ub  [         U   " U5      nXl        Xl        [&        R(                  " U R$                  S	9U l        S U l        X l        S U l        U R3                  5         g ! [         a"  n[        R                  SU 35         S nANS nAff = f)Nprotocoloriginalpathnameinfoz:Unable to determine file name, not inferring compression: zInferred compression z from file name )fileobj )super__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   ex	__class__s
            T/mnt/workspace/venv-train/lib/python3.13/site-packages/fsspec/implementations/tar.pyr   TarFileSystem.__init__   s~    	"6"'-2b#kk"QQ.QDGB D

 2z**;;D R((77D R((77D R((779V,D /53K=@PQUPVWX" {#B'B??4773&
+  PQSPTU s*   0E= E= ,E= 
$E= =
F)F$$F)c                    0 nU R                    Ho  nUR                  5       n[        R                  US   S5      US'   US   R	                  S5      n[
        R                  " SSU5      nXSS'   X2R                  U4X'   Mq     Xl        g )Ntyper   r   //+)	r
   get_infotypemapgetrstripresuboffset_datar(   )r*   outtir   	orig_namer   s         r1   r)   TarFileSystem._index\   s|    ((B;;=D";;tF|V<DLV++C0I66$Y/DL~~y9CI  
    c           	      :   U R                   b  g U R                  U R                  5       Vs0 s H	  nXSSS._M     snU l         U R                   R                  U R                  R	                  5        VVs0 s H  u  n  o2S   U_M     snn5        g s  snf s  snnf )Nr   r   )r   sizer4   r   )r&   _all_dirnamesr(   updatevalues)r*   dirnamer   _s       r1   	_get_dirsTarFileSystem._get_dirsk   s    >>%
  --djj9
9 q+FF9
 	26**2C2C2EF2EJD!Q&\42EF	
	

 Gs   B6B
c                     US:w  a  [        S5      e[        R                  " SSU5      nU R                  U   u  pEnUS   S:w  a  [        S5      eU R                  R                  U5      $ )Nrbz#Read-only filesystem implementationr6   r5   r4   r   zCan only handle regular files)
ValueErrorr;   r<   r(   r
   extractfile)r*   r   moder.   detailsrI   r@   s          r1   _openTarFileSystem._openx   sg    4<BCCvvdC& $

4 0I6?f$<==xx##I..rB   c                 8    U R                   R                  5         g)z;Commits any write changes to the file. Done on ``del`` too.N)r
   closer*   s    r1   rU   TarFileSystem.close   s    rB   c                     [        U S5      (       a  U R                  5         U ?[        U S5      (       a:  [        U R                  S5      (       a  U R                  R	                  S S S 5        g g g )Nr
   r   __exit__)r   rU   r
   r   rY   rV   s    r1   __del__TarFileSystem.__del__   sY    4JJL47477J#?#?GGT4. $@rB   )r"   r&   r#   r(   r'   r   r
   )r   NNNN)rM   )__name__
__module____qualname____firstlineno____doc__root_markerr   cachabler   r)   rJ   rR   rU   rZ   __static_attributes____classcell__)r0   s   @r1   r   r      sO     KHH @D
// /rB   r   )loggingr;   r$   r   fsspec.archiver   fsspec.compressionr   fsspec.utilsr   r8   	getLoggerr    r   r   rB   r1   <module>rj      sC     	   4 $ *{
+			5	!|/- |/rB   