Ë
    ��h�J  ã                  ó   — d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZmZ ddlmZ ddlmZmZ ddlmZ erdd	l
mZ dd
lmZ ddlmZ ddlmZ  ej6                  e«      Z ej<                  d«      ZdZ dd„Z! G d„ d«      Z"y)z7
The httplib2 algorithms ported for use with requests.
é    )ÚannotationsN)Úparsedate_tz)ÚTYPE_CHECKINGÚ
CollectionÚMapping)ÚCaseInsensitiveDict)Ú	DictCacheÚSeparateBodyBaseCache)Ú
Serializer)ÚLiteral)ÚPreparedRequest)ÚHTTPResponse)Ú	BaseCachez9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)é-  é4  c                ó€   — t         j                  | «      }|€J ‚|j                  «       }|d   |d   |d   |d   |d   fS )zƒParses a URI using the regex given in Appendix B of RFC 3986.

    (scheme, authority, path, query, fragment) = parse_uri(uri)
    é   é   é   é   é   )ÚURIÚmatchÚgroups)Úurir   r   s      úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.pyÚ	parse_urir   '   sM   € ô
 �I‰I�c‹N€EØÐÐÐØ�\‰\‹^€FØ�1‰I�v˜a‘y &¨¡)¨V°A©Y¸¸q¹	ÐBÐBó    c                  óÌ   — e Zd ZdZ	 	 	 	 d	 	 	 	 	 	 	 dd„Zedd„«       Zedd„«       Zdd„Zdd„Z	dd„Z
dd	„Z	 	 d	 	 	 	 	 	 	 	 	 	 	 dd
„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zy)ÚCacheControllerz4An interface to see if request should cached or not.Nc                ót   — |€
t        «       n|| _        || _        |xs
 t        «       | _        |xs d| _        y )N)éÈ   éË   i,  r   r   )r	   ÚcacheÚcache_etagsr   Ú
serializerÚcacheable_status_codes)Úselfr$   r%   r&   Ústatus_codess        r   Ú__init__zCacheController.__init__5   s7   € ð %* M”Y”[°uˆŒ
Ø&ˆÔØ$Ò4¬
«ˆŒØ&2Ò&OÐ6OˆÕ#r   c                óà   — t        |«      \  }}}}}|r|st        d|z  «      ‚|j                  «       }|j                  «       }|sd}|xr dj                  ||g«      xs |}|dz   |z   |z   }|S )z4Normalize the URL to create a safe key for the cachez(Only absolute URIs are allowed. uri = %sú/ú?z://)r   Ú	ExceptionÚlowerÚjoin)	Úclsr   ÚschemeÚ	authorityÚpathÚqueryÚfragmentÚrequest_uriÚ
defrag_uris	            r   Ú_urlnormzCacheController._urlnormA   s„   € ô 6?¸s³^Ñ2ˆ�˜D %¨Ù™YÜÐFÈÑLÓMÐMà—‘“ˆØ—O‘OÓ%ˆ	áØˆDð Ò7 §¡¨$°¨Ó 7Ò?¸4ˆØ˜e‘^ iÑ/°+Ñ=ˆ
àÐr   c                ó$   — | j                  |«      S )N)r9   )r1   r   s     r   Ú	cache_urlzCacheController.cache_urlU   s   € à�|‰|˜CÓ Ð r   c                ó†  — t         dft         dft         dfddddddddt         dfdœ}|j                  d|j                  dd«      «      }i }|j                  d«      D ]j  }|j                  «       sŒ|j                  d	d
«      }|d   j                  «       }	 ||   \  }}	|r|	sd ||<   |sŒN	  ||d
   j                  «       «      ||<   Œl |S # t        $ r t
        j                  d|«       Y Œ�w xY w# t        $ r |	rt
        j                  d|«       Y Œ·t        $ r$ t
        j                  d||j                  «       Y Œâw xY w)NTF)NF)úmax-agez	max-staleú	min-freshúno-cacheúno-storezno-transformzonly-if-cachedzmust-revalidateÚpublicÚprivatezproxy-revalidatezs-maxagezcache-controlzCache-ControlÚ ú,ú=r   r   z,Ignoring unknown cache-control directive: %sz-Missing value for cache-control directive: %sz8Invalid value for cache-control directive %s, must be %s)
