a
    ’Àhu	  ã                   @  sn   d dl mZ d dlZd dlZd dlmZ G dd„ dejƒZG dd„ deƒZG dd	„ d	eƒZ	d
ddœdd„Z
dS )é    )ÚannotationsN)Úmake_path_posixc                   @  sD   e Zd ZdZejdddœdd„ƒZdddœd	d
„Zddœdd„ZdS )ÚAbstractCacheMapperzUAbstract super-class for mappers from remote URLs to local cached
    basenames.
    Ústr©ÚpathÚreturnc                 C  s   d S ©N© ©Úselfr   r
   r
   ú_/var/www/html/assistant/venv/lib/python3.9/site-packages/fsspec/implementations/cache_mapper.pyÚ__call__   s    zAbstractCacheMapper.__call__ÚobjectÚbool©Úotherr   c                 C  s   t |t| ƒƒS r	   )Ú
isinstanceÚtype©r   r   r
   r
   r   Ú__eq__   s    zAbstractCacheMapper.__eq__Úint©r   c                 C  s   t t| ƒƒS r	   )Úhashr   ©r   r
   r
   r   Ú__hash__   s    zAbstractCacheMapper.__hash__N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚabcÚabstractmethodr   r   r   r
   r
   r
   r   r   	   s
   r   c                      sZ   e Zd ZdZdddœdd„Zdddœd	d
„Zdddœ‡ fdd„Zddœ‡ fdd„Z‡  ZS )ÚBasenameCacheMapperzóCache 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   r   )Údirectory_levelsc                 C  s    |dk rt dƒ‚|| _d| _d S )Nr   z>BasenameCacheMapper requires zero or positive directory_levelsz_@_)Ú
ValueErrorr#   Ú
_separator)r   r#   r
   r
   r   Ú__init__$   s    ÿzBasenameCacheMapper.__init__r   r   c                 C  s6   t |ƒ}| d| jd ¡^}}|r.| j |¡S |S d S )Nú/é   )r   Úrsplitr#   r%   Újoin)r   r   ÚprefixÚbitsr
   r
   r   r   .   s
    zBasenameCacheMapper.__call__r   r   r   c                   s   t ƒ  |¡o| j|jkS r	   )Úsuperr   r#   r   ©Ú	__class__r
   r   r   6   s    zBasenameCacheMapper.__eq__r   c                   s   t ƒ  ¡ t| jƒA S r	   )r-   r   r   r#   r   r.   r
   r   r   9   s    zBasenameCacheMapper.__hash__)r   )	r   r   r   r   r&   r   r   r   Ú__classcell__r
   r
   r.   r   r"      s
   
r"   c                   @  s    e Zd ZdZdddœdd„ZdS )ÚHashCacheMapperz0Cache mapper that uses a hash of the remote URL.r   r   c                 C  s   t  | ¡ ¡ ¡ S r	   )ÚhashlibÚsha256ÚencodeÚ	hexdigestr   r
   r
   r   r   @   s    zHashCacheMapper.__call__N)r   r   r   r   r   r
   r
   r
   r   r1   =   s   r1   r   )Ú
same_namesr   c                 C  s   | r
t ƒ S tƒ S dS )zŒFactory method to create cache mapper for backward compatibility with
    ``CachingFileSystem`` constructor using ``same_names`` kwarg.
    N)r"   r1   )r6   r
   r
   r   Úcreate_cache_mapperD   s    r7   )Ú
__future__r   r    r2   Zfsspec.implementations.localr   ÚABCr   r"   r1   r7   r
   r
   r
   r   Ú<module>   s   !