3
LY                  @   sT   d dl 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	 G dd deZ
dS )	    N)HTTPAdapter   )CacheController)	DictCache)CallbackFileWrapperc                   sP   e Zd ZeddgZd fdd	Z fddZd fd
d	Z fddZ  Z	S )CacheControlAdapterPUTDELETENTc       	         sB   t t| j|| |pt | _|| _|p*t}|| j||d| _d S )N)cache_etags
serializer)superr   __init__r   cache	heuristicr   
controller)	selfr   r
   controller_classr   r   argskwcontroller_factory)	__class__ s/private/var/folders/7d/20zwc49s3kn54d3vgq8bd4640000gn/T/pip-build-an2lx5zf/pip/pip/_vendor/cachecontrol/adapter.pyr      s    zCacheControlAdapter.__init__c                sV   |j dkr>| jj|}|r*| j||ddS |jj| jj| tt| j	|f|}|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.
        GETT)
from_cache)
methodr   cached_requestbuild_responseheadersupdateconditional_headersr   r   send)r   requestr   cached_responseresp)r   r   r   r!      s    
zCacheControlAdapter.sendFc                s  | r|j dkr| jr"| jj|}|jdkr`| jj||}||k	rFd}|jdd |j  |}n\|jdkrz| jj|| nBt	|j
tj| jj|||_
|jr|j  fdd}tj|||_tt| j||}|j | jkr|jr| jj|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
        r   i0  TF)decode_contenti-  c                s      | j dkr| jj  d S )Nr   )
chunk_left_fp_close)r   )super_update_chunk_lengthr   r   _update_chunk_lengthg   s    
z@CacheControlAdapter.build_response.<locals>._update_chunk_length)r   r   applystatusr   update_cached_responsereadrelease_conncache_responser   r'   	functoolspartialchunkedr*   types
MethodTyper   r   r   invalidating_methodsok	cache_urlurlr   deleter   )r   r"   responser   r#   r*   r$   r8   )r   )r)   r   r   3   s<    



z"CacheControlAdapter.build_responsec                s   | j j  tt| j  d S )N)r   closer   r   )r   )r   r   r   r<   {   s    
zCacheControlAdapter.close)NTNNN)F)
__name__
__module____qualname__setr6   r   r!   r   r<   __classcell__r   r   )r   r   r      s       Hr   )r4   r1   Zpip._vendor.requests.adaptersr   r   r   r   r   filewrapperr   r   r   r   r   r   <module>   s   