Your IP : 3.146.176.112


Current Path : /opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/
Upload File :
Current File : //opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyc

�
�Rec@s�dZddlZddlZddlZddlZddlmZddlmZddl	m
Z
ddlmZej
e�Zejd�Zd	�Zd
efd��YZdS(s7
The httplib2 algorithms ported for use with requests.
i����N(tparsedate_tz(tCaseInsensitiveDicti(t	DictCache(t
Serializers9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?cCs<tj|�j�}|d|d|d|d|dfS(s�Parses a URI using the regex given in Appendix B of RFC 3986.

        (scheme, authority, path, query, fragment) = parse_uri(uri)
    iiiii(tURItmatchtgroups(turiR((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyt	parse_uristCacheControllercBsteZdZd	ed	d	d�Zed��Zed��Zd�Z	d�Z
d�Zd	d	d�Zd�Z
RS(
s9An interface to see if request should cached or not.
    cCsL|dkrt�n||_||_|p3t�|_|pBd|_dS(Ni�i�i,i-(i�i�i,i-(tNoneRtcachetcache_etagsRt
serializertcacheable_status_codes(tselfRRR
tstatus_codes((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyt__init__"s	c	Cs�t|�\}}}}}|s)|r<td|��n|j�}|j�}|scd}n|r~dj||g�p�|}|d||}|S(s4Normalize the URL to create a safe key for the caches(Only absolute URIs are allowed. uri = %st/t?s://(Rt	Exceptiontlowertjoin(	tclsRtschemet	authoritytpathtquerytfragmenttrequest_urit
defrag_uri((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyt_urlnorm*s	!cCs
|j|�S(N(R(RR((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyt	cache_url>sc
Cs�ittfd6ttfd6ttfd6dtfd6dtfd6dtfd6dtfd6dtfd6dtfd	6dtfd
6dtfd6ttfd6}|jd
|jdd��}i}x|jd�D]
}|j�s�q�n|jdd�}|dj�}y||\}}	Wn$tk
rJtj	d|�q�nX|sY|	rfd||<n|r�y||dj��||<Wq�t
k
r�|	r�tj	d|�q�q�tk
r�tj	d||j�q�Xq�q�W|S(Nsmax-ages	max-stales	min-freshsno-cachesno-storesno-transformsonly-if-cachedsmust-revalidatetpublictprivatesproxy-revalidatess-maxages
cache-controls
Cache-Controltt,t=iis,Ignoring unknown cache-control directive: %ss-Missing value for cache-control directive: %ss8Invalid value for cache-control directive %s, must be %s(
tinttTruetFalseR
tgettsplittstriptKeyErrortloggertdebugt
IndexErrort
ValueErrort__name__(
Rtheaderstknown_directivest
cc_headerstretvaltcc_directivetpartst	directivettyptrequired((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pytparse_cache_controlBsR















cCs|j|j�}tjd|�|j|j�}d|krQtjd�tSd|kr~|ddkr~tjd�tS|jj|�}|dkr�tjd�tS|j
j||�}|s�tjd�tS|j
d	kr�d
}tj|�|St|j�}|s!d|kr^d|krMtjd
�|jj|�ntjd�tStj�}tjt|d��}	td||	�}
tjd|
�|j|�}d}d|kr�|d}tjd|�n`d|krDt|d�}
|
dk	rDtj|
�|	}td|�}tjd|�qDnd|krm|d}tjd|�nd|kr�|d}|
|7}
tjd|
�n||
kr�tjd�tjd||
�|Sd|kr�tjd�|jj|�ntS(se
        Return a cached response if it exists in the cache, otherwise
        return False.
        sLooking up "%s" in the cachesno-caches-Request header has "no-cache", cache bypassedsmax-ageis1Request header has "max_age" as 0, cache bypassedsNo cache entry availables1Cache entry deserialization failed, entry ignoredi-sVReturning cached "301 Moved Permanently" response (ignoring date and etag information)tdatetetags(Purging cached response: no date or etags!Ignoring cached response: no datesCurrent age based on date: %is#Freshness lifetime from max-age: %itexpiress#Freshness lifetime from expires: %is+Freshness lifetime from request max-age: %is	min-freshs'Adjusted current age from min-fresh: %is2The response is "fresh", returning cached responses%i > %is4The cached response is "stale" with no etag, purgingN(R turlR-R.R;R2R(RR)R
R
tloadstwarningtstatusRtdeletettimetcalendarttimegmRtmax(RtrequestR tcct
cache_datatresptmsgR2tnowR<tcurrent_agetresp_cctfreshness_lifetimeR>texpire_timet	min_fresh((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pytcached_requestxsv














cCs�|j|j�}|jj||jj|��}i}|r�t|j�}d|krk|d|d<nd|kr�|d|d<q�n|S(NR=tETags
If-None-Matchs
last-modifieds
Last-ModifiedsIf-Modified-Since(R R?R
R@RR)RR2(RRHR RKtnew_headersR2((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pytconditional_headers�s!cCs�|p|j}|j|kr8tjd|j|�dSt|j�}|dk	r�d|kr�|dj�r�t|d�t	|�kr�dS|j
|j�}|j
|�}|j|j�}	tjd|	�t
}
d|kr�t}
tjd�nd|krt}
tjd�n|
rT|jj|	�rTtjd�|jj|	�n|
r^dSd	|jd
d�kr�tjd�dS|jr�d
|kr�tjd�|jj|	|jj||d|��n�|jdkrtjd�|jj|	|jj||��n�d|kr�d|kru|ddkrutjd�|jj|	|jj||d|��q�d|kr�|dr�tjd�|jj|	|jj||d|��q�q�ndS(sc
        Algorithm for caching requests.

        This assumes a requests Response object.
        sStatus code %s not in %sNscontent-lengths&Updating cache with response from "%s"sno-storesResponse header has "no-store"sRequest header has "no-store"s0Purging existing cache entry to honor "no-store"t*tvaryR#sResponse header has "Vary: *"R=sCaching due to etagtbodyi-sCaching permanant redirectR<smax-ageis'Caching b/c date exists and max-age > 0R>sCaching b/c of expires header(RRBR-R.RR2R
tisdigitR&tlenR;R R?R(R'RR)RCRtsetR
tdumps(RRHtresponseRYRRtresponse_headerstcc_reqRIR tno_store((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pytcache_response�s^


	"
%
	"

	cs�|j|j�}|jj||jj|��}|s=|Sdg�|jjt�fd�|jj	�D���d|_
|jj||jj||��|S(s�On a 304 we will get a new set of headers that we want to
        update our cached value with, assuming we have one.

        This should only ever be called when we've sent an ETag and
        gotten a 304 as the response.
        scontent-lengthc3s3|])\}}|j��kr||fVqdS(N(R(t.0tktv(texcluded_headers(s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pys	<genexpr>ls	i�(
R R?R
R@RR)R2tupdatetdicttitemsRBR\R](RRHR^R tcached_response((Rfs�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pytupdate_cached_responseRs!				"N(R1t
__module__t__doc__R
R'RtclassmethodRR R;RSRVRbRk(((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyR	s	6	o	[(RmtloggingtreRERDtemail.utilsRtpip._vendor.requests.structuresRRRt	serializeRt	getLoggerR1R-tcompileRRtobjectR	(((s�/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/cachecontrol/controller.pyt<module>s		

?>