
    OOIdf	                     :    d dl mZ d dlmZ  G d de          ZdS )    )AbstractFileSystem)tokenizec                   6    e Zd ZdZd ZeZd Zd Zd Z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                 R    dt          |           j        dt          |           dS )Nz<Archive-like object z at >)type__name__id)selfs    .lib/python3.11/site-packages/fsspec/archive.py__str__z!AbstractArchiveFileSystem.__str__   s(     37::3F3F3F4QQ    c                 8    t          || j        | j                  S N)r   foprotocol)r   paths     r   ukeyzAbstractArchiveFileSystem.ukey   s    dgt}555r   c                      t          |          dk    rt                      S  fd|D              j        hz
  }|                     |          z  S )zReturns *all* directory names for each path in paths, including intermediate
        ones.

        Parameters
        ----------
        paths: Iterable of path strings
        r   c                 :    h | ]}                     |          S  )_parent).0r   r   s     r   	<setcomp>z:AbstractArchiveFileSystem._all_dirnames.<locals>.<setcomp>"   s%    9994DLL&&999r   )lensetroot_marker_all_dirnames)r   pathsdirnamess   `  r   r   z'AbstractArchiveFileSystem._all_dirnames   sZ     u::??55L99995999T=M<NN$,,X6666r   c                     |                                   |                     |          }|dv r| j        rddddS || j        v r| j        |         S |dz   | j        v r| j        |dz            S t          |          )N>    /r$   	directoryr   )namer	   size)	_get_dirs_strip_protocol	dir_cacheFileNotFoundError)r   r   kwargss      r   infozAbstractArchiveFileSystem.info%   s    ##D))9a@@@4>!!>$''CZ4>))>$*--#D)))r   Tc                    |                                   i }| j                                        D ]\  }}|                    d          }d|v r|                    dd          d         }nd}||                    d          k    r|||<   ]t          d t          |                    d          dg|                    d                              d          z             D                       rA|                    d                              dd          d         }||vr|dz   ddd}	|	||<   t          |
                                d 	          }	|r|	S d
 |	D             S )Nr$      r   r#   c              3   (   K   | ]\  }}||k    V  d S r   r   )r   abs      r   	<genexpr>z/AbstractArchiveFileSystem.ls.<locals>.<genexpr><   s>        Aq a     r   r%   )r&   r'   r	   c                     | d         S )Nr&   r   )_s    r   <lambda>z.AbstractArchiveFileSystem.ls.<locals>.<lambda>E   s
    1V9 r   )keyc                     g | ]
}|d          S )r&   r   )r   fs     r   
<listcomp>z0AbstractArchiveFileSystem.ls.<locals>.<listcomp>I   s    +++!AfI+++r   )r(   r*   itemsrstriprsplitallzipsplitstripsortedvalues)
r   r   detailr,   r    pr9   rootppathouts
             r   lszAbstractArchiveFileSystem.ls1   s   N((** 	' 	'DAqAaxxxxQ''*t{{3''''a  

3"8J8J38O8O1OPP     '
 ++C33A6%%#(3;;OOC#&E%LU\\^^)<)<=== 	,J++s++++r   N)T)
r
   
__module____qualname____doc__r   __repr__r   r   r-   rI   r   r   r   r   r      sx         R R R H6 6 67 7 7
* 
* 
*, , , , , ,r   r   N)fsspecr   fsspec.utilsr   r   r   r   r   <module>rP      sh    % % % % % % ! ! ! ! ! !D, D, D, D, D, 2 D, D, D, D, D,r   