U
    xÊ¹jL/  ã                   @   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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d0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Z d:d;„ Z!d<d=„ Z"d>d?„ Z#d@dA„ Z$dBdC„ Z%dDdE„ Z&dFdG„ Z'dHdI„ Z(dJdK„ Z)dLdM„ Z*dNdO„ Z+dPdQ„ Z,d†dSdT„Z-d‡dUdV„Z.dWdX„ Z/dYdZ„ Z0d[d\„ Z1d]d^„ Z2d_d`„ Z3dadb„ Z4dcdd„ Z5dedf„ Z6dgdh„ Z7didj„ Z8dkdl„ Z9dmdn„ Z:dodp„ Z;dqdr„ Z<dsdt„ Z=dudv„ Z>dwdx„ Z?dydz„ Z@d{d|„ ZAd}d~„ ZBdd€„ ZCd�d‚„ ZDdƒd„„ ZE‡  ZFS )ˆÚDirFileSystemzþDirectory 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                    sx   t ƒ jf |Ž |dkr,tf d|i|p&i —Ž}|p2|}| jrH|jsHtdƒ‚|jrb| j|jkrbt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   ZasynchronousZ
async_implÚ
ValueErrorÚ_strip_protocolÚpathÚfs)Úselfr   r   ÚfoZtarget_protocolZtarget_optionsZstorage_options©Ú	__class__© ú[/var/www/html/bwave/python/venv/lib/python3.8/site-packages/fsspec/implementations/dirfs.pyr      s    zDirFileSystem.__init__c                    sj   t |tƒr8ˆ js|S |sˆ jS ˆ jj ˆ jˆ  |¡f¡S t |tƒrX‡ fdd„| ¡ D ƒS ‡ fdd„|D ƒS )Nc                    s   i | ]\}}ˆ   |¡|“qS r   ©Ú_join)Ú.0Ú_pathÚvalue©r   r   r   Ú
<dictcomp>:   s      z'DirFileSystem._join.<locals>.<dictcomp>c                    s   g | ]}ˆ   |¡‘qS r   r   ©r   r   r   r   r   Ú
<listcomp>;   s     z'DirFileSystem._join.<locals>.<listcomp>)	Ú
isinstanceÚstrr   r   ÚsepÚjoinr
   ÚdictÚitems©r   r   r   r   r   r   2   s    

