
    ̒ge+                     :    d dl mZ d dlmZ  G d de          ZdS )   )
filesystem)AsyncFileSystemc                       e Zd ZdZdZ	 	 	 	 	 dB fd	Zd Zd Zed             Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*dCd*Z+dCd+Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZB xZCS )DDirFileSystemzDirectory prefix filesystem

    The DirFileSystem is a filesystem-wrapper. It assumes every path it is dealing with
    is relative to the `path`. After performing the necessary paths operation it
    delegates everything to the wrapped filesystem.
    dirNc                 b    t                      j        di | |t          dd|i|pi }|du|duz  du rt          d          |p|}| j        r|j        st          d          |j        r| j        |j        k    rt          d          |                    |          | _        || _        dS )aS  
        Parameters
        ----------
        path: str
            Path to the directory.
        fs: AbstractFileSystem
            An instantiated filesystem to wrap.
        target_protocol, target_options:
            if fs is none, construct it from these
        fo: str
            Alternate for path; do not provide both
        NprotocolFzProvide path or fo, not bothz(can't use asynchronous with non-async fsz7both dirfs and fs should be in the same sync/async mode )	super__init__r   
ValueErrorasynchronous
async_impl_strip_protocolpathfs)selfr   r   fotarget_protocoltarget_optionsstorage_options	__class__s          <lib/python3.11/site-packages/fsspec/implementations/dirfs.pyr   zDirFileSystem.__init__   s    * 	++?+++:OO_O9M2OOB40E99;<<<zr 	IR] 	IGHHH= 	XT."/AAVWWW&&t,,	    c                      t          |t                    rK j        s|S |s j        S  j        j                             j                             |          f          S  fd|D             S )Nc                 :    g | ]}                     |          S r
   )_join.0_pathr   s     r   
<listcomp>z'DirFileSystem._join.<locals>.<listcomp>;   s%    444e

5!!444r   )
isinstancestrr   r   sepjoinr   r   r   s   ` r   r   zDirFileSystem._join4   s|    dC   	M9  !y 7;##TY0D0DT0J0J$KLLL4444t4444r   c                      t          |t                    rX j        s|S | j        k    rdS  j         j        j        z   }|                    |          sJ |t          |          d          S  fd|D             S )N c                 :    g | ]}                     |          S r
   _relpathr   s     r   r!   z*DirFileSystem._relpath.<locals>.<listcomp>F   s%    777e$$777r   )r"   r#   r   r   r$   
startswithlen)r   r   prefixs   `  r   r+   zDirFileSystem._relpath=   s    dC   	'9 ty  rY,F??6*****F&&7777$7777r   c                     | j         j        S N)r   r$   r   s    r   r$   zDirFileSystem.sepJ   s    w{r   c                 6   K    | j         j        |i | d {V S r0   )r   set_session)r   argskwargss      r   r3   zDirFileSystem.set_sessionN   s2      (TW($9&999999999r   c                 ^   K    | j         j        |                     |          fi | d {V S r0   )r   _rm_filer   r   r   r5   s      r   r7   zDirFileSystem._rm_fileQ   sA      %TW%djj&6&6AA&AAAAAAAAAr   c                 N     | j         j        |                     |          fi |S r0   )r   rm_filer   r8   s      r   r:   zDirFileSystem.rm_fileT   s*    twtzz$//::6:::r   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   _rmr   r   r   r4   r5   s       r   r<   zDirFileSystem._rmW   sH       TW[D!1!1CDCCCFCCCCCCCCCr   c                 T     | j         j        |                     |          g|R i |S r0   )r   rmr   r=   s       r   r?   zDirFileSystem.rmZ   s2    twz$**T**<T<<<V<<<r   c                    K    | j         j        |                     |          |                     |          fi | d {V S r0   )r   _cp_filer   r   path1path2r5   s       r   rA   zDirFileSystem._cp_file]   sO      %TW%djj&7&7E9J9JUUfUUUUUUUUUr   c                 v     | j         j        |                     |          |                     |          fi |S r0   )r   cp_filer   rB   s       r   rF   zDirFileSystem.cp_file`   s8    twtzz%00$**U2C2CNNvNNNr   c                    K    | j         j        |                     |          |                     |          g|R i | d {V S r0   )r   _copyr   r   rC   rD   r4   r5   s        r   rH   zDirFileSystem._copyc   sz       #TW]JJuJJu
 
 
 
 	
 
 
 
 
 
 
 
 	
r   c                 |     | j         j        |                     |          |                     |          g|R i |S r0   )r   copyr   rI   s        r   rK   zDirFileSystem.copyq   sV    tw|JJuJJu
 
 
 
 	
 
 	
r   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   _piper   r=   s       r   rM   zDirFileSystem._pipey   sH      "TW]4::d#3#3EdEEEfEEEEEEEEEr   c                 T     | j         j        |                     |          g|R i |S r0   )r   piper   r=   s       r   rO   zDirFileSystem.pipe|   2    tw|DJJt,,>t>>>v>>>r   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   	_cat_filer   r=   s       r   rR   zDirFileSystem._cat_file   I      &TW&tzz$'7'7I$III&IIIIIIIIIr   c                 T     | j         j        |                     |          g|R i |S r0   )r   cat_filer   r=   s       r   rU   zDirFileSystem.cat_file   3    tw