ÚintÚgetÚsplitÚstripÚKeyErrorÚloggerÚdebugÚ
IndexErrorÚ
ValueErrorÚ__name__)
r(   ÚheadersÚknown_directivesÚ
cc_headersÚretvalÚcc_directiveÚpartsÚ	directiveÚtypÚrequireds
             r   Úparse_cache_controlz#CacheController.parse_cache_controlY   sf  € ô ˜T�{Ü˜u˜Ü˜t˜Ø%Ø%Ø)Ø+Ø,Ø#Ø$Ø -Ü˜d˜ñ
Ðð  —[‘[ °'·+±+¸oÈrÓ2RÓSˆ
à(*ˆà&×,Ñ,¨SÓ1ò 	ˆLØ×%Ñ%Ô'Øà ×&Ñ& s¨AÓ.ˆEØ˜a™Ÿ™Ó(ˆIðØ 0°Ñ ;‘��Xñ
 ™hØ$(��yÑ!ÚðÙ(+¨E°!©H¯N©NÓ,<Ó(=�F˜9Ò%ð#	ð> ˆøô- ò Ü—‘ÐKÈYÔWÙðûô "ò ÙÜŸ™ØNØ%ôùô "ò Ü—L‘LØUØ!ØŸ™öðús*   ÂCÂ,C1ÃC.Ã-C.Ã1!E Ä)E Ä?E c                ó‚  — d|j                   v ry|j                  }|€J ‚| j                  j                  |«      }|€t        j                  d«       yt        | j                  t        «      r| j                  j                  |«      }nd}| j                  j                  |||«      }|€t        j                  d«       |S )zO
        Load a cached response, or return None if it's not available.
        ÚRangeNzNo cache entry availablez1Cache entry deserialization failed, entry ignored)rP   Úurlr$   rG   rK   rL   Ú
isinstancer
   Úget_bodyr&   ÚloadsÚwarning)r(   Úrequestr;   Ú
cache_dataÚ	body_fileÚresults         r   Ú_load_from_cachez CacheController._load_from_cache�   s§   € ð �g—o‘oÑ%Øà—K‘Kˆ	ØÐ$Ð$Ð$Ø—Z‘Z—^‘^ IÓ.ˆ
ØÐÜ�L‰LÐ3Ô4Øä�d—j‘jÔ"7Ô8ØŸ
™
×+Ñ+¨IÓ6‰IàˆIà—‘×&Ñ& w°
¸IÓFˆØˆ>Ü�N‰NÐNÔOØˆr   c                óð  — |j                   €J ‚| j                  |j                   «      }t        j                  d|«       | j	                  |j
                  «      }d|v rt        j                  d«       yd|v r|d   dk(  rt        j                  d«       y| j                  |«      }|syt        |j                  «      t        v rd	}t        j                  |«       |S t        |j
                  «      }|rd
|vrJd|vr0t        j                  d«       | j                  j                  |«       t        j                  d«       yt        j                  «       }t        |d
   «      }|€J ‚t        j                   |dd «      }	t#        d||	z
  «      }
t        j                  d|
«       | j	                  |«      }d}|j%                  d«      }|�|}t        j                  d|«       nQd|v rMt        |d   «      }|�=t        j                   |dd «      |	z
  }t#        d|«      }t        j                  d|«       |j%                  d«      }|�|}t        j                  d|«       |j%                  d«      }|�|
