Current File : //lib/python3.9/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-39.pyc |
a
[��f � @ s\ d dl Z d dlZd dlZd dlmZ ddlmZ ddlmZ ddl m
Z
G dd� de�ZdS ) � N)�HTTPAdapter� )�CacheController)� DictCache)�CallbackFileWrapperc sN e Zd ZddhZd� fdd� Zd� fdd� Zd� fd
d� Z� fdd
�Z� ZS )�CacheControlAdapterZPUTZDELETENTc
sX t t| �j|i |�� |d u r$t� n|| _|| _|p6d| _|p@t} | | j||d�| _d S )N)ZGET)�cache_etags�
serializer) �superr �__init__r �cache� heuristic�cacheable_methodsr �
controller)
�selfr r Zcontroller_classr r
r �args�kwZcontroller_factory�� __class__� �D/usr/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.pyr s
�zCacheControlAdapter.__init__c s� |p| j }|j|v rfz| j�|�}W n tjy< d}Y n0 |rR| j||dd�S |j�| j� |�� t
t| �j|fi |��}|S )z�
Send a request. Use the request information to see if it
exists in the cache and cache the response if we need to and can.
NT)�
from_cache)
r �methodr Zcached_request�zlib�error�build_responseZheaders�updateZconditional_headersr
r �send)r �requestr r � cacheable�cached_response�respr r r r $ s
zCacheControlAdapter.sendFc
s |p| j }|s�|j|v r�| jr*| j�|�}|jdkrh| j�||�}||urNd}|jdd� |�� |}n\|jdkr�| j� ||� nBt
|jt�
| jj ||��|_|jr�|j� � fdd�}t�||�|_tt| ��||�}|j| jv �r|j�r| j�|j�} | j�| � ||_|S )z�
Build a response by making a request or using the cache.
This will end up calling send and returning a potentially
cached response
i0 TF)Zdecode_contenti- c s � � | j dkr| j�� d S )Nr )Z
chunk_left�_fpZ_close�r �Zsuper_update_chunk_lengthr r �_update_chunk_lengthn s
z@CacheControlAdapter.build_response.<locals>._update_chunk_length)r r r
Zapply�statusr Zupdate_cached_response�readZrelease_connZcache_responser r"