4 0 0B4BBB6BBBr   c                     K     j         j                             |          g|R i | d {V }t          |t                    r  fd|                                D             S |S )Nc                 B    i | ]\  }}                     |          |S r
   r*   r   keyvaluer   s      r   
<dictcomp>z&DirFileSystem._cat.<locals>.<dictcomp>   +    LLL*#uDMM#&&LLLr   )r   _catr   r"   dictitemsr   r   r4   r5   rets   `    r   r^   zDirFileSystem._cat   s       DGLJJt

 
 
 
 
 
 
 
 
 
 
 c4   	MLLLL		LLLL
r   c                        j         j                             |          g|R i |}t          |t                    r  fd|                                D             S |S )Nc                 B    i | ]\  }}                     |          |S r
   r*   rY   s      r   r\   z%DirFileSystem.cat.<locals>.<dictcomp>   r]   r   )r   catr   r"   r_   r`   ra   s   `    r   re   zDirFileSystem.cat   s    dgkJJt

 
 
 
 
 c4   	MLLLL		LLLL
r   c                 `   K    | j         j        ||                     |          fi | d {V S r0   )r   	_put_filer   r   lpathrpathr5   s       r   rg   zDirFileSystem._put_file   sC      &TW&udjj.?.?JJ6JJJJJJJJJr   c                 P     | j         j        ||                     |          fi |S r0   )r   put_filer   rh   s       r   rl   zDirFileSystem.put_file   s-    twtzz%'8'8CCFCCCr   c                 f   K    | j         j        ||                     |          g|R i | d {V S r0   )r   _putr   r   ri   rj   r4   r5   s        r   rn   zDirFileSystem._put   sn       "TW\JJu
 
 
 
 	
 
 
 
 
 
 
 
 	
r   c                 V     | j         j        ||                     |          g|R i |S r0   )r   putr   ro   s        r   rq   zDirFileSystem.put   sJ    tw{JJu
 
 
 
 	
 
 	
r   c                 `   K    | j         j        |                     |          |fi | d {V S r0   )r   	_get_filer   r   rj   ri   r5   s       r   rs   zDirFileSystem._get_file   sC      &TW&tzz%'8'8%JJ6JJJJJJJJJr   c                 P     | j         j        |                     |          |fi |S r0   )r   get_filer   rt   s       r   rv   zDirFileSystem.get_file   s-    tw

5 1 15CCFCCCr   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   _getr   r   rj   r4   r5   s       r   rx   zDirFileSystem._get   sH      !TW\$**U"3"3EdEEEfEEEEEEEEEr   c                 T     | j         j        |                     |          g|R i |S r0   )r   getr   ry   s       r   r{   zDirFileSystem.get   s2    tw{4::e,,>t>>>v>>>r   c                 l   K   | j                             |                     |                     d {V S r0   )r   _isfiler   r&   s     r   r}   zDirFileSystem._isfile   8      W__TZZ%5%5666666666r   c                 \    | j                             |                     |                    S r0   )r   isfiler   r&   s     r   r   zDirFileSystem.isfile   "    w~~djj..///r   c                 l   K   | j                             |                     |                     d {V S r0   )r   _isdirr   r&   s     r   r   zDirFileSystem._isdir   s8      W^^DJJt$4$4555555555r   c                 \    | j                             |                     |                    S r0   )r   isdirr   r&   s     r   r   zDirFileSystem.isdir   "    w}}TZZ--...r   c                 l   K   | j                             |                     |                     d {V S r0   )r   _sizer   r&   s     r   r   zDirFileSystem._size   s8      W]]4::d#3#3444444444r   c                 \    | j                             |                     |                    S r0   )r   sizer   r&   s     r   r   zDirFileSystem.size   s"    w||DJJt,,---r   c                 l   K   | j                             |                     |                     d {V S r0   )r   _existsr   r&   s     r   r   zDirFileSystem._exists   r~   r   c                 \    | j                             |                     |                    S r0   )r   existsr   r&   s     r   r   zDirFileSystem.exists   r   r   c                 ^   K    | j         j        |                     |          fi | d {V S r0   )r   _infor   r8   s      r   r   zDirFileSystem._info   s@      "TW]4::d#3#3>>v>>>>>>>>>r   c                 N     | j         j        |                     |          fi |S r0   )r   infor   r8   s      r   r   zDirFileSystem.info   s*    tw|DJJt,,77777r   Tc                 T  K    | j         j        |                     |          fd|i| d {V                                 }|rPg }|D ]I}|                                }|                     |d                   |d<   |                    |           J|S |                     |          S Ndetailname)r   _lsr   rK   r+   appendr   r   r   r5   rb   outentrys          r   r   zDirFileSystem._ls   s       TW[D!1!1KK&KFKKKKKKKKQQSS 	C " "

 $eFm < <f

