U
    hk	                     @   s4   d dl Z d dlmZ d dlmZ G dd deZdS )    N)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 dt|  dS )Nz<Archive-like object z at >)type__name__idself r   @/var/www/html/venv/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   )Z_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   sizer   )	_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}	|	||< q|rt	|
 td	d
}	|	S t	|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   r   )key)r   r    itemsrstriprsplitallzipsplitstripsortedvaluesoperator
itemgetter)
r
   r   detailr"   r   pfrootZppathoutr   r   r   ls3   s(    

 
zAbstractArchiveFileSystem.lsN)T)
r   
__module____qualname____doc__r   __repr__r   r   r#   r9   r   r   r   r   r      s   	r   )r2   Zfsspecr   Zfsspec.utilsr   r   r   r   r   r   <module>   s   