|z  }
t        j                  d|
«       ||
kD  r.t        j                  d«       t        j                  d||
«       |S d|vr0t        j                  d«       | j                  j                  |«       y)ze
        Return a cached response if it exists in the cache, otherwise
        return False.
        NzLooking up "%s" in the cacher?   z-Request header has "no-cache", cache bypassedFr=   r   z1Request header has "max_age" as 0, cache bypassedzQReturning cached permanent redirect response (ignoring date and etag information)ÚdateÚetagz(Purging cached response: no date or etagz!Ignoring cached response: no dater   zCurrent age based on date: %iz#Freshness lifetime from max-age: %iÚexpiresz#Freshness lifetime from expires: %iz+Freshness lifetime from request max-age: %ir>   z'Adjusted current age from min-fresh: %iz2The response is "fresh", returning cached responsez%i > %iz4The cached response is "stale" with no etag, purging)r\   r;   rK   rL   rY   rP   re   rF   ÚstatusÚPERMANENT_REDIRECT_STATUSESr   r$   ÚdeleteÚtimer   ÚcalendarÚtimegmÚmaxrG   )r(   ra   r;   ÚccÚrespÚmsgrP   ÚnowÚ
time_tuplerg   Úcurrent_ageÚresp_ccÚfreshness_lifetimeÚmax_ageri   Úexpire_timeÚ	min_freshs                    r   Úcached_requestzCacheController.cached_request©   sÊ  € ð
 �{‰{Ð&Ð&Ð&Ø—N‘N 7§;¡;Ó/ˆ	Ü�‰Ð3°YÔ?Ø×%Ñ% g§o¡oÓ6ˆð ˜ÑÜ�L‰LÐHÔIØà˜‰?˜r )™}°Ò1Ü�L‰LÐLÔMØð ×$Ñ$ WÓ-ˆÙØô ˆt�{‰{ÓÔ:Ñ:ð7ð ô �L‰L˜ÔØˆKä,?ÀÇÁÓ,MˆÙ˜&¨Ñ/Ø˜WÑ$ô —‘ÐGÔHØ—
‘
×!Ñ! )Ô,Ü�L‰LÐ<Ô=Øä�i‰i‹kˆÜ! '¨&¡/Ó2ˆ
ØÐ%Ð%Ð%Ü�‰˜z¨"¨1˜~Ó.ˆÜ˜!˜S 4™ZÓ(ˆÜ�‰Ð4°kÔBð ×*Ñ*¨7Ó3ˆð Ðð —+‘+˜iÓ(ˆØÐØ!(ÐÜ�L‰LÐ>Ð@RÕSð ˜'Ñ!Ü" 7¨9Ñ#5Ó6ˆGØÐ"Ü&Ÿo™o¨g°b°q¨kÓ:¸TÑA�Ü%(¨¨KÓ%8Ð"Ü—‘ÐBÐDVÔWð —&‘&˜Ó#ˆØÐØ!(ÐÜ�L‰LØ=Ð?Qôð —F‘F˜;Ó'ˆ	ØÐ à˜9Ñ$ˆKÜ�L‰LÐBÀKÔPð  Ò+Ü�L‰LÐMÔNÜ�L‰L˜Ð$6¸ÔDØˆKð ˜Ñ Ü�L‰LÐOÔPØ�J‰J×Ñ˜iÔ(ð r   c                óŠ   — | j                  |«      }i }|r-t        |j                  «      }d|v r|d   |d<   d|v r|d   |d<   |S )Nrh   ÚETagzIf-None-Matchzlast-modifiedzLast-ModifiedzIf-Modified-Since)re   r   rP   )r(   ra   rr   Únew_headersrP   s        r   Úconditional_headersz#CacheController.conditional_headers  s\   € Ø×$Ñ$ WÓ-ˆØˆáÜ0CÀDÇLÁLÓ0QˆGà˜Ñ Ø/6°v©�˜OÑ,à 'Ñ)Ø3:¸?Ñ3K�Ð/Ñ0àÐr   c                ó\  — t        | j                  t        «      rY| j                  j                  || j                  j                  ||d«      |¬«       |�| j                  j                  ||«       yy| j                  j                  || j                  j                  |||«      |¬«       y)z.
        Store the data in the cache.
        r   )ri   N)r]   r$   r
   Úsetr&   ÚdumpsÚset_body)r(   r;   ra   ÚresponseÚbodyÚexpires_times         r   Ú
_cache_setzCacheController._cache_set&  sš   € ô �d—j‘jÔ"7Ô8ð �J‰J�N‰NØØ—‘×%Ñ% g¨x¸Ó=Ø$ð ô ð ÐØ—
‘
×#Ñ# I¨tÕ4ð  ð �J‰J�N‰NØØ—‘×%Ñ% g¨x¸Ó>Ø$ð õ r   c                ó�  — t        |t        j                  «      r
 |«       }|€y|}|xs | j                  }|j                  |vr"t
        j                  d|j                  |«       yt        |j                  «      }d|v r+t        |d   «      }|€J ‚t        j                  |dd «      }	nd}	|�2d|v r.|d   j                  «       rt        |d   «      t        |«      k7  ry| j                  |j                  «      }
