o
    i9:jP1                     @   s:   d dl mZ d dlmZ ddlmZ G dd deeZdS )   )
filesystem)AsyncFileSystem   )ChainedFileSystemc                       sF  e Zd ZdZdZ					d fdd	Zdd Zdd	 Zed
d Z	dd Z
dd Zdd Zdd Zdd ZdddZdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Z	dd)d*Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMdN Z*dOdP Z+dQdR Z,dSdT Z-dUdV Z.ddXdYZ/ddZd[Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=dvdw Z>dxdy Z?dzd{ Z@d|d} ZAd~d ZBdd ZCdd ZDdd ZEdd ZFdd ZG  ZHS )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                    s|   t  jdi | |du rtdd|i|pi }|p|}| jr&|js&td|jr3| j|jkr3t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protocolz(can't use asynchronous with non-async fsz7both dirfs and fs should be in the same sync/async mode )	super__init__r   asynchronous
async_impl
ValueError_strip_protocolpathfs)selfr   r   fotarget_protocoltarget_optionsstorage_options	__class__r	   c/home/nk/hobo-godmode/plappi-mvp/.venv/lib/python3.10/site-packages/fsspec/implementations/dirfs.pyr      s   
zDirFileSystem.__init__c                    sj   t |tr js
|S |s jS  jj j |fS t |tr, fdd| D S  fdd|D S )Nc                       i | ]
\}}  ||qS r	   _join).0_pathvaluer   r	   r   
<dictcomp>;       z'DirFileSystem._join.<locals>.<dictcomp>c                       g | ]}  |qS r	   r   r   r   r    r	   r   
<listcomp><       z'DirFileSystem._join.<locals>.<listcomp>)	
isinstancestrr   r   sepjoinr   dictitemsr   r   r	   r    r   r   3   s   

zDirFileSystem._joinc                    s   t |trM js
|S | jks  j jjr"| jdd  kr"dS  j jj } j jjr>| jjs>|dd  }||sEJ |t|d  S  fdd|D S )Nr    c                    r#   r	   _relpathr$   r    r	   r   r%   M   r&   z*DirFileSystem._relpath.<locals>.<listcomp>)r'   r(   r   
startswithr   r)   len)r   r   prefixr	   r    r   r0   >   s   

