o
    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   b/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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setroot_marker_all_dirnames)r
   pathsdirnamesr   r	   r   r      s   z'AbstractArchiveFileSystem._all_dirnamesc                 K   sd   |    | |}|dv r| jrddddS || jv r | j| S |d | jv r.| j|d  S t|)N>    /r   	directoryr   )namer   sizer   )	_get_dirs_strip_protocol	dir_cacheFileNotFoundError)r
   r   kwargsr   r   r   info'   s   


zAbstractArchiveFileSystem.infoTc           
   	   K   s   |    i }| j D ]U\}}|d}d|v r!|ddd }nd}||dkr/|||< qtdd t|ddg|dd D r`|dddd }||vr`|ddd}	|	||< q|rpt	|
 td	d
}	|	S t	|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rootppathoutr   r   r   ls3   s*   

 zAbstractArchiveFileSystem.lsN)T)
r   
__module____qualname____doc__r   __repr__r   r   r&   r=   r   r   r   r   r      s    	r   )r5   fsspecr   fsspec.utilsr   r   r   r   r   r   <module>   s    