o
    =g                     @  s   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZ erZd dlmZm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 )    )annotationsN)TYPE_CHECKINGAny
CollectionMapping)HTTPAdapter)	DictCache)PERMANENT_REDIRECT_STATUSESCacheController)CallbackFileWrapper)PreparedRequestResponse)HTTPResponse)	BaseCache)BaseHeuristic)
Serializerc                      sr   e Zd Zh dZ						d-d. fddZ						d/d0 fd$d%Z		d1d2 fd)d*Zd3 fd+d,Z  ZS )4CacheControlAdapter>   PUTPATCHDELETENTcacheBaseCache | Nonecache_etagsboolcontroller_classtype[CacheController] | None
serializerSerializer | None	heuristicBaseHeuristic | Nonecacheable_methodsCollection[str] | Noneargsr   kwreturnNonec           
        sT   t  j|i | |d u rt n|| _|| _|pd| _|pt}	|	| j||d| _d S )N)GET)r   r   )super__init__r   r   r   r    r
   
controller)
selfr   r   r   r   r   r    r"   r#   controller_factory	__class__ S/var/www/html/venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.pyr(      s   
zCacheControlAdapter.__init__Frequestr   streamtimeout7None | float | tuple[float, float] | tuple[float, None]verify
bool | strcert4None | bytes | str | tuple[bytes | str, bytes | str]proxiesMapping[str, str] | Noner   c                   s   |p| j }|j|v r3z| j|}	W n tjy   d}	Y nw |	r)| j||	ddS |j| j	| t
 ||||||}
|
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)   cached_requestzliberrorbuild_responseheadersupdateconditional_headersr'   send)r*   r0   r1   r2   r4   r6   r8   r    	cacheablecached_responserespr,   r.   r/   rC   2   s   

zCacheControlAdapter.sendresponser   r:   c           
        s  |p| j }|se|j|v re| jr| j|}|jdkr4| j||}||ur'd}|jdd |  |}n1t	|jt
v rC| j|| n"t|jt| jj|||_|jre|j d fd	d
}t|||_t ||}|j| jv r|jr|jdus|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_contentr*   r   r$   r%   c                   s"      | j dkr| j  d S d S )Nr   )
chunk_left_fp_closer*   super_update_chunk_lengthr.   r/   _update_chunk_length   s   
z@CacheControlAdapter.build_response.<locals>._update_chunk_lengthN)r*   r   r$   r%   )r    r;   r   applystatusr)   update_cached_responsereadrelease_connintr	   cache_responser   rJ   	functoolspartialchunkedrO   types
MethodTyper'   r?   invalidating_methodsokurl	cache_urlr   deleter:   )
r*   r0   rG   r:   r    rD   rE   rO   rF   r_   r,   rM   r/   r?   P   sD   


z"CacheControlAdapter.build_responsec                   s   | j   t   d S )N)r   closer'   rL   r,   r.   r/   ra      s   
zCacheControlAdapter.close)NTNNNN)r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   r#   r   r$   r%   )FNTNNN)r0   r   r1   r   r2   r3   r4   r5   r6   r7   r8   r9   r    r!   r$   r   )FN)
r0   r   rG   r   r:   r   r    r!   r$   r   )r$   r%   )	__name__
__module____qualname__r\   r(   rC   r?   ra   __classcell__r.   r.   r,   r/   r      s(    "Or   )
__future__r   rW   rZ   r=   typingr   r   r   r   pip._vendor.requests.adaptersr   pip._vendor.cachecontrol.cacher   #pip._vendor.cachecontrol.controllerr	   r
   $pip._vendor.cachecontrol.filewrapperr   pip._vendor.requestsr   r   pip._vendor.urllib3r   r   #pip._vendor.cachecontrol.heuristicsr   "pip._vendor.cachecontrol.serializer   r   r.   r.   r.   r/   <module>   s    