U
    -eT+                     @   s,   d dl mZ d dlmZ G dd deZdS )   )
filesystem)AsyncFileSystemc                       s
  e 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d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d'd( Zd)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)ddNdOZ*ddPdQZ+dRdS Z,dTdU Z-dVdW Z.dXdY Z/dZd[ 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} ZA  ZBS )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.
    Nc                    s   t  jf | |dkr,tf d|i|p&i }|dk	|dk	A dkrHtd|pN|}| jrd|jsdt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   
ValueErrorZasynchronousZ
async_implZ_strip_protocolpathfs)selfr	   r
   foZtarget_protocolZtarget_optionsZstorage_options	__class__ ]/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/fsspec/implementations/dirfs.pyr      s    zDirFileSystem.__init__c                    sD   t |tr2 js|S |s jS  jj j|fS  fdd|D S )Nc                    s   g | ]}  |qS r   )_join.0_pathr   r   r   
<listcomp>9   s     z'DirFileSystem._join.<locals>.<listcomp>)
isinstancestrr	   r
   sepjoinr   r	   r   r   r   r   2   s    
zDirFileSystem._joinc                    s`   t |trN js|S | jkr"dS  j jj }||s>t|t|d  S  fdd|D S )N c                    s   g | ]}  |qS r   _relpathr   r   r   r   r   D   s     z*DirFileSystem._relpath.<locals>.<listcomp>)r   r   r	   r
   r   
startswithAssertionErrorlen)r   r	   prefixr   r   r   r   ;   s    

zDirFileSystem._relpathc                 C   s   | j jS N)r
   r   r   r   r   r   r   H   s    zDirFileSystem.sepc                    s   | j j||I d H S r#   )r
   set_session)r   argskwargsr   r   r   r$   L   s    zDirFileSystem.set_sessionc                    s   | j j| |f|I d H S r#   )r
   _rm_filer   r   r	   r&   r   r   r   r'   O   s    zDirFileSystem._rm_filec                 K   s   | j j| |f|S r#   )r
   rm_filer   r(   r   r   r   r)   R   s    zDirFileSystem.rm_filec                    s    | j j| |f||I d H S r#   )r
   _rmr   r   r	   r%   r&   r   r   r   r*   U   s    zDirFileSystem._rmc                 O   s   | j j| |f||S r#   )r
   rmr   r+   r   r   r   r,   X   s    zDirFileSystem.rmc                    s$   | j j| || |f|I d H S r#   )r
   _cp_filer   r   path1path2r&   r   r   r   r-   [   s    zDirFileSystem._cp_filec                 K   s   | j j| || |f|S r#   )r
   cp_filer   r.   r   r   r   r1   ^   s    zDirFileSystem.cp_filec                    s(   | j j| || |f||I d H S r#   )r
   _copyr   r   r/   r0   r%   r&   r   r   r   r2   a   s    zDirFileSystem._copyc                 O   s"   | j j| || |f||S r#   )r
   copyr   r3   r   r   r   r4   o   s    zDirFileSystem.copyc                    s    | j j| |f||I d H S r#   )r
   _piper   r+   r   r   r   r5   w   s    zDirFileSystem._pipec                 O   s   | j j| |f||S r#   )r
   piper   r+   r   r   r   r6   z   s    zDirFileSystem.pipec                    s    | j j| |f||I d H S r#   )r
   	_cat_filer   r+   r   r   r   r7   }   s    zDirFileSystem._cat_filec                 O   s   | j j| |f||S r#   )r
   cat_filer   r+   r   r   r   r8      s    zDirFileSystem.cat_filec                    sD    j j |f||I d H }t|tr@ fdd| D S |S )Nc                    s   i | ]\}}  ||qS r   r   r   keyvaluer   r   r   
<dictcomp>   s      z&DirFileSystem._cat.<locals>.<dictcomp>)r
   _catr   r   dictitemsr   r	   r%   r&   retr   r   r   r=      s    

zDirFileSystem._catc                    s>    j j |f||}t|tr: fdd| D S |S )Nc                    s   i | ]\}}  ||qS r   r   r9   r   r   r   r<      s      z%DirFileSystem.cat.<locals>.<dictcomp>)r
   catr   r   r>   r?   r@   r   r   r   rB      s    
zDirFileSystem.catc                    s   | j j|| |f|I d H S r#   )r
   	_put_filer   r   lpathrpathr&   r   r   r   rC      s    zDirFileSystem._put_filec                 K   s   | j j|| |f|S r#   )r
   put_filer   rD   r   r   r   rG      s    zDirFileSystem.put_filec                    s"   | j j|| |f||I d H S r#   )r
   _putr   r   rE   rF   r%   r&   r   r   r   rH      s    zDirFileSystem._putc                 O   s   | j j|| |f||S r#   )r
   putr   rI   r   r   r   rJ      s    zDirFileSystem.putc                    s   | j j| ||f|I d H S r#   )r
   	_get_filer   r   rF   rE   r&   r   r   r   rK      s    zDirFileSystem._get_filec                 K   s   | j j| ||f|S r#   )r
   get_filer   rL   r   r   r   rM      s    zDirFileSystem.get_filec                    s    | j j| |f||I d H S r#   )r
   _getr   r   rF   r%   r&   r   r   r   rN      s    zDirFileSystem._getc                 O   s   | j j| |f||S r#   )r
   getr   rO   r   r   r   rP      s    zDirFileSystem.getc                    s   | j | |I d H S r#   )r
   _isfiler   r   r   r   r   rQ      s    zDirFileSystem._isfilec                 C   s   | j | |S r#   )r
   isfiler   r   r   r   r   rR      s    zDirFileSystem.isfilec                    s   | j | |I d H S r#   )r
   _isdirr   r   r   r   r   rS      s    zDirFileSystem._isdirc                 C   s   | j | |S r#   )r
   isdirr   r   r   r   r   rT      s    zDirFileSystem.isdirc                    s   | j | |I d H S r#   )r
   _sizer   r   r   r   r   rU      s    zDirFileSystem._sizec                 C   s   | j | |S r#   )r
   sizer   r   r   r   r   rV      s    zDirFileSystem.sizec                    s   | j | |I d H S r#   )r
   _existsr   r   r   r   r   rW      s    zDirFileSystem._existsc                 C   s   | j | |S r#   )r
   existsr   r   r   r   r   rX      s    zDirFileSystem.existsc                    s   | j j| |f|I d H S r#   )r
   _infor   r(   r   r   r   rY      s    zDirFileSystem._infoc                 K   s   | j j| |f|S r#   )r
   infor   r(   r   r   r   rZ      s    zDirFileSystem.infoTc                    sl   | j j| |fd|i|I d H  }|rbg }|D ](}| }| |d |d< || q4|S | |S Ndetailname)r
   _lsr   r4   r   appendr   r	   r\   r&   rA   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   r4   r   r_   r`   r   r   r   rc      s    "zDirFileSystem.lsc                 O  sF   | j j| |f||2 z$3 d H W \}}}| |||fV  q6 d S r#   )r
   _walkr   r   r   r	   r%   r&   rootdirsfilesr   r   r   rd      s    ,zDirFileSystem._walkc                 o   s<   | j j| |f||D ]\}}}| |||fV  qd S r#   )r
   walkr   r   re   r   r   r   ri      s    $zDirFileSystem.walkc                    sL   | dd} jj |f|I d H }|rB fdd| D S  |S )Nr\   Fc                    s   i | ]\}}  ||qS r   r   r   r	   rZ   r   r   r   r<     s      z'DirFileSystem._glob.<locals>.<dictcomp>)rP   r
   _globr   r?   r   r   r	   r&   r\   rA   r   r   r   rk     s
    zDirFileSystem._globc                    sF   | dd} jj |f|}|r< fdd| D S  |S )Nr\   Fc                    s   i | ]\}}  ||qS r   r   rj   r   r   r   r<     s      z&DirFileSystem.glob.<locals>.<dictcomp>)rP   r
   globr   r?   r   rl   r   r   r   rm     s
    zDirFileSystem.globc                    sJ   | dd} jj |f||I d H }|r4|S  fdd| D S )NtotalTc                    s   i | ]\}}  ||qS r   r   r   r	   rV   r   r   r   r<     s      z%DirFileSystem._du.<locals>.<dictcomp>)rP   r
   _dur   r?   r   r	   r%   r&   rn   rA   r   r   r   rp     s
     zDirFileSystem._duc                    sD   | dd} jj |f||}|r.|S  fdd| D S )Nrn   Tc                    s   i | ]\}}  ||qS r   r   ro   r   r   r   r<     s      z$DirFileSystem.du.<locals>.<dictcomp>)rP   r
   dur   r?   rq   r   r   r   rr     s
    zDirFileSystem.duc                    sP   | dd} jj |f||I d H }|rF fdd| D S  |S )Nr\   Fc                    s   i | ]\}}  ||qS r   r   rj   r   r   r   r<   #  s      z'DirFileSystem._find.<locals>.<dictcomp>)rP   r
   _findr   r?   r   r   r	   r%   r&   r\   rA   r   r   r   rs     s
     zDirFileSystem._findc                    sJ   | dd} jj |f||}|r@ fdd| D S  |S )Nr\   Fc                    s   i | ]\}}  ||qS r   r   rj   r   r   r   r<   *  s      z&DirFileSystem.find.<locals>.<dictcomp>)rP   r
   findr   r?   r   rt   r   r   r   ru   &  s
    zDirFileSystem.findc                    s&   |  | jj| |f||I d H S r#   )r   r
   _expand_pathr   r+   r   r   r   rv   -  s    zDirFileSystem._expand_pathc                 O   s    |  | jj| |f||S r#   )r   r
   expand_pathr   r+   r   r   r   rw   2  s    zDirFileSystem.expand_pathc                    s    | j j| |f||I d H S r#   )r
   _mkdirr   r+   r   r   r   rx   5  s    zDirFileSystem._mkdirc                 O   s   | j j| |f||S r#   )r
   mkdirr   r+   r   r   r   ry   8  s    zDirFileSystem.mkdirc                    s    | j j| |f||I d H S r#   )r
   	_makedirsr   r+   r   r   r   rz   ;  s    zDirFileSystem._makedirsc                 O   s   | j j| |f||S r#   )r
   makedirsr   r+   r   r   r   r{   >  s    zDirFileSystem.makedirsc                 C   s   | j | |S r#   )r
   rmdirr   r   r   r   r   r|   A  s    zDirFileSystem.rmdirc                 K   s   | j j| || |f|S r#   )r
   mv_filer   r.   r   r   r   r}   D  s    zDirFileSystem.mv_filec                 K   s   | j j| |f|S r#   )r
   touchr   r(   r   r   r   r~   K  s    zDirFileSystem.touchc                 C   s   | j | |S r#   )r
   createdr   r   r   r   r   r   N  s    zDirFileSystem.createdc                 C   s   | j | |S r#   )r
   modifiedr   r   r   r   r   r   Q  s    zDirFileSystem.modifiedc                 O   s   | j j| |f||S r#   )r
   signr   r+   r   r   r   r   T  s    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__W  s    zDirFileSystem.__repr__c                 O   s   | j j| |f||S r#   )r
   openr   r+   r   r   r   r   Z  s    zDirFileSystem.open)NNNNN)T)T)C__name__
__module__r   __doc__r   r   r   propertyr   r$   r'   r)   r*   r,   r-   r1   r2   r4   r5   r6   r7   r8   r=   rB   rC   rG   rH   rJ   rK   rM   rN   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r^   rc   rd   ri   rk   rm   rp   rr   rs   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   __classcell__r   r   r   r   r      s   	     %	


r   N)r   r   Zasynr   r   r   r   r   r   <module>   s   