File: //usr/lib/python3/dist-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc
o
@%NeS � @ s� d Z ddlZddlmZ ddlmZmZ ddlmZ ddl m
Z
ddlmZ ddl
mZmZ dd lmZ d
edefdd
�Zeded fdd��ZG dd� de�ZdS )zHTTP cache implementation.
� N)�contextmanager)�Iterator�Optional)� BaseCache)� FileCache)�Response)�adjacent_tmp_file�replace)�
ensure_dir�response�returnc C s t | dd�S )N�
from_cacheF)�getattr)r � r �=/usr/lib/python3/dist-packages/pip/_internal/network/cache.py�
is_from_cache s r c c s$ � zdV W dS t y Y dS 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 Zd ZdZdeddf� fdd�Zdedefdd �Zd
edee fdd�Z dd
ed
edee
ddfdd�Zd
eddfdd�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 usJ d��t � �� || _d S )Nz!Cache directory must not be None.)�super�__init__r )�selfr �� __class__r r r % s
zSafeFileCache.__init__�namec C s6 t �|�}t|d d� �|g }tjj| jg|�R � S )N� )r �encode�list�os�path�joinr )r r �hashed�partsr r r �_get_cache_path* s
zSafeFileCache._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
��"�zSafeFileCache.get�value�expiresc C s� | � |�}t� �0 ttj�|�� t|��
}|�|� W d � n1 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
�"�zSafeFileCache.setc C s@ | � |�}t� � t�|� W d � d S 1 sw Y d S r- )r$ r r �remove)r r% r r r r �deleteB s
"�zSafeFileCache.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