5!!!!J}}S!!!r   c                 D    | j         j        |                     |          fd|i|                                }|rPg }|D ]I}|                                }|                     |d                   |d<   |                    |           J|S |                     |          S r   )r   lsr   rK   r+   r   r   s          r   r   zDirFileSystem.ls   s    dgjD))CC&CFCCHHJJ 	C " "

 $eFm < <f

5!!!!J}}S!!!r   c                   K    | j         j        |                     |          g|R i |2 3 d {V \  }}}|                     |          ||fW V  '6 d S r0   )r   _walkr   r+   r   r   r4   r5   rootdirsfiless          r   r   zDirFileSystem._walk   s      '4tw}TZZ5E5E'W'W'W'WPV'W'W 	3 	3 	3 	3 	3 	3 	3#$e--%%tU222222 (X'W'Ws   Ac              /      K    | j         j        |                     |          g|R i |D ] \  }}}|                     |          ||fV  !d S r0   )r   walkr   r+   r   s          r   r   zDirFileSystem.walk   sr      !-djj.>.>!P!P!P!P!P!P 	3 	3D$--%%tU22222	3 	3r   c                     K   |                     dd          }  j        j                             |          fi | d {V }|r  fd|                                D             S                      |          S )Nr   Fc                 B    i | ]\  }}                     |          |S r
   r*   r   r   r   r   s      r   r\   z'DirFileSystem._glob.<locals>.<dictcomp>  +    LLL*$DMM$''LLLr   )r{   r   _globr   r`   r+   r   r   r5   r   rb   s   `    r   r   zDirFileSystem._glob  s      He,,!DGM$**T"2"2==f======== 	MLLLL		LLLL}}S!!!r   c                      |                     dd          }  j        j                             |          fi |}|r  fd|                                D             S                      |          S )Nr   Fc                 B    i | ]\  }}                     |          |S r
   r*   r   s      r   r\   z&DirFileSystem.glob.<locals>.<dictcomp>  r   r   )r{   r   globr   r`   r+   r   s   `    r   r   zDirFileSystem.glob
  sz    He,,dgl4::d++66v66 	MLLLL		LLLL}}S!!!r   c                     K   |                     dd          }  j        j                             |          g|R i | d {V }|r|S  fd|                                D             S )NtotalTc                 B    i | ]\  }}                     |          |S r
   r*   r   r   r   r   s      r   r\   z%DirFileSystem._du.<locals>.<dictcomp>  +    HHHjdDd##THHHr   )r{   r   _dur   r`   r   r   r4   r5   r   rb   s   `     r   r   zDirFileSystem._du  s      

7D))DGK

