+
    ®¾j�J  ã                  ó2  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHtHt ^ RIHt ]'       d   ^ RI
Ht ^ R	IHt ^ R
IHt ^ RIHt ]P6                  ! ]4      t]P<                  ! R4      tRt R R lt! ! R R4      t"R# )z7
The httplib2 algorithms ported for use with requests.
)ÚannotationsN)Úparsedate_tz)ÚTYPE_CHECKINGÚ
CollectionÚMapping)ÚCaseInsensitiveDict)Ú	DictCacheÚSeparateBodyBaseCache)Ú
Serializer)ÚLiteral)ÚPreparedRequest)ÚHTTPResponse)Ú	BaseCachez9^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?c               ó    € V ^8„  d   QhRRRR/# )é   ÚuriÚstrÚreturnztuple[str, str, str, str, str]© )Úformats   "Úb/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.pyÚ__annotate__r   '   s   € ÷ Cñ C�3ð CÐ9ñ Có    c                ó¬   € \         P                  V 4      pVf   Q hVP                  4       pV^,          V^,          V^,          V^,          V^,          3# )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)r   r   r   s   &  r   Ú	parse_urir   '   sM   € ô
 �I‰I�c‹N€EØÒÐÐØ�\‰\‹^€FØ�1�I�v˜a•y &¨¥)¨V°A­Y¸¸q½	ÐBÐBr   c                  ó²   € ] tR t^2tRtRR R llt]R R l4       t]R R l4       tR	 R
 lt	R R lt
R R ltR R ltRR R lltRR R lltR R ltRtR# )ÚCacheControllerz4An interface to see if request should cached or not.Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ÚcachezBaseCache | NoneÚcache_etagsÚboolÚ
serializerzSerializer | NoneÚstatus_codesúCollection[int] | Noner   )r   s   "r   r   ÚCacheController.__annotate__5   s8   € ÷ 
Pñ 
Pàð
Pð ð
Pð &ð	
Pð
 -ñ
Pr   c                	ó�   € Vf   \        4       MTV n        W n        T;'       g    \        4       V n        T;'       g    RV n        R # )N)éÈ   éË   i,  é-  é4  )r   r!   r"   r
   r$   Úcacheable_status_codes)Úselfr!   r"   r$   r%   s   &&&&&r   Ú__init__ÚCacheController.__init__5   s;   € ð %*¢M”Y”[°uˆŒ
Ø&ÔØ$×4Ð4¬
«ˆŒØ&2×&OÐ&OÐ6OˆÖ#r   c               ó    € V ^8„  d   QhRRRR/# ©r   r   r   r   r   )r   s   "r   r   r'   B   s   € ÷ ñ ˜3ð  3ñ r   c                ó6  € \        V4      w  r#rEpV'       d	   V'       g   \        RV,          4      hVP                  4       pVP                  4       pV'       g   RpT;'       d    RP                  WE.4      ;'       g    TpVR,           V,           V,           pV# )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   Ú_urlnormÚCacheController._urlnormA   s„   € ô 6?¸s³^Ñ2ˆ˜D¨ßŸYÜÐFÈÕLÓMÐMà—‘“ˆØ—O‘OÓ%ˆ	çØˆDð ×7Ð7 §¡¨$¨Ó 7×?Ð?¸4ˆØ˜e•^ iÕ/°+Õ=ˆ
àÐr   c               ó    € V ^8„  d   QhRRRR/# r2   r   )r   s   "r   r   r'   V   s   € ÷ !ñ !˜Cð ! Cñ !r   c                	ó$   € V P                  V4      # )N)rA   )r9   r   s   &&r   Ú	cache_urlÚCacheController.cache_urlU   s   € à�|‰|˜CÓ Ð r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚheaderszMapping[str, str]r   zdict[str, int | None]r   )r   s   "r   r   r'   Y   s   € ÷ 4ñ 4Ð+<ð 4ÐAVñ 4r   c                	ó
  € R \         R3R\         R3R\         R3RRRRRRR	RR
RRRRRRRR\         R3/pVP                  RVP                  RR4      4      p/ pVP                  R4       F�  pVP                  4       '       g   K  VP                  R^4      pV^ ,          P                  4       p W',          w  r‰T'       d	   T	'       g   RYG&   T'       g   Km   T! T^,          P                  4       4      YG&   K�  	  V#   \         d    \
        P                  RT4        K·  i ; i  \         d&    T	'       d   \
        P                  RT4        Kç   Kê  \         d'    \
        P                  RTTP                  4        EK  i ; i)úmax-ageTz	max-staleFú	min-freshúno-cacheNúno-storezno-transformzonly-if-cachedzmust-revalidateÚpublicÚprivatezproxy-revalidatezs-maxagezcache-controlzCache-ControlÚ Ú,Ú=z,Ignoring unknown cache-control directive: %sz-Missing value for cache-control directive: %sz8Invalid value for cache-control directive %s, must be %s)NF)