zDirFileSystem._relpathc                 C   s   | j jS N)r   r)   r    r	   r	   r   r)   Q   s   zDirFileSystem.sepc                    s   | j j|i |I d H S r4   )r   set_session)r   argskwargsr	   r	   r   r5   U      zDirFileSystem.set_sessionc                    s"   | j j| |fi |I d H S r4   )r   _rm_filer   r   r   r7   r	   r	   r   r9   X   s    zDirFileSystem._rm_filec                 K      | j j| |fi |S r4   )r   rm_filer   r:   r	   r	   r   r<   [      zDirFileSystem.rm_filec                    (   | j j| |g|R i |I d H S r4   )r   _rmr   r   r   r6   r7   r	   r	   r   r?   ^      &zDirFileSystem._rmc                 O       | j j| |g|R i |S r4   )r   rmr   r@   r	   r	   r   rC   a       zDirFileSystem.rmFc                 C   s   | j j| |||dS )N)	recursivemaxdepth)r   deleter   )r   r   rE   rF   r	   r	   r   rG   d   s   zDirFileSystem.deletec                    s*   | j j| || |fi |I d H S r4   )r   _cp_filer   r   path1path2r7   r	   r	   r   rH   g   s   (zDirFileSystem._cp_filec                 K   "   | j j| || |fi |S r4   )r   cp_filer   rI   r	   r	   r   rM   j   s   "zDirFileSystem.cp_filec                    s0   | j j| || |g|R i |I d H S r4   )r   _copyr   r   rJ   rK   r6   r7   r	   r	   r   rN   m   s   zDirFileSystem._copyc                 O   s(   | j j| || |g|R i |S r4   )r   copyr   rO   r	   r	   r   rP   {   s   zDirFileSystem.copyc                    r>   r4   )r   _piper   r@   r	   r	   r   rQ      rA   zDirFileSystem._pipec                 O   rB   r4   )r   piper   r@   r	   r	   r   rR      rD   zDirFileSystem.pipec                    r>   r4   )r   
_pipe_filer   r@   r	   r	   r   rS      rA   zDirFileSystem._pipe_filec                 O   rB   r4   )r   	pipe_filer   r@   r	   r	   r   rT      rD   zDirFileSystem.pipe_filec                 K   s$   | j j| ||f|||d|S )N)encodingerrorsnewline)r   
write_textr   )r   r   r   rU   rV   rW   r7   r	   r	   r   rX      s   zDirFileSystem.write_textc                    r>   r4   )r   	_cat_filer   r@   r	   r	   r   rY      rA   zDirFileSystem._cat_filec                 O   rB   r4   )r   cat_filer   r@   r	   r	   r   rZ      rD   zDirFileSystem.cat_filec                    sL    j j |g|R i |I d H }t|tr$ fdd| D S |S )Nc                    r   r	   r/   r   keyr   r    r	   r   r!      r"   z&DirFileSystem._cat.<locals>.<dictcomp>)r   _catr   r'   r+   r,   r   r   r6   r7   retr	   r    r   r]      s   
zDirFileSystem._catc                    sD    j j |g|R i |}t|tr  fdd| D S |S )Nc                    r   r	   r/   r[   r    r	   r   r!      r"   z%DirFileSystem.cat.<locals>.<dictcomp>)r   catr   r'   r+   r,   r^   r	   r    r   r`      s   
zDirFileSystem.catc                    s$   | j j|| |fi |I d H S r4   )r   	_put_filer   r   lpathrpathr7   r	   r	   r   ra         "zDirFileSystem._put_filec                 K   s   | j j|| |fi |S r4   )r   put_filer   rb   r	   r	   r   rf         zDirFileSystem.put_filec                    s*   | j j|| |g|R i |I d H S r4   )r   _putr   r   rc   rd   r6   r7   r	   r	   r   rh      s   zDirFileSystem._putc                 O   s"   | j j|| |g|R i |S r4   )r   putr   ri   r	   r	   r   rj      s   zDirFileSystem.putc                    s$   | j j| ||fi |I d H S r4   )r   	_get_filer   r   rd   rc   r7   r	   r	   r   rk      re   zDirFileSystem._get_filec                 K   s   | j j| ||fi |S r4   )r   get_filer   rl   r	   r	   r   rm      rg   zDirFileSystem.get_filec                    r>   r4   )r   _getr   r   rd   r6   r7   r	   r	   r   rn      rA   zDirFileSystem._getc                 O   rB   r4   )r   getr   ro   r	   r	   r   rp      rD   zDirFileSystem.getc                       | j | |I d H S r4   )r   _isfiler   r-   r	   r	   r   rr      r8   zDirFileSystem._isfilec                 C      | j | |S r4   )r   isfiler   r-   r	   r	   r   rt         zDirFileSystem.isfilec                    rq   r4   )r   _isdirr   r-   r	   r	   r   rv      r8   zDirFileSystem._isdirc                 C   rs   r4   )r   isdirr   r-   r	   r	   r   rw      ru   zDirFileSystem.isdirc                    rq   r4   )r   _sizer   r-   r	   r	   r   rx      r8   zDirFileSystem._sizec                 C   rs   r4   )r   sizer   r-   r	   r	   r   ry      ru   zDirFileSystem.sizec                    rq   r4   )r   _existsr   r-   r	   r	   r   rz      r8   zDirFileSystem._existsc                 C   rs   r4   )r   existsr   r-   r	   r	   r   r{      ru   zDirFileSystem.existsc                    s@   | j j| |fi |I d H }| }| |d |d< |S Nname)r   _infor   rP   r0   r   r   r7   infor	   r	   r   r~      s
    zDirFileSystem._infoc                 K   s8   | j j| |fi |}| }| |d |d< |S r|   )r   r   r   rP   r0   r   r	   r	   r   r      s   zDirFileSystem.infoTc                    sn   | j j| |fd|i|I d H  }|r2g }|D ]}| }| |d |d< || q|S | |S Ndetailr}   )r   _lsr   rP   r0   appendr   r   r   r7   r_   outentryr	   r	   r   r     s   (
zDirFileSystem._lsc                 K   sf   | j j| |fd|i| }|r.g }|D ]}| }| |d |d< || q|S | |S r   )r   lsr   rP   r0   r   r   r	   r	   r   r     s   "
zDirFileSystem.lsc                 O  sN   | j j| |g|R i |2 z3 d H W \}}}| |||fV  q6 d S r4   )r   _walkr   r0   r   r   r6   r7   rootdirsfilesr	   r	   r   r     s   2zDirFileSystem._walkc                 o   sD    | j j| |g|R i |D ]\}}}| |||fV  qd S r4   )r   walkr   r0   r   r	   r	   r   r   !  s   *zDirFileSystem.walkc                    sR   | dd} jj |fi |I d H }|r$ fdd| D S  |S )Nr   Fc                    r   r	   r/   r   r   r   r    r	   r   r!   )  r"   z'DirFileSystem._glob.<locals>.<dictcomp>)rp   r   _globr   r,   r0   r   r   r7   r   r_   r	   r    r   r   %  s    
zDirFileSystem._globc                    sJ   | dd} jj |fi |}|r  fdd| D S  |S )Nr   Fc                    r   r	   r/   r   r    r	   r   r!   0  r"   z&DirFileSystem.glob.<locals>.<dictcomp>)rp   r   globr   r,   r0   r   r	   r    r   r   ,  s
   
