
    çgu	                        d dl mZ d dlZd dlZd dlmZ  G d dej                  Z G d de          Z G d d	e          Z	ddZ
dS )    )annotationsN)make_path_posixc                  D    e Zd ZdZej        dd            Zdd	ZddZdS )AbstractCacheMapperzUAbstract super-class for mappers from remote URLs to local cached
    basenames.
    pathstrreturnc                    d S N selfr   s     _/var/www/html/ai-engine/env/lib/python3.11/site-packages/fsspec/implementations/cache_mapper.py__call__zAbstractCacheMapper.__call__   s    *-#    otherobjectboolc                <    t          |t          |                     S r   )
isinstancetype)r   r   s     r   __eq__zAbstractCacheMapper.__eq__   s     %d,,,r   intc                :    t          t          |                     S r   )hashr   )r   s    r   __hash__zAbstractCacheMapper.__hash__   s     DJJr   Nr   r   r	   r   r   r   r	   r   r	   r   )	__name__
__module____qualname____doc__abcabstractmethodr   r   r   r   r   r   r   r   	   sb          	--- -- - - -
           r   r   c                  B     e Zd ZdZdddZdd	Zd fdZd fdZ xZS )BasenameCacheMapperzCache mapper that uses the basename of the remote URL and a fixed number
    of directory levels above this.

    The default is zero directory levels, meaning different paths with the same
    basename will have the same cached basename.
    r   directory_levelsr   c                L    |dk     rt          d          || _        d| _        d S )Nr   z>BasenameCacheMapper requires zero or positive directory_levelsz_@_)
ValueErrorr(   
_separator)r   r(   s     r   __init__zBasenameCacheMapper.__init__$   s9    aP   !1  r   r   r   r	   c                    t          |          }|                    d| j        dz             ^}}|r| j                            |          S |S )N/   )r   rsplitr(   r+   join)r   r   prefixbitss       r   r   zBasenameCacheMapper.__call__.   sQ    t$$C)>)BCC 	?''---Mr   r   r   r   c                f    t                                          |          o| j        |j        k    S r   )superr   r(   )r   r   	__class__s     r   r   zBasenameCacheMapper.__eq__6   s)    ww~~e$$X)>%BX)XXr   c                n    t                                                      t          | j                  z  S r   )r5   r   r   r(   )r   r6   s    r   r   zBasenameCacheMapper.__hash__9   s)    ww!!D)>$?$???r   )r   )r(   r   r   r   r   )	r    r!   r"   r#   r,   r   r   r   __classcell__)r6   s   @r   r'   r'      s                     Y Y Y Y Y Y@ @ @ @ @ @ @ @ @ @r   r'   c                      e Zd ZdZddZdS )HashCacheMapperz0Cache mapper that uses a hash of the remote URL.r   r   r	   c                r    t          j        |                                                                          S r   )hashlibsha256encode	hexdigestr   s     r   r   zHashCacheMapper.__call__@   s&    ~dkkmm,,66888r   Nr   )r    r!   r"   r#   r   r   r   r   r:   r:   =   s.        ::9 9 9 9 9 9r   r:   
same_namesr   r	   c                >    | rt                      S t                      S )zFactory method to create cache mapper for backward compatibility with
    ``CachingFileSystem`` constructor using ``same_names`` kwarg.
    )r'   r:   )r@   s    r   create_cache_mapperrB   D   s$      !"$$$   r   )r@   r   r	   r   )
__future__r   r$   r<   fsspec.implementations.localr   ABCr   r'   r:   rB   r   r   r   <module>rF      s    " " " " " " 



  8 8 8 8 8 8         #'      &@ @ @ @ @- @ @ @B9 9 9 9 9) 9 9 9! ! ! ! ! !r   