ÚintÚgetÚsplitÚstripÚKeyErrorÚloggerÚdebugÚ
IndexErrorÚ
ValueErrorÚ__name__)
r.   rH   Úknown_directivesÚ
cc_headersÚretvalÚcc_directiveÚpartsÚ	directiveÚtypÚrequireds
   &&        r   Úparse_cache_controlÚ#CacheController.parse_cache_controlY   s  € ð œ˜T�{Øœ#˜u˜Øœ#˜t˜Ø˜Ø˜Ø˜MØ˜mØ˜}Ø�mØ�}Ø Øœ˜d˜ð
Ðð  —[‘[ °'·+±+¸oÈrÓ2RÓSˆ
à(*ˆà&×,Ñ,¨SÖ1ˆLØ×%Ñ%×'Ò'Ùà ×&Ñ& s¨AÓ.ˆEØ˜a�Ÿ™Ó(ˆIðØ 0Õ ;‘�÷
 ŸhØ$(�Ñ!ß‰sðÙ(+¨E°!­H¯N©NÓ,<Ó(=�FÓ%ñ# 2ð> ˆøô- ô Ü—‘ÐKÈYÔWÚðûô "ô ßÜŸ™ØNØ%÷ò  ô
 "ô Ü—L‘LØUØ!ØŸ™÷ð ðús6   Â-
C;ÃD#Ã;!D ÄD Ä#FÄ6FÅFÅ"FÆFc               ó    € V ^8„  d   QhRRRR/# )r   Úrequestr   r   zHTTPResponse | Noner   )r   s   "r   r   r'   �   s   € ÷ ñ ¨ð Ð<Oñ r   c                ó¢  € RVP                   9   d   R# VP                  pVf   Q hV P                  P                  V4      pVf   \        P                  R4       R# \        V P                  \        4      '       d   V P                  P                  V4      pMRpV P                  P                  WV4      pVf   \        P                  R4       V# )z?
Load a cached response, or return None if it's not available.
ÚRangeNzNo cache entry availablez1Cache entry deserialization failed, entry ignored)rH   Úurlr!   rT   rX   rY   Ú
isinstancer	   Úget_bodyr$   ÚloadsÚwarning)r.   rh   rE   Ú
cache_dataÚ	body_fileÚresults   &&    r   Ú_load_from_cacheÚ CacheController._load_from_cache�   s¨   € ð �g—o‘oÔ%Ùà—K‘Kˆ	ØÒ$Ð$Ð$Ø—Z‘Z—^‘^ IÓ.ˆ
ØÒÜ�L‰LÐ3Ô4Ùä�d—j‘jÔ"7×8Ò8ØŸ
™
×+Ñ+¨IÓ6‰IàˆIà—‘×&Ñ& w¸IÓFˆØŠ>Ü�N‰NÐNÔOØˆr   c               ó    € V ^8„  d   QhRRRR/# )r   rh   r   r   zHTTPResponse | Literal[False]r   )r   s   "r   r   r'   ©   s   € ÷ lñ l oð lÐ:Wñ lr   c                óœ  € VP                   f   Q hV P                  VP                   4      p\        P                  RV4       V P	                  VP
                  4      pRV9   d   \        P                  R4       R# RV9   d&   VR,          ^ 8X  d   \        P                  R4       R# V P                  V4      pV'       g   R# \        VP                  4      \        9   d   Rp\        P                  V4       V# \        VP
                  4      pV'       d   RV9  dO   R	V9  d1   \        P                  R
4       V P                  P                  V4       \        P                  R4       R# \        P                  ! 4       p\        VR,          4      pVf   Q h\        P                   ! VR,          4      p	\#        ^ Wy,
          4      p
\        P                  RV
4       V P	                  V4      p^ pVP%                  R4      pVe   Tp\        P                  RV4       McRV9   d]   \        VR,          4      pVeG   \        P                   ! VR,          4      V	,
          p\#        ^ V4      p\        P                  RV4       VP%                  R4      pVe   Tp\        P                  RV4       VP%                  R4      pVe    V
V,          p
\        P                  RV
4       WÊ8”  d.   \        P                  R4       \        P                  RWÊ4       V# R	V9  d1   \        P                  R4       V P                  P                  V4       R# )zM
Return a cached response if it exists in the cache, otherwise
return False.
zLooking up "%s" in the cacherL   z-Request header has "no-cache", cache bypassedFrJ   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 dateºNé   NzCurrent age based on date: %iz#Freshness lifetime from max-age: %iÚexpiresz#Freshness lifetime from expires: %iz+Freshness lifetime from request max-age: %irK   z'Adjusted current age from min-fresh: %iz2The response is "fresh", returning cached responsez%i > %iz4The cached response is "stale" with no etag, purging)rk   rE   rX   rY   re   rH   rs   rS   ÚstatusÚPERMANENT_REDIRECT_STATUSESr   r!   ÚdeleteÚtimer   ÚcalendarÚtimegmÚmaxrT   )r.   rh   rE   ÚccÚrespÚmsgrH   ÚnowÚ
time_tuplerw   Úcurrent_ageÚresp_ccÚfreshness_lifetimeÚmax_ager{   Úexpire_timeÚ	min_freshs   &&               r   Úcached_requestÚ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¨"�~Ó.ˆÜ˜!˜S�ZÓ(ˆÜ�‰Ð4°kÔBð ×*Ñ*¨7Ó3ˆð Ðð —+‘+˜iÓ(ˆØÒØ!(ÐÜ�L‰LÐ>Ð@RÕSð ˜'Ô!Ü" 7¨9Õ#5Ó6ˆGØÒ"Ü&Ÿošo¨g°b­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               ó    € V ^8„  d   QhRRRR/# )r   rh   r   r   zdict[str, str]r   )r   s   "r   r   r'     s   € ÷ ñ ¨?ð ¸~ñ r   c                	ó²   € V P                  V4      p/ pV'       d<   \        VP                  4      pR V9   d   VR,          VR&   RV9   d   VR,          VR&   V# )rx   ÚETagzIf-None-Matchzlast-modifiedzLast-ModifiedzIf-Modified-Since)rs   r   rH   )r.   rh   r„   Únew_headersrH   s   &&   r   Úconditional_headersÚ#CacheController.conditional_headers  s\   € Ø×$Ñ$ WÓ-ˆØˆçÜ0CÀDÇLÁLÓ0QˆGà˜Ô Ø/6°v­�˜OÑ,à 'Ô)Ø3:¸?Õ3K�Ð/Ñ0àÐr   c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r   rE   r   rh   r   Úresponser   Úbodyúbytes | NoneÚexpires_timez
int | Noner   ÚNoner   )r   s   "r   r   r'   &  sF   € ÷ ñ àðð !ðð ð	ð
 ðð !ðð 
ñr   c                ól  € \        V P                  \        4      '       d\   V P                  P                  VV P                  P                  W#R4      VR7       Ve   V P                  P                  W4       R# R# V P                  P                  VV P                  P                  W#V4      VR7       R# )z
Store the data in the cache.
r   )r{   N)rl   r!   r	   Úsetr$   ÚdumpsÚset_body)r.   rE   rh   r—   r˜   rš   s   &&&&&&r   Ú
_cache_setÚCacheController._cache_set&  s—   € ô �d—j‘jÔ"7×8Ò8ð �J‰J�N‰NØØ—‘×%Ñ% g¸Ó=Ø$ð ô ð ÒØ—
‘
×#Ñ# IÖ4ñ  ð �J‰J�N‰NØØ—‘×%Ñ% g¸Ó>Ø$ð ö r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   rh   r   Úresponse_or_refz2HTTPResponse | weakref.ReferenceType[HTTPResponse]r˜   r™   r%   r&   r   r›   r   )r   s   "r   r   r'   D  sD   € ÷ Qñ Qà ðQð LðQð ð	Qð
 -ðQð 
ñQr   c                óæ  € \        V\        P                  4      '       d   V! 4       pVf   R# MTpT;'       g    V P                  pVP                  V9  d$   \
        P                  RVP                  V4       R# \        VP                  4      pRV9   d7   \        VR,          4      pVf   Q h\        P                  ! VR,          4      p	M^ p	VeG   RV9   d@   VR,          P                  4       '       d#   \        VR,          4      \        V4      8w  d   R# V P                  VP                  4      p
V P                  V4      pVP                   f   Q hV P#                  VP                   4      p\
        P                  RV4       RpRV9   d   R	p\
        P                  R
4       RV
9   d   R	p\
        P                  R4       V'       dR   V P$                  P'                  V4      '       d1   \
        P                  R4       V P$                  P)                  V4       V'       d   R# RVP'                  RR4      9   d   \
        P                  R4       R# V P*                  '       dª   RV9   d£   ^ pVP'                  R4      '       d;   \        VR,          4      pVe%   \        P                  ! VR,          4      V	,
          p\-        VR4      p\
        P                  RV R24       \
        P                  R4       V P/                  WÁWSV4       R# \        VP                  4      \0        9   d+   \
        P                  R4       V P/                  WÁVR4       R# RV9   Ed   \        VR,          4      pVf   Q h\        P                  ! VR,          4      p	VP'                  R4      pVe6   V^ 8”  d/   \
        P                  R4       TpV P/                  VVVVV4       R# RV9   dŠ   VR,          '       dy   \        VR,          4      pVe&   \        P                  ! VR,          4      V	,
          pMRp\
        P                  RP3                  V4      4       V P/                  VVVVV4       R# R# R# R# )zK
Algorithm for caching requests.

This assumes a requests Response object.
NzStatus code %s not in %srw   ry   úcontent-lengthz&Updating cache with response from "%s"FrM   TzResponse header has "no-store"zRequest header has "no-store"z0Purging existing cache entry to honor "no-store"Ú*ÚvaryrP   zResponse header has "Vary: *"rx   r{   zetag object cached for z secondszCaching due to etagzCaching permanent redirectr   rJ   z'Caching b/c date exists and max-age > 0z4Caching b/c of expires header. expires in {} secondsi u )rl   ÚweakrefÚReferenceTyper-   r|   rX   rY   r   rH   r   r€   r�   ÚisdigitrS   Úlenre   rk   rE   r!   rT   r~   r"   r‚   r    r}   r   )r.   rh   r£   r˜   r%   r—   r-   Úresponse_headersr‡   rw   Úcc_reqrƒ   rE   Úno_storerš   r{   r‹   s   &&&&&            r   Úcache_responseÚCacheController.cache_responseD  sÖ  € ô �o¤w×'<Ñ'<×=Ò=Ù&Ó(ˆHØÒñ ð	  ð 'ˆHð ".×!LÐ!L°×1LÑ1LÐØ�?‰?Ð"8Ô8Ü�L‰LØ*¨H¯O©OÐ=Sôñ ä5HØ×Ñó6
Ðð Ð%Ô%Ü%Ð&6°vÕ&>Ó?ˆJØÒ)Ð)Ð)Ü—?’? :¨b¥>Ó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Ò1Ü�L‰LÐKÔLØ�J‰J×Ñ˜iÔ(ßÙð Ð"×&Ñ& v¨rÓ2Ô2Ü�L‰LÐ8Ô9Ùð ××Ð Ð*:Ô :ØˆLØ×#Ñ# I×.Ò.Ü&Ð'7¸	Õ'BÓC�ØÒ&Ü#+§?¢?°7¸2µ;Ó#?À$Õ#F�Lä˜|¨ZÓ8ˆLä�L‰LÐ2°<°.ÀÐIÔJÜ�L‰LÐ.Ô/Ø�O‰O˜I°ÀÖMô �—‘Ó!Ô%@Ô@Ü�L‰LÐ5Ô6Ø�O‰O˜I°¸#Ö>ð
 Ð'Õ'Ü%Ð&6°vÕ&>Ó?ˆJØÒ)Ð)Ð)Ü—?’? :¨b¥>Ó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               ó$   € V ^8„  d   QhRRRRRR/# )r   rh   r   r—   r   r   r   )r   s   "r   r   r'   ×  s$   € ÷ (ñ (Ø&ð(Ø2>ð(à	ñ(r   c                ó’  € VP                   f   Q hV P                  VP                   4      pV P                  V4      pV'       g   V# R.pVP                  P	                  VP                  P                  4        UUu/ uF  w  rgVP                  4       V9  g   K  WgbK   	  upp4       ^ÈVn        V P                  W1V4       V# u uppi )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¥   )	rk   rE   rs   rH   ÚupdateÚitemsr7   r|   r    )r.   rh   r—   rE   Úcached_responseÚexcluded_headersÚkÚvs   &&&     r   Úupdate_cached_responseÚ&CacheController.update_cached_response×  sÃ   € ð �{‰{Ò&Ð&Ð&Ø—N‘N 7§;¡;Ó/ˆ	Ø×/Ñ/°Ó8ˆçàˆOð -Ð-Ðà×Ñ×&Ñ&ð %×,Ñ,×2Ñ2Ô4ôá4‘D�AØ—7‘7“9Ð$4Ñ4ô �’Ù4òô	
ð "%ˆÔð 	�‰˜	¨OÔ<àÐùós   Á<C
ÂC
)r!   r"   r-   r$   )NTNN)NN)r\   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r/   ÚclassmethodrA   rE   re   rs   rŽ   r”   r    r¯   r¹   Ú__static_attributes__r   r   r   r   r   2   s`   † Ù>÷
Pð ôó ðð& ô!ó ð!õ4õlõ4lõ\÷÷<Q÷f(ñ (r   r   )r+   r,   )#r¾   Ú
__future__r   r€   ÚloggingÚrer   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   Ú	getLoggerr\   rX   Úcompiler   r}   r   r   r   r   r   Ú<module>rÍ      sv   ðñ
õ #ã Û Û 	Û Û Ý $ß 5Ñ 5å ?ç KÝ 9çÝå4Ý0å8à	×	Ò	˜8Ó	$€à‡j‚jÐMÓN€à(Ð õC÷Mó Mr   