
    fXf                     n    d dl Z d dlZd dlZd dlmZ ddlmZmZ ddlm	Z	 ddl
mZ  G d de          ZdS )	    N)HTTPAdapter   )CacheControllerPERMANENT_REDIRECT_STATUSES)	DictCache)CallbackFileWrapperc                   X     e Zd Zh dZ	 	 	 	 	 	 d	 fd	Zd
 fd	Z	 d fd	Z fdZ xZS )CacheControlAdapter>   PUTPATCHDELETENTc                      t          t          |           j        |i | |t                      n|| _        || _        |pd| _        |pt          }	 |	| j        ||          | _        d S )N)GET)cache_etags
serializer)	superr
   __init__r   cache	heuristiccacheable_methodsr   
controller)selfr   r   controller_classr   r   r   argskwcontroller_factory	__class__s             Y/var/www/html/Qu*py/bism/lib/python3.11/site-packages/pip/_vendor/cachecontrol/adapter.pyr   zCacheControlAdapter.__init__   s     	2!4((14>2>>>$)MY[[[u
"!2!>h-@,,JKJ
 
 
    c                 l   |p| j         }|j        |v r	 | j                            |          }n# t          j        $ r d}Y nw xY w|r|                     ||d          S |j                            | j        	                    |                      t          t          |           j        |fi |}|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   r
   send)r   requestr   r   	cacheablecached_responserespr   s          r   r*   zCacheControlAdapter.send(   s    
 &?)?	>Y&&'"&/"@"@"I"I: ' ' '"&' V**7OPT*UUU O""4?#F#Fw#O#OPPP4u($//4WCCCCs   0 AAFc                 ^  
 |p| j         }|s |j        |v r| j        r| j                            |          }|j        dk    rN| j                            ||          }||urd}|                    d           |                                 |}nt          |j                  t          v r| j                            ||           net          |j        t          j        | j        j        ||                    |_        |j        r&|j        

fd}t%          j        ||          |_        t)          t*          |                               ||          }|j        | j        v r@|j        r9| 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_contentc                 h                  | j         dk    r| j                                         d S d S )Nr   )
chunk_left_fp_close)r   super_update_chunk_lengths    r   _update_chunk_lengthz@CacheControlAdapter.build_response.<locals>._update_chunk_lengthr   s?    11333?a// HOO----- 0/r   )r   r"   r   applystatusr   update_cached_responsereadrelease_connintr   cache_responser   r3   	functoolspartialchunkedr6   types
MethodTyper   r
   r&   invalidating_methodsok	cache_urlurlr   deleter!   )r   r+   responser!   r   r,   r-   r6   r.   rE   r5   r   s             @r   r&   z"CacheControlAdapter.build_response=   s    &?)?	 2	gn	99 ~ :>//99 #%%
 #'/"H"HX# # #(22!%J U333%%'''* X_%%)DDD..wAAAA  3L%6     # 
080M-. . . . .
 5:4D,h5 5H1 ($//>>wQQ >T66647611'+>>IJi((( %r   c                     | j                                          t          t          |                                            d S N)r   closer   r
   )r   r   s    r   rK   zCacheControlAdapter.close   s:    
!4((..00000r   )NTNNNNrJ   )FN)	__name__
__module____qualname__rC   r   r*   r&   rK   __classcell__)r   s   @r   r
   r
      s        555 
 
 
 
 
 
*     , FJH H H H H HT1 1 1 1 1 1 1 1 1r   r
   )rA   r>   r$   pip._vendor.requests.adaptersr   r   r   r   r   r   filewrapperr   r
    r   r   <module>rS      s   
       5 5 5 5 5 5 D D D D D D D D       , , , , , ,y1 y1 y1 y1 y1+ y1 y1 y1 y1 y1r   