4 0 0B4BBB6BBBBBBBB 	JHHHHCIIKKHHHHr   c                      |                     dd          }  j        j                             |          g|R i |}|r|S  fd|                                D             S )Nr   Tc                 B    i | ]\  }}                     |          |S r
   r*   r   s      r   r\   z$DirFileSystem.du.<locals>.<dictcomp>  r   r   )r{   r   dur   r`   r   s   `     r   r   zDirFileSystem.du  st    

7D))dgjD));D;;;F;; 	JHHHHCIIKKHHHHr   c                     K   |                     dd          }  j        j                             |          g|R i | d {V }|r  fd|                                D             S                      |          S )Nr   Fc                 B    i | ]\  }}                     |          |S r
   r*   r   s      r   r\   z'DirFileSystem._find.<locals>.<dictcomp>%  r   r   )r{   r   _findr   r`   r+   r   r   r4   r5   r   rb   s   `     r   r   zDirFileSystem._find!  s      He,,!DGM$**T"2"2DTDDDVDDDDDDDD 	MLLLL		LLLL}}S!!!r   c                      |                     dd          }  j        j                             |          g|R i |}|r  fd|                                D             S                      |          S )Nr   Fc                 B    i | ]\  }}                     |          |S r
   r*   r   s      r   r\   z&DirFileSystem.find.<locals>.<dictcomp>,  r   r   )r{   r   findr   r`   r+   r   s   `     r   r   zDirFileSystem.find(  s    He,,dgl4::d++=d===f== 	MLLLL		LLLL}}S!!!r   c                    K   |                       | j        j        |                     |          g|R i | d {V           S r0   )r+   r   _expand_pathr   r=   s       r   r   zDirFileSystem._expand_path/  s\      }}&$'&tzz$'7'7I$III&IIIIIIII
 
 	
r   c                 z    |                       | j        j        |                     |          g|R i |          S r0   )r+   r   expand_pathr   r=   s       r   r   zDirFileSystem.expand_path4  s@    }}0TW0D1A1ASDSSSFSSTTTr   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   _mkdirr   r=   s       r   r   zDirFileSystem._mkdir7  sH      #TW^DJJt$4$4FtFFFvFFFFFFFFFr   c                 T     | j         j        |                     |          g|R i |S r0   )r   mkdirr   r=   s       r   r   zDirFileSystem.mkdir:  s2    tw}TZZ--???????r   c                 d   K    | j         j        |                     |          g|R i | d {V S r0   )r   	_makedirsr   r=   s       r   r   zDirFileSystem._makedirs=  rS   r   c                 T     | j         j        |                     |          g|R i |S r0   )r   makedirsr   r=   s       r   r   zDirFileSystem.makedirs@  rV   r   c                 \    | j                             |                     |                    S r0   )r   rmdirr   r&   s     r   r   zDirFileSystem.rmdirC  r   r   c                 v     | j         j        |                     |          |                     |          fi |S r0   )r   mv_filer   rB   s       r   r   zDirFileSystem.mv_fileF  sG    twJJuJJu
 
 
 
 	
r   c                 N     | j         j        |                     |          fi |S r0   )r   touchr   r8   s      r   r   zDirFileSystem.touchM  s*    tw}TZZ--88888r   c                 \    | j                             |                     |                    S r0   )r   createdr   r&   s     r   r   zDirFileSystem.createdP  s"    wtzz$//000r   c                 \    | j                             |                     |                    S r0   )r   modifiedr   r&   s     r   r   zDirFileSystem.modifiedS  s$    w

4 0 0111r   c                 T     | j         j        |                     |          g|R i |S r0   )r   signr   r=   s       r   r   zDirFileSystem.signV  rP   r   c                 @    | j         j         d| j         d| j         dS )Nz(path='z', fs=))r   __qualname__r   r   r1   s    r   __repr__zDirFileSystem.__repr__Y  s*    .-QQdiQQtwQQQQr   c                 T     | j         j        |                     |          g|R i |S r0   )r   openr   r=   s       r   r   zDirFileSystem.open\  sG     tw|JJt

 
 
 
 
 	
r   )NNNNN)T)D__name__
__module__r   __doc__r	   r   r   r+   propertyr$   r3   r7   r:   r<   r?   rA   rF   rH   rK   rM   rO   rR   rU   r^   re   rg   rl   rn   rq   rs   rv   rx   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r      s6         H # # # # # #J5 5 5	8 	8 	8   X: : :B B B; ; ;D D D= = =V V VO O O
 
 

 
 
F F F? ? ?J J JC C C
 
 

 
 
K K KD D D
 
 

 
 
K K KD D DF F F? ? ?7 7 70 0 06 6 6/ / /5 5 5. . .7 7 70 0 0? ? ?8 8 8
" 
" 
" 
"
" 
" 
" 
"3 3 33 3 3" " "" " "I I II I I" " "" " "
 
 

U U UG G G@ @ @J J JC C C/ / /
 
 
9 9 91 1 12 2 2? ? ?R R R

 

 

 

 

 

 

r   r   N)r(   r   asynr   r   r
   r   r   <module>r      sg          " " " " " "a
 a
 a
 a
 a
O a
 a
 a
 a
 a
r   