| j                  |«      }|j                   €J ‚| j#                  |j                   «      }t
        j                  d|«       d}d	|v rd
}t
        j                  d«       d	|
v rd
}t
        j                  d«       |rK| j$                  j'                  |«      r0t
        j                  d«       | j$                  j)                  |«       |ryd|j'                  dd«      v rt
        j                  d«       y| j*                  r’d|v rŽd}|j'                  d«      r+t        |d   «      }|�t        j                  |dd «      |	z
  }t-        |d«      }t
        j                  d|› d�«       t
        j                  d«       | j/                  |||||«       yt        |j                  «      t0        v r*t
        j                  d«       | j/                  |||d«       yd|v rât        |d   «      }|€J ‚t        j                  |dd «      }	|j'                  d«      }|�2|dkD  r-t
        j                  d«       |}| j/                  |||||«       yd|v rn|d   rht        |d   «      }|�t        j                  |dd «      |	z
  }nd}t
        j                  dj3                  |«      «       | j/                  |||||«       yyyy)zc
        Algorithm for caching requests.

        This assumes a requests Response object.
        NzStatus code %s not in %srg   r   r   úcontent-lengthz&Updating cache with response from "%s"Fr@   TzResponse header has "no-store"zRequest header has "no-store"z0Purging existing cache entry to honor "no-store"Ú*ÚvaryrC   zResponse header has "Vary: *"rh   ri   i u zetag object cached for z secondszCaching due to etagzCaching permanent redirectr   r=   z'Caching b/c date exists and max-age > 0z4Caching b/c of expires header. expires in {} seconds)r]   ÚweakrefÚReferenceTyper'   rj   rK   rL   r   rP   r   rn   ro   ÚisdigitrF   ÚlenrY   r\   r;   r$   rG   rl   r%   rp   rˆ   rk   Úformat)r(   ra   Úresponse_or_refr†   r)   r…   r'   Úresponse_headersru   rg   Úcc_reqrq   r;   Úno_storer‡   ri   ry   s                    r   Úcache_responsezCacheController.cache_responseD  sÈ  € ô �o¤w×'<Ñ'<Ô=Ù&Ó(ˆHØÐð à&ˆHð ".Ò!L°×1LÑ1LÐØ�?‰?Ð"8Ñ8Ü�L‰LØ*¨H¯O©OÐ=Sôð ä5HØ×Ñó6
