3
g                 @   s\   d dl Z 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                   sN   e Zd ZddhZd fdd	Zd fdd	Zd fd
d	Z fddZ  ZS )CacheControlAdapterPUTDELETENTc       
         sT   t t| j|| |d kr t n|| _|| _|p2d| _|p<t}	|	| j||d| _d S )NGET)cache_etags
serializer)r
   )	superr   __init__r   cache	heuristiccacheable_methodsr   
controller)
selfr   r   controller_classr   r   r   argskwZcontroller_factory)	__class__ ^/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_vendor/cachecontrol/adapter.pyr      s    
zCacheControlAdapter.__init__c                s   |p| j }|j|krhy| jj|}W n tjk
r>   d}Y nX |rT| 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.
        NT)
from_cache)r   methodr   Zcached_requestzliberrorbuild_responseheadersupdateZconditional_headersr   r   send)r   requestr   r   	cacheablecached_responseresp)r   r   r   r!   $   s    


zCacheControlAdapter.sendFc       
         s  |p| j }| r|j|kr| jr,| jj|}|jdkrj| jj||}||k	rPd}|jdd |j  |}n\|jdkr| jj	|| nBt
|jtj| jj	|||_|jr|j  fdd}tj|||_tt| j||}|j| jko|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
        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_lengthn   s    
z@CacheControlAdapter.build_response.<locals>._update_chunk_length)r   r   r   Zapplystatusr   Zupdate_cached_responsereadrelease_connZcache_responser   r(   	functoolspartialchunkedr+   types
MethodTyper   r   r   invalidating_methodsok	cache_urlurlr   deleter   )
r   r"   responser   r   r#   r$   r+   r%   r6   )r   )r*   r   r   9   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)NTNNNN)N)FN)	__name__
__module____qualname__r4   r   r!   r   r:   __classcell__r   r   )r   r   r      s        Ir   )r2   r/   r   pip._vendor.requests.adaptersr   r   r   r   r   Zfilewrapperr   r   r   r   r   r   <module>   s   