zDirFileSystem._joinc                    s¬   t |tƒršˆ js|S |ˆ jks@ˆ j ˆ jj¡rD|ˆ jdd … krDdS ˆ jˆ jj }ˆ j ˆ jj¡r|| ˆ jj¡s||dd … }| |¡sŠt‚|t|ƒd … S ‡ fdd„|D ƒS )Né   Ú c                    s   g | ]}ˆ   |¡‘qS r   ©Ú_relpathr   r   r   r   r   L   s     z*DirFileSystem._relpath.<locals>.<listcomp>)r   r   r   Ú
startswithr   r   Ú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   P   s    zDirFileSystem.sepc                 Ï   s   | j j||ŽI d H S r+   )r   Úset_session)r   ÚargsÚkwargsr   r   r   r,   T   s    zDirFileSystem.set_sessionc                 Ë   s   | j j|  |¡f|ŽI d H S r+   )r   Ú_rm_filer   ©r   r   r.   r   r   r   r/   W   s    zDirFileSystem._rm_filec                 K   s   | j j|  |¡f|ŽS r+   )r   Úrm_filer   r0   r   r   r   r1   Z   s    zDirFileSystem.rm_filec                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú_rmr   ©r   r   r-   r.   r   r   r   r2   ]   s    zDirFileSystem._rmc                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úrmr   r3   r   r   r   r4   `   s    zDirFileSystem.rmc                 Ë   s$   | j j|  |¡|  |¡f|ŽI d H S r+   )r   Ú_cp_filer   ©r   Úpath1Úpath2r.   r   r   r   r5   c   s    zDirFileSystem._cp_filec                 K   s   | j j|  |¡|  |¡f|ŽS r+   )r   Úcp_filer   r6   r   r   r   r9   f   s    zDirFileSystem.cp_filec                 Ï   s(   | j j|  |¡|  |¡f|ž|ŽI d H S r+   )r   Ú_copyr   ©r   r7   r8   r-   r.   r   r   r   r:   i   s    þýüzDirFileSystem._copyc                 O   s"   | j j|  |¡|  |¡f|ž|ŽS r+   )r   Úcopyr   r;   r   r   r   r<   w   s    þýüzDirFileSystem.copyc                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú_piper   r3   r   r   r   r=      s    zDirFileSystem._pipec                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úpiper   r3   r   r   r   r>   ‚   s    zDirFileSystem.pipec                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú
_pipe_filer   r3   r   r   r   r?   …   s    zDirFileSystem._pipe_filec                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Ú	pipe_filer   r3   r   r   r   r@   ˆ   s    zDirFileSystem.pipe_filec                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú	_cat_filer   r3   r   r   r   rA   ‹   s    zDirFileSystem._cat_filec                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úcat_filer   r3   r   r   r   rB   Ž   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   Úkeyr   r   r   r   r   ™   s      z&DirFileSystem._cat.<locals>.<dictcomp>)r   Ú_catr   r   r    r!   ©r   r   r-   r.   Úretr   r   r   rE   ‘   s    ÿþý

zDirFileSystem._catc                    s>   ˆ j jˆ  |¡f|ž|Ž}t|tƒr:‡ fdd„| ¡ D ƒS |S )Nc                    s   i | ]\}}ˆ   |¡|“qS r   r%   rC   r   r   r   r   ¥   s      z%DirFileSystem.cat.<locals>.<dictcomp>)r   Úcatr   r   r    r!   rF   r   r   r   rH   �   s    ÿþý
zDirFileSystem.catc                 Ë   s   | j j||  |¡f|ŽI d H S r+   )r   Ú	_put_filer   ©r   ÚlpathÚrpathr.   r   r   r   rI   ©   s    zDirFileSystem._put_filec                 K   s   | j j||  |¡f|ŽS r+   )r   Úput_filer   rJ   r   r   r   rM   ¬   s    zDirFileSystem.put_filec                 Ï   s"   | j j||  |¡f|ž|ŽI d H S r+   )r   Ú_putr   ©r   rK   rL   r-   r.   r   r   r   rN   ¯   s    þýüzDirFileSystem._putc                 O   s   | j j||  |¡f|ž|ŽS r+   )r   Úputr   rO   r   r   r   rP   ½   s    þýüzDirFileSystem.putc                 Ë   s   | j j|  |¡|f|ŽI d H S r+   )r   Ú	_get_filer   ©r   rL   rK   r.   r   r   r   rQ   Å   s    zDirFileSystem._get_filec                 K   s   | j j|  |¡|f|ŽS r+   )r   Úget_filer   rR   r   r   r   rS   È   s    zDirFileSystem.get_filec                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú_getr   ©r   rL   r-   r.   r   r   r   rT   Ë   s    zDirFileSystem._getc                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úgetr   rU   r   r   r   rV   Î   s    zDirFileSystem.getc                 Ã   s   | j  |  |¡¡I d H S r+   )r   Ú_isfiler   r"   r   r   r   rW   Ñ   s    zDirFileSystem._isfilec                 C   s   | j  |  |¡¡S r+   )r   Úisfiler   r"   r   r   r   rX   Ô   s    zDirFileSystem.isfilec                 Ã   s   | j  |  |¡¡I d H S r+   )r   Ú_isdirr   r"   r   r   r   rY   ×   s    zDirFileSystem._isdirc                 C   s   | j  |  |¡¡S r+   )r   Úisdirr   r"   r   r   r   rZ   Ú   s    zDirFileSystem.isdirc                 Ã   s   | j  |  |¡¡I d H S r+   )r   Ú_sizer   r"   r   r   r   r[   Ý   s    zDirFileSystem._sizec                 C   s   | j  |  |¡¡S r+   )r   Úsizer   r"   r   r   r   r\   à   s    zDirFileSystem.sizec                 Ã   s   | j  |  |¡¡I d H S r+   )r   Ú_existsr   r"   r   r   r   r]   ã   s    zDirFileSystem._existsc                 C   s   | j  |  |¡¡S r+   )r   Úexistsr   r"   r   r   r   r^   æ   s    zDirFileSystem.existsc                 Ë   s:   | j j|  |¡f|ŽI d H }| ¡ }|  |d ¡|d< |S ©NÚname)r   Ú_infor   r<   r&   ©r   r   r.   Úinfor   r   r   ra   é   s    zDirFileSystem._infoc                 K   s4   | j j|  |¡f|Ž}| ¡ }|  |d ¡|d< |S r_   )r   rc   r   r<   r&   rb   r   r   r   rc   ï   s    zDirFileSystem.infoTc                 Ë   sl   | j j|  |¡fd|i|—ŽI d H  ¡ }|rbg }|D ](}| ¡ }|  |d ¡|d< | |¡ q4|S |  |¡S ©NÚdetailr`   )r   Ú_lsr   r<   r&   Úappend©r   r   re   r.   rG   ÚoutÚentryr   r   r   rf   õ   s    (zDirFileSystem._lsc                 K   sf   | j j|  |¡fd|i|—Ž ¡ }|r\g }|D ](}| ¡ }|  |d ¡|d< | |¡ q.|S |  |¡S rd   )r   Úlsr   r<   r&   rg   rh   r   r   r   rk     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   rl     s    ,zDirFileSystem._walkc                 o   s<   | j j|  |¡f|ž|ŽD ]\}}}|  |¡||fV  qd S r+   )r   Úwalkr   r&   rm   r   r   r   rq     s    $zDirFileSystem.walkc                 ‹   sL   |  dd¡}ˆ jjˆ  |¡f|ŽI d H }|rB‡ fdd„| ¡ D ƒS ˆ  |¡S )Nre   Fc                    s   i | ]\}}ˆ   |¡|“qS r   r%   ©r   r   rc   r   r   r   r     s      z'DirFileSystem._glob.<locals>.<dictcomp>)rV   r   Ú_globr   r!   r&   ©r   r   r.   re   rG   r   r   r   rs     s
    zDirFileSystem._globc                    sF   |  dd¡}ˆ jjˆ  |¡f|Ž}|r<‡ fdd„| ¡ D ƒS ˆ  |¡S )Nre   Fc                    s   i | ]\}}ˆ   |¡|“qS r   r%   rr   r   r   r   r      s      z&DirFileSystem.glob.<locals>.<dictcomp>)rV   r   Úglobr   r!   r&   rt   r   r   r   ru     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   r\   r   r   r   r   )  s      z%DirFileSystem._du.<locals>.<dictcomp>)rV   r   Ú_dur   r!   ©r   r   r-   r.   rv   rG   r   r   r   rx   #  s
     zDirFileSystem._duc                    sD   |  dd¡}ˆ jjˆ  |¡f|ž|Ž}|r.|S ‡ fdd„| ¡ D ƒS )Nrv   Tc                    s   i | ]\}}ˆ   |¡|“qS r   r%   rw   r   r   r   r   1  s      z$DirFileSystem.du.<locals>.<dictcomp>)rV   r   Údur   r!   ry   r   r   r   rz   +  s
    zDirFileSystem.duc                 �   sP   |  dd¡}ˆ jjˆ  |¡f|ž|ŽI d H }|rF‡ fdd„| ¡ D ƒS ˆ  |¡S )Nre   Fc                    s   i | ]\}}ˆ   |¡|“qS r   r%   rr   r   r   r   r   7  s      z'DirFileSystem._find.<locals>.<dictcomp>)rV   r   Ú_findr   r!   r&   ©r   r   r-   r.   re   rG   r   r   r   r{   3  s
     zDirFileSystem._findc                    sJ   |  dd¡}ˆ jjˆ  |¡f|ž|Ž}|r@‡ fdd„| ¡ D ƒS ˆ  |¡S )Nre   Fc                    s   i | ]\}}ˆ   |¡|“qS r   r%   rr   r   r   r   r   >  s      z&DirFileSystem.find.<locals>.<dictcomp>)rV   r   Úfindr   r!   r&   r|   r   r   r   r}   :  s
    zDirFileSystem.findc                 Ï   s&   |   | jj|  |¡f|ž|ŽI d H ¡S r+   )r&   r   Ú_expand_pathr   r3   r   r   r   r~   A  s    ÿzDirFileSystem._expand_pathc                 O   s    |   | jj|  |¡f|ž|Ž¡S r+   )r&   r   Úexpand_pathr   r3   r   r   r   r   F  s    zDirFileSystem.expand_pathc                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú_mkdirr   r3   r   r   r   r€   I  s    zDirFileSystem._mkdirc                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úmkdirr   r3   r   r   r   r�   L  s    zDirFileSystem.mkdirc                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú	_makedirsr   r3   r   r   r   r‚   O  s    zDirFileSystem._makedirsc                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úmakedirsr   r3   r   r   r   rƒ   R  s    zDirFileSystem.makedirsc                 C   s   | j  |  |¡¡S r+   )r   Úrmdirr   r"   r   r   r   r„   U  s    zDirFileSystem.rmdirc                 K   s   | j j|  |¡|  |¡f|ŽS r+   )r   Úmvr   r6   r   r   r   r…   X  s    þýzDirFileSystem.mvc                 K   s   | j j|  |¡f|ŽS r+   )r   Útouchr   r0   r   r   r   r†   _  s    zDirFileSystem.touchc                 C   s   | j  |  |¡¡S r+   )r   Úcreatedr   r"   r   r   r   r‡   b  s    zDirFileSystem.createdc                 C   s   | j  |  |¡¡S r+   )r   Úmodifiedr   r"   r   r   r   rˆ   e  s    zDirFileSystem.modifiedc                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úsignr   r3   r   r   r   r‰   h  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__k  s    zDirFileSystem.__repr__c                 O   s   | j j|  |¡f|ž|ŽS r+   )r   Úopenr   r3   r   r   r   r�   n  s    ÿþýzDirFileSystem.openc                 Ï   s    | j j|  |¡f|ž|ŽI d H S r+   )r   Ú
open_asyncr   r3   r   r   r   rŽ   z  s    ÿþýzDirFileSystem.open_async)NNNNN)T)T)GÚ__name__Ú
__module__r‹   Ú__doc__r   r   r   r&   Úpropertyr   r,   r/   r1   r2   r4   r5   r9   r:   r<   r=   r>   r?   r@   rA   rB   rE   rH   rI   rM   rN   rP   rQ   rS   rT   rV   rW   rX   rY   rZ   r[   r\   r]   r^   ra   rc   rf   rk   rl   rq   rs   ru   rx   rz   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   Zasynr   r   r   r   r   r   Ú<module>   s   