a
    ˆÀàg	  ã                   @   s    d Z ddlZddl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d	lmZ erxdd
lmZmZ dd„ Zedd„ ƒZG dd„ deƒZdS )zHTTP cache implementation.
é    N)Úcontextmanager)Ú	BaseCache)Ú	FileCache)ÚResponse)Úadjacent_tmp_fileÚreplace)Ú
ensure_dir)ÚMYPY_CHECK_RUNNING)ÚIteratorÚOptionalc                 C   s   t | ddƒS )NÚ
from_cacheF)Úgetattr)Úresponse© r   úT/var/www/sistema_ama/venv/lib/python3.9/site-packages/pip/_internal/network/cache.pyÚis_from_cache   s    r   c                	   c   s&   z
dV  W n t tfy    Y n0 dS )zvIf we can't access the cache then we can just skip caching and process
    requests as if caching wasn't enabled.
    N)ÚOSErrorÚIOErrorr   r   r   r   Úsuppressed_cache_errors   s    
r   c                       s@   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Z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.
    c                    s(   |d usJ dƒ‚t t| ƒ ¡  || _d S )Nz!Cache directory must not be None.)Úsuperr   Ú__init__Ú	directory)Úselfr   ©Ú	__class__r   r   r   *   s    zSafeFileCache.__init__c                 C   s6   t  |¡}t|d d… ƒ|g }tjj| jg|¢R Ž S )Né   )r   ÚencodeÚlistÚosÚpathÚjoinr   )r   ÚnameÚhashedÚpartsr   r   r   Ú_get_cache_path0   s    
zSafeFileCache._get_cache_pathc              	   C   st   |   |¡}tƒ �P t|dƒ�&}| ¡ W  d   ƒ W  d   ƒ S 1 sH0    Y  W d   ƒ n1 sf0    Y  d S )NÚrb)r%   r   ÚopenÚread)r   Úkeyr    Úfr   r   r   Úget9   s    
zSafeFileCache.getc              	   C   s‚   |   |¡}tƒ �^ ttj |¡ƒ t|ƒ�}| |¡ W d   ƒ n1 sJ0    Y  t|j	|ƒ W d   ƒ n1 st0    Y  d S ©N)
r%   r   r   r   r    Údirnamer   Úwriter   r"   )r   r)   Úvaluer    r*   r   r   r   Úset@   s    

(zSafeFileCache.setc                 C   s>   |   |¡}tƒ � t |¡ W d   ƒ n1 s00    Y  d S r,   )r%   r   r   Úremove)r   r)   r    r   r   r   ÚdeleteK   s    
zSafeFileCache.delete)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r%   r+   r0   r2   Ú__classcell__r   r   r   r   r   $   s   	r   )r6   r   Ú
contextlibr   Zpip._vendor.cachecontrol.cacher   Zpip._vendor.cachecontrol.cachesr   Úpip._vendor.requests.modelsr   Úpip._internal.utils.filesystemr   r   Úpip._internal.utils.miscr   Úpip._internal.utils.typingr	   Útypingr
   r   r   r   r   r   r   r   r   Ú<module>   s   