zDirFileSystem.globc                    sR   | dd} jj |g|R i |I d H }|r|S  fdd| D S )NtotalTc                    r   r	   r/   r   r   ry   r    r	   r   r!   9  r"   z%DirFileSystem._du.<locals>.<dictcomp>)rp   r   _dur   r,   r   r   r6   r7   r   r_   r	   r    r   r   3  s   &zDirFileSystem._duc                    sJ   | dd} jj |g|R i |}|r|S  fdd| D S )Nr   Tc                    r   r	   r/   r   r    r	   r   r!   A  r"   z$DirFileSystem.du.<locals>.<dictcomp>)rp   r   dur   r,   r   r	   r    r   r   ;  s
    zDirFileSystem.duc                    sX   | dd} jj |g|R i |I d H }|r' fdd| D S  |S )Nr   Fc                    r   r	   r/   r   r    r	   r   r!   G  r"   z'DirFileSystem._find.<locals>.<dictcomp>)rp   r   _findr   r,   r0   r   r   r6   r7   r   r_   r	   r    r   r   C  s   &
zDirFileSystem._findc                    sP   | dd} jj |g|R i |}|r# fdd| D S  |S )Nr   Fc                    r   r	   r/   r   r    r	   r   r!   N  r"   z&DirFileSystem.find.<locals>.<dictcomp>)rp   r   findr   r,   r0   r   r	   r    r   r   J  s
    
zDirFileSystem.findc                    s.   |  | jj| |g|R i |I d H S r4   )r0   r   _expand_pathr   r@   r	   r	   r   r   Q  s   $zDirFileSystem._expand_pathc                 O   s&   |  | jj| |g|R i |S r4   )r0   r   expand_pathr   r@   r	   r	   r   r   V  s   &zDirFileSystem.expand_pathc                    r>   r4   )r   _mkdirr   r@   r	   r	   r   r   Y  rA   zDirFileSystem._mkdirc                 O   rB   r4   )r   mkdirr   r@   r	   r	   r   r   \  rD   zDirFileSystem.mkdirc                    r>   r4   )r   	_makedirsr   r@   r	   r	   r   r   _  rA   zDirFileSystem._makedirsc                 O   rB   r4   )r   makedirsr   r@   r	   r	   r   r   b  rD   zDirFileSystem.makedirsc                 C   rs   r4   )r   rmdirr   r-   r	   r	   r   r   e  ru   zDirFileSystem.rmdirc                 K   rL   r4   )r   mvr   rI   r	   r	   r   r   h  s   zDirFileSystem.mvc                 K   r;   r4   )r   touchr   r:   r	   r	   r   r   o  r=   zDirFileSystem.touchc                 C   rs   r4   )r   createdr   r-   r	   r	   r   r   r  ru   zDirFileSystem.createdc                 C   rs   r4   )r   modifiedr   r-   r	   r	   r   r   u  ru   zDirFileSystem.modifiedc                 O   rB   r4   )r   signr   r@   r	   r	   r   r   x  rD   zDirFileSystem.signc                 C   s   | j j d| j d| j dS )Nz(path='z', fs=))r   __qualname__r   r   r    r	   r	   r   __repr__{  s   zDirFileSystem.__repr__c                 O   rB   r4   )r   openr   r@   r	   r	   r   r   ~  s   zDirFileSystem.openc                    r>   r4   )r   
open_asyncr   r@   r	   r	   r   r     s   zDirFileSystem.open_async)NNNNN)FN)NNN)T)I__name__
__module__r   __doc__r   r   r   r0   propertyr)   r5   r9   r<   r?   rC   rG   rH   rM   rN   rP   rQ   rR   rS   rT   rX   rY   rZ   r]   r`   ra   rf   rh   rj   rk   rm   rn   rp   rr   rt   rv   rw   rx   ry   rz   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	   r	   r   r   r      s    #




r   N)r.   r   asynr   chainedr   r   r	   r	   r	   r   <module>   s    