o
    MfS                     @   s   d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ d
edefddZeded fddZG dd deZdS )zHTTP cache implementation.
    N)contextmanager)IteratorOptional)	BaseCache)	FileCache)Response)adjacent_tmp_filereplace)
ensure_dirresponsereturnc                 C   s   t | ddS )N
from_cacheF)getattr)r    r   ]/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/pip/_internal/network/cache.pyis_from_cache   s   r   c                   c   s$    zdV  W dS  t y   Y dS w )zvIf we can't access the cache then we can just skip caching and process
    requests as if caching wasn't enabled.
    N)OSErrorr   r   r   r   suppressed_cache_errors   s   r   c                	       s   e Zd ZdZdeddf fddZdedefdd	Zd
edee fddZ	dd
ededee
 ddfddZd
eddfddZ  ZS )SafeFileCachezw
    A file based cache which is safe to use even when the target directory may
    not be accessible or writable.
    	directoryr   Nc                    s$   |d usJ dt    || _d S )Nz!Cache directory must not be None.)super__init__r   )selfr   	__class__r   r   r   %   s   

zSafeFileCache.__init__namec                 C   s6   t |}t|d d |g }tjj| jg|R  S )N   )r   encodelistospathjoinr   )r   r   hashedpartsr   r   r   _get_cache_path*   s   
zSafeFileCache._get_cache_pathkeyc              	   C   sv   |  |}t ) t|d}| W  d    W  d    S 1 s$w   Y  W d    d S 1 s4w   Y  d S )Nrb)r$   r   openread)r   r%   r    fr   r   r   get2   s   
"zSafeFileCache.getvalueexpiresc              	   C   s   |  |}t 0 ttj| t|}|| W d    n1 s%w   Y  t|j	| W d    d S 1 s;w   Y  d S N)
r$   r   r
   r   r    dirnamer   writer	   r   )r   r%   r+   r,   r    r)   r   r   r   set8   s   

"zSafeFileCache.setc                 C   s@   |  |}t  t| W d    d S 1 sw   Y  d S r-   )r$   r   r   remove)r   r%   r    r   r   r   deleteB   s   
"zSafeFileCache.deleter-   )__name__
__module____qualname____doc__strr   r$   r   bytesr*   intr0   r2   __classcell__r   r   r   r   r      s     
r   )r6   r   
contextlibr   typingr   r   pip._vendor.cachecontrol.cacher   pip._vendor.cachecontrol.cachesr   pip._vendor.requests.modelsr   pip._internal.utils.filesystemr   r	   pip._internal.utils.miscr
   boolr   r   r   r   r   r   r   <module>   s    