Ðð Ð%Ñ%Ü%Ð&6°vÑ&>Ó?ˆJØÐ)Ð)Ð)Ü—?‘? :¨b¨q >Ó2‰DàˆDð ÐØ Ð$4Ñ4Ø Ð!1Ñ2×:Ñ:Ô<ÜÐ$Ð%5Ñ6Ó7¼3¸t»9ÒDàà×)Ñ)¨'¯/©/Ó:ˆØ×%Ñ%Ð&6Ó7ˆà�{‰{Ð&Ð&Ð&Ø—N‘N 7§;¡;Ó/ˆ	Ü�‰Ð=¸yÔIð ˆØ˜ÑØˆHÜ�L‰LÐ9Ô:Ø˜ÑØˆHÜ�L‰LÐ8Ô9Ù˜Ÿ
™
Ÿ™ yÔ1Ü�L‰LÐKÔLØ�J‰J×Ñ˜iÔ(ÙØð Ð"×&Ñ& v¨rÓ2Ñ2Ü�L‰LÐ8Ô9Øð ×Ò Ð*:Ñ :ØˆLØ×#Ñ# IÔ.Ü&Ð'7¸	Ñ'BÓC�ØÐ&Ü#+§?¡?°7¸2¸A°;Ó#?À$Ñ#F�Lä˜|¨ZÓ8ˆLä�L‰LÐ2°<°.ÀÐIÔJÜ�L‰LÐ.Ô/Ø�O‰O˜I w°¸$ÀÕMô �—‘Ó!Ô%@Ñ@Ü�L‰LÐ5Ô6Ø�O‰O˜I w°¸#Õ>ð
 Ð'Ñ'Ü%Ð&6°vÑ&>Ó?ˆJØÐ)Ð)Ð)Ü—?‘? :¨b¨q >Ó2ˆDà—f‘f˜YÓ'ˆGØÐ" w°¢{Ü—‘ÐFÔGØ&�Ø—‘ØØØØØ õð Ð.Ñ.Ø# IÒ.Ü*Ð+;¸IÑ+FÓG�GØÐ*Ü'/§¡°w¸rÀ°{Ó'CÀdÑ'J™à'+˜ä—L‘LØN×UÑUØ(óôð
 —O‘OØ!ØØ ØØ$õð /ð /ð' (r   c                óz  — |j                   €J ‚| j                  |j                   «      }| j                  |«      }|s|S dg}|j                  j	                  |j                  j                  «       D ��ci c]  \  }}|j                  «       |vr||“Œ c}}«       d|_        | j                  |||«       |S c c}}w )zé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.
        rŠ   r"   )	r\   r;   re   rP   ÚupdateÚitemsr/   rj   rˆ   )r(   ra   r…   r;   Úcached_responseÚexcluded_headersÚkÚvs           r   Úupdate_cached_responsez&CacheController.update_cached_response×  sÂ   € ð �{‰{Ð&Ð&Ð&Ø—N‘N 7§;¡;Ó/ˆ	Ø×/Ñ/°Ó8ˆáàˆOð -Ð-Ðà×Ñ×&Ñ&ð %×,Ñ,×2Ñ2Ó4÷á�A�qØ—7‘7“9Ð$4Ñ4ð �1‘óô	
ð "%ˆÔð 	�‰˜	 7¨OÔ<àÐùós   Á4B7
)NTNN)r$   zBaseCache | Noner%   Úboolr&   zSerializer | Noner)   úCollection[int] | None)r   ÚstrÚreturnr¡   )rP   zMapping[str, str]r¢   zdict[str, int | None])ra   r   r¢   zHTTPResponse | None)ra   r   r¢   zHTTPResponse | Literal[False])ra   r   r¢   zdict[str, str])NN)r;   r¡   ra   r   r…   r   r†   úbytes | Noner‡   z
int | Noner¢   ÚNone)
ra   r   r’   z2HTTPResponse | weakref.ReferenceType[HTTPResponse]r†   r£   r)   r    r¢   r¤   )ra   r   r…   r   r¢   r   )rO   Ú
__module__Ú__qualname__Ú__doc__r*   Úclassmethodr9   r;   rY   re   r|   r€   rˆ   r–   rž   © r   r   r    r    2   s,  „ Ù>ð #'Ø Ø(,Ø/3ð
Pàð
Pð ð
Pð &ð	
Pð
 -ó
Pð òó ðð& ò!ó ð!ó4óló4ló\ð( "Ø#'ðàðð !ðð ð	ð
 ðð !ðð 
óðD "Ø/3ðQà ðQð LðQð ð	Qð
 -ðQð 
óQðf(Ø&ð(Ø2>ð(à	ô(r   r    )r   r¡   r¢   ztuple[str, str, str, str, str])#r§   Ú
__future__r   rn   ÚloggingÚrerm   r�   Úemail.utilsr   Útypingr   r   r   Úpip._vendor.requests.structuresr   Úpip._vendor.cachecontrol.cacher	   r
   Ú"pip._vendor.cachecontrol.serializer   r   Úpip._vendor.requestsr   Úpip._vendor.urllib3r   r   Ú	getLoggerrO   rK   Úcompiler   rk   r   r    r©   r   r   ú<module>r¶      sz   ðñ
õ #ã Û Û 	Û Û Ý $ß 5Ñ 5å ?ç KÝ 9áÝå4Ý0å8à	ˆ×	Ñ	˜8Ó	$€à€b‡j�jÐMÓN€à(Ð óC÷Mò Mr   