+
    ®¾jÆ  ã                   óð   € R t RR.t^ RIHtHt ^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHt ^ RIHtHt ^ RIHt ^ R	IHtHt ^ R
IHtHtHt ^ RIHt ^ RIHtH t H!t!  ! R R]"4      t#R R lt$ ! R R4      t%R# )zLazy ZIP over HTTPÚHTTPRangeRequestUnsupportedÚdist_from_wheel_url)Úbisect_leftÚbisect_right)Úcontextmanager)ÚNamedTemporaryFile)ÚAnyÚDictÚ	GeneratorÚListÚOptionalÚTuple)Ú
BadZipFileÚZipFile)Úcanonicalize_name)ÚCONTENT_CHUNK_SIZEÚResponse)ÚBaseDistributionÚMemoryWheelÚget_wheel_distribution)Ú
PipSession)ÚHEADERSÚraise_for_statusÚresponse_chunksc                   ó   € ] tR t^tRtR# )r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú_/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.pyr   r      s   † Ûr!   c                óH   € V ^8„  d   QhR\         R\         R\        R\        /# )é   ÚnameÚurlÚsessionÚreturn)Ústrr   r   )Úformats   "r"   Ú__annotate__r+      s/   € ÷ Fñ Fœcð F¬ð F´jð FÔEUñ Fr!   c                ó¼   € \        W4      ;_uu_ 4       p\        VP                  V4      p\        V\	        V 4      4      uuRRR4       #   + '       g   i     R# ; i)a  Return a distribution object from the given wheel URL.

This uses HTTP range requests to only fetch the portion of the wheel
containing metadata, just enough for the object to be constructed.
If such requests are not supported, HTTPRangeRequestUnsupported
is raised.
N)ÚLazyZipOverHTTPr   r%   r   r   )r%   r&   r'   ÚzfÚwheels   &&&  r"   r   r      sD   € ô 
˜×	&Ô	&¨"ô ˜BŸG™G RÓ(ˆô & eÔ->¸tÓ-DÓE÷ 
'×	&×	&Ó	&ús   ”+A
Á
A	c                   óº  a € ] tR t^(t o Rt]3V 3R lR llt]V 3R lR l4       t]V 3R lR l4       t	V 3R lR	 lt
V 3R
 lR lt]V 3R lR l4       tR*V 3R lR lltV 3R lR ltR+V 3R lR lltV 3R lR ltR,V 3R lR lltV 3R lR ltV 3R lR ltV 3R lR lt]V 3R lR  l4       tV 3R! lR" lt]3V 3R# lR$ lltV 3R% lR& ltV 3R' lR( ltR)tV tR# )-r-   a  File-like object mapped to a ZIP file over HTTP.

