U
    9%ef	                     @   s,   d dl mZ d dlmZ G dd deZdS )    )AbstractFileSystem)tokenizec                   @   s>   e Zd ZdZdd ZeZdd Zdd Zdd	 ZdddZ	dS )AbstractArchiveFileSystema(  
    A generic superclass for implementing Archive-based filesystems.

    Currently, it is shared amongst
    :class:`~fsspec.implementations.zip.ZipFileSystem`,
    :class:`~fsspec.implementations.libarchive.LibArchiveFileSystem` and
    :class:`~fsspec.implementations.tar.TarFileSystem`.
    c                 C   s   dt | jt| f S )Nz<Archive-like object %s at %s>)type__name__idself r
   M/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/fsspec/archive.py__str__   s    z!AbstractArchiveFileSystem.__str__c                 C   s   t || j| jS N)r   foprotocol)r	   pathr
   r
   r   ukey   s    zAbstractArchiveFileSystem.ukeyc                    s:   t |dkrt S  fdd|D  jh }| |B S )zReturns *all* directory names for each path in paths, including intermediate
        ones.

        Parameters
        ----------
        paths: Iterable of path strings
        r   c                    s   h | ]}  |qS r
   )_parent).0r   r   r
   r   	<setcomp>"   s     z:AbstractArchiveFileSystem._all_dirnames.<locals>.<setcomp>)lensetZroot_marker_all_dirnames)r	   pathsdirnamesr
   r   r   r      s    z'AbstractArchiveFileSystem._all_dirnamesc                 K   sh   |    | |}|dkr,| jr,ddddS || jkr@| j| S |d | jkr\| j|d  S t|d S )N>    /r   	directoryr   )namer   size)	_get_dirsZ_strip_protocol	dir_cacheFileNotFoundError)r	   r   kwargsr
   r
   r   info%   s    


zAbstractArchiveFileSystem.infoTc           
   	   K   s   |    i }| j D ]\}}|d}d|krB|ddd }nd}||dkr^|||< qtdd t|ddg|dd D r|dddd }||kr|d ddd}	|	||< qt	|
 d	d
 d}	|r|	S dd |	D S d S )Nr      r   r   c                 s   s   | ]\}}||kV  qd S r   r
   )r   abr
   r
   r   	<genexpr><   s   z/AbstractArchiveFileSystem.ls.<locals>.<genexpr>r   )r   r   r   c                 S   s   | d S )Nr   r
   )_r
   r
   r   <lambda>E       z.AbstractArchiveFileSystem.ls.<locals>.<lambda>)keyc                 S   s   g | ]}|d  qS )r   r
   )r   fr
   r
   r   
<listcomp>I   s     z0AbstractArchiveFileSystem.ls.<locals>.<listcomp>)r   r    itemsrstriprsplitallzipsplitstripsortedvalues)
r	   r   detailr"   r   pr,   rootZppathoutr
   r
   r   ls1   s(    

 
zAbstractArchiveFileSystem.lsN)T)
r   
__module____qualname____doc__r   __repr__r   r   r#   r;   r
   r
   r
   r   r      s   	r   N)Zfsspecr   Zfsspec.utilsr   r   r
   r
   r
   r   <module>   s   