This uses HTTP range requests to lazily fetch the file's content,
which is supposed to be fed to ZipFile.  If such requests are not
supported by the server, raise HTTPRangeRequestUnsupported
during initialization.
c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r$   r&   r'   Ú
chunk_sizer(   N)r)   r   Úint)r*   Ú__classdict__s   "€r"   r+   ÚLazyZipOverHTTP.__annotate__1   s-   ø€ ÷ ñ ÙðÙ!+ðÙ9<ðà	ñr!   c                óÄ  € VP                  V\        R 7      p\        V4       VP                  ^È8X  g   Q hW!VuV n        V n        V n        \        VP                  R,          4      V n	        \        4       V n        V P                  V P                  4       . V n        . V n        RVP                  P                  RR4      9  d   \!        R4      hV P#                  4        R# ))ÚheaderszContent-LengthÚbyteszAccept-RangesÚnonezrange request is not supportedN)Úheadr   r   Ústatus_codeÚ_sessionÚ_urlÚ_chunk_sizer3   r7   Ú_lengthr   Ú_fileÚtruncateÚ_leftÚ_rightÚgetr   Ú
_check_zip)Úselfr&   r'   r2   r:   s   &&&& r"   Ú__init__ÚLazyZipOverHTTP.__init__1   s´   € ð �|‰|˜C¬ˆ|Ó1ˆÜ˜ÔØ×Ñ 3Ô&Ð&Ð&Ø5<À:Ð2ˆŒ�t”y $Ô"2Ü˜4Ÿ<™<Ð(8Õ9Ó:ˆŒÜ'Ó)ˆŒ
Ø�‰�d—l‘lÔ#Ø "ˆŒ
Ø!#ˆŒØ˜$Ÿ,™,×*Ñ*¨?¸FÓCÔCÜ-Ð.NÓOÐOØ�‰Ör!   c                ó    <€ V ^8„  d   QhRS[ /# ©r$   r(   ©r)   )r*   r4   s   "€r"   r+   r5   B   s   ø€ ÷ ñ ‘cñ r!   c                ó   € R# )z!Opening mode, which is always rb.Úrbr   ©rF   s   &r"   ÚmodeÚLazyZipOverHTTP.modeA   s   € ñ r!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rK   )r*   r4   s   "€r"   r+   r5   G   s   ø€ ÷ ñ ‘cñ r!   c                ó.   € V P                   P                  # )zPath to the underlying file.)r@   r%   rN   s   &r"   r%   ÚLazyZipOverHTTP.nameF   s   € ð �z‰z�‰Ðr!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   ©Úbool)r*   r4   s   "€r"   r+   r5   K   ó   ø€ ÷ ñ ™$ñ r!   c                ó   € R# )z9Return whether random access is supported, which is True.Tr   rN   s   &r"   ÚseekableÚLazyZipOverHTTP.seekableK   ó   € ár!   c                ó   <€ V ^8„  d   QhRR/# ©r$   r(   Nr   )r*   r4   s   "€r"   r+   r5   O   s   ø€ ÷ ñ �tñ r!   c                ó:   € V P                   P                  4        R# )zClose the file.N)r@   ÚcloserN   s   &r"   r_   ÚLazyZipOverHTTP.closeO   s   € à�
‰
×ÑÖr!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rU   )r*   r4   s   "€r"   r+   r5   T   s   ø€ ÷ !ñ !™ñ !r!   c                ó.   € V P                   P                  # )zWhether the file is closed.)r@   ÚclosedrN   s   &r"   rc   ÚLazyZipOverHTTP.closedS   s   € ð �z‰z× Ñ Ð r!   c                ó&   <€ V ^8„  d   QhRS[ RS[/# ©r$   Úsizer(   )r3   r8   )r*   r4   s   "€r"   r+   r5   X   s   ø€ ÷ %ñ %™ð %¡eñ %r!   c                ó"  € \        WP                  4      pV P                  4       V P                  rCV^ 8  d   TM\	        W2,           V4      p\        ^ WR,
          4      pV P                  W5^,
          4       V P                  P                  V4      # )zÄRead up to size bytes from the object and return them.

As a convenience, if size is unspecified or -1,
all bytes until EOF are returned.  Fewer than
size bytes may be returned if EOF is reached.
)Úmaxr>   Útellr?   ÚminÚ	_downloadr@   Úread)rF   rg   Údownload_sizeÚstartÚlengthÚstops   &&    r"   rm   ÚLazyZipOverHTTP.readX   sn   € ô ˜D×"2Ñ"2Ó3ˆØŸ	™	› T§\¡\ˆvØ œ‰v¤s¨5Õ+@À&Ó'IˆÜ�A�tÕ+Ó,ˆØ�‰�u Q�hÔ'Ø�z‰z�‰˜tÓ$Ð$r!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rU   )r*   r4   s   "€r"   r+   r5   f   rW   r!   c                ó   € R# )z3Return whether the file is readable, which is True.Tr   rN   s   &r"   ÚreadableÚLazyZipOverHTTP.readablef   r[   r!   c                ó,   <€ V ^8„  d   QhRS[ RS[ RS[ /# )r$   ÚoffsetÚwhencer(   ©r3   )r*   r4   s   "€r"   r+   r5   j   s"   ø€ ÷ /ñ /™3ð /©ð /±Cñ /r!   c                ó8   € V P                   P                  W4      # )a  Change stream position and return the new absolute position.

Seek to offset relative position indicated by whence:
* 0: Start of stream (the default).  pos should be >= 0;
* 1: Current position - pos may be negative;
* 2: End of stream - pos usually negative.
)r@   Úseek)rF   rx   ry   s   &&&r"   r|   ÚLazyZipOverHTTP.seekj   s   € ð �z‰z�‰˜vÓ.Ð.r!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rz   )r*   r4   s   "€r"   r+   r5   t   s   ø€ ÷ !ñ !‘cñ !r!   c                ó6   € V P                   P                  4       # )zReturn the current position.)r@   rj   rN   s   &r"   rj   ÚLazyZipOverHTTP.tellt   s   € à�z‰z�‰Ó Ð r!   Nc                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# rf   )r   r3   )r*   r4   s   "€r"   r+   r5   x   s   ø€ ÷ )ñ )™X¡c�]ð )±cñ )r!   c                ó8   € V P                   P                  V4      # )z¬Resize the stream to the given size in bytes.

If size is unspecified resize to the current position.
The current stream position isn't changed.

Return the new file size.
)r@   rA   )rF   rg   s   &&r"   rA   ÚLazyZipOverHTTP.truncatex   s   € ð �z‰z×"Ñ" 4Ó(Ð(r!   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rU   )r*   r4   s   "€r"   r+   r5   ‚   s   ø€ ÷ ñ ™$ñ r!   c                ó   € R# )zReturn False.Fr   rN   s   &r"   ÚwritableÚLazyZipOverHTTP.writable‚   s   € ár!   c                ó   <€ V ^8„  d   QhRR/# )r$   r(   r-   r   )r*   r4   s   "€r"   r+   r5   †   s   ø€ ÷ ñ Ð,ñ r!   c                ó:   € V P                   P                  4        V # ©N)r@   Ú	__enter__rN   s   &r"   r‹   ÚLazyZipOverHTTP.__enter__†   s   € Ø�
‰
×ÑÔØˆr!   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r$   Úexcr(   N)r   )r*   r4   s   "€r"   r+   r5   Š   s   ø€ ÷ "ñ "™Sð " Tñ "r!   c                ó:   € V P                   P                  ! V!   R # rŠ   )r@   Ú__exit__)rF   rŽ   s   &*r"   r�   ÚLazyZipOverHTTP.__exit__Š   s   € Ø�
‰
×Ò˜SÔ!r!   c                ó.   <€ V ^8„  d   QhRS[ R,          /# )r$   r(   )NNN)r
   )r*   r4   s   "€r"   r+   r5   Ž   s   ø€ ÷ 	ñ 	‘yÐ!1Õ2ñ 	r!   c              #  ó†   "  € V P                  4       p Rx € V P                  V4       R#   T P                  T4       i ; i5i)ziReturn a context manager keeping the position.

At the end of the block, seek back to original position.
N)rj   r|   )rF   Úposs   & r"   Ú_stayÚLazyZipOverHTTP._stay�   s0   é € ð �i‰i‹kˆð	Ûà�I‰I�cŽNøˆD�I‰I�c�Nüs   ‚A”+ ˜A«>¾Ac                ó   <€ V ^8„  d   QhRR/# r]   r   )r*   r4   s   "€r"   r+   r5   ™   s   ø€ ÷ ñ ˜Dñ r!   c                óX  € V P                   ^,
          p\        \        ^ WP                  4      4       FC  pV P	                  W!4       V P                  4       ;_uu_ 4         \        V 4        RRR4        R# 	  R#   \         d     Mi ; i RRR4       Ke    + '       g   i     Kv  ; i)z1Check and download until the file is a valid ZIP.N)r?   ÚreversedÚranger>   rl   r•   r   r   )rF   Úendro   s   &  r"   rE   ÚLazyZipOverHTTP._check_zip™   s€   € à�l‰l˜QÕˆÜœe A s×,<Ñ,<Ó=Ö>ˆEØ�N‰N˜5Ô&Ø—‘—•ðô ˜D”Mð ÷ ’ó ?øô "ô ÙðúØ÷ ——’ús0   ÁBÁ!A<Á,BÁ<B
	ÂBÂ	B
	Â
BÂB)c                óH   <€ V ^8„  d   QhRS[ RS[ RS[S[S[3,          RS[/# )r$   ro   r›   Úbase_headersr(   )r3   r	   r)   r   )r*   r4   s   "€r"   r+   r5   ¨   s;   ø€ ÷ Jñ JÙðJÙ"ðJÙ26±s¹C°xµ.ðJá	ñJr!   c                ó’   € VP                  4       pRV RV 2VR&   RVR&   V P                  P                  V P                  VRR7      # )z:Return HTTP response to a range request from start to end.zbytes=Ú-ÚRangezno-cachezCache-ControlT)r7   Ústream)Úcopyr<   rD   r=   )rF   ro   r›   rž   r7   s   &&&& r"   Ú_stream_responseÚ LazyZipOverHTTP._stream_response¨   sS   € ð ×#Ñ#Ó%ˆØ# E 7¨!¨C¨5Ð1ˆ�Ñà#-ˆ�Ñ Ø�}‰}× Ñ  §¡°GÀDÐ ÓIÐIr!   c                ód   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ RS[S[S[ S[ 3,          RR3,          /# )r$   ro   r›   ÚleftÚrightr(   N)r3   r
   r   )r*   r4   s   "€r"   r+   r5   ²   sP   ø€ ÷ Iñ IÙðIÙ"ðIÙ*-ðIÙ69ðIá	‘5™™c˜•? D¨$Ð.Õ	/ñIr!   c              #  óX  "  € V P                   W4 V P                  W4 re\        V.VR,          ,           4      ;rq\        V.VRR ,           4      p\	        WV4       F   w  r‰W‡8”  d   Wx^,
          3x € V	^,           pK"  	  Wr8:  d   Wr3x € V.V.uV P                   W4% V P                  W4% R# 5i)zÿReturn a generator of intervals to be fetched.

Args:
    start (int): Start of needed interval
    end (int): End of needed interval
    left (int): Index of first overlapping downloaded data
    right (int): Index after last overlapping downloaded data
:Né   NNéÿÿÿÿ)rB   rC   rk   ri   Úzip)
rF   ro   r›   r§   r¨   ÚlsliceÚrsliceÚiÚjÚks
   &&&&&     r"   Ú_mergeÚLazyZipOverHTTP._merge²   s©   é € ð Ÿ™ DÐ/°·±¸TÐ1H�Ü˜˜ &¨¥*Õ,Ó-Ð-ˆÜ�3�%˜&  ˜+Õ%Ó&ˆÜ˜Ö'‰DˆAØŒuØ˜Q��h’Ø�A•ŠAñ (ð Œ8Ø�&ŠLØ;@¸'ÀCÀ5Ð7ˆ�
‰
�4Ð §¡¨DÒ 7ùs   ‚B(B*c                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r$   ro   r›   r(   Nrz   )r*   r4   s   "€r"   r+   r5   È   s"   ø€ ÷ 
,ñ 
,™sð 
,©ð 
,°ñ 
,r!   c                óÐ  € V P                  4       ;_uu_ 4        \        V P                  V4      p\        V P                  V4      pV P                  WW44       Fn  w  rV P                  W4      pVP                  4        V P                  V4       \        WPP                  4       F  pV P                  P                  V4       K   	  Kp  	  RRR4       R#   + '       g   i     R# ; i)z-Download bytes from start to end inclusively.N)r•   r   rC   r   rB   r²   r¤   r   r|   r   r>   r@   Úwrite)rF   ro   r›   r§   r¨   ÚresponseÚchunks   &&&    r"   rl   ÚLazyZipOverHTTP._downloadÈ   s¡   € à�Z‰Z�\�\Ü˜tŸ{™{¨EÓ2ˆDÜ  §¡¨SÓ1ˆEØ"Ÿk™k¨%°dÖB‘
�Ø×0Ñ0°Ó<�Ø×)Ñ)Ô+Ø—	‘	˜%Ô Ü,¨X×7GÑ7GÖH�EØ—J‘J×$Ñ$ UÖ+ó Iñ	 C÷ �\�\Š\ús   ™B1CÃC%	)r>   r@   rB   r?   rC   r<   r=   )r«   )é    rŠ   )r   r   r   r   Ú__doc__r   rG   ÚpropertyrO   r%   rY   r_   rc   rm   ru   r|   rj   rA   r†   r‹   r�   r   r•   rE   r   r¤   r²   rl   r    Ú__classdictcell__)r4   s   @r"   r-   r-   (   s  ø‡ € ñð @R÷ò ð  ÷ó ðð ÷ó ð÷ð ÷ð ð ÷!ó ð!÷%ò %÷ð ÷/ò /÷!ð !÷)ò )÷ð ÷ð ÷"ð "ð ÷	ó ð	÷ð ð  DK÷Jò J÷Ið I÷,
,ö 
,r!   r-   N)&r»   Ú__all__Úbisectr   r   Ú
contextlibr   Útempfiler   Útypingr   r	   r
   r   r   r   Úzipfiler   r   Úpip._vendor.packaging.utilsr   Úpip._vendor.requests.modelsr   r   Úpip._internal.metadatar   r   r   Úpip._internal.network.sessionr   Úpip._internal.network.utilsr   r   r   Ú	Exceptionr   r   r-   r   r!   r"   Ú<module>rÊ      sX   ðÙ à(Ð*?Ð
@€ç ,Ý %Ý 'ß >× >ß 'å 9ß Dç XÑ XÝ 4ß RÑ Rô	 )ô 	õF÷"j,ó j,r!   