+
    ®¾jF+  ã                   ó‚  € R 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Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIHtH t H!t! ^ RI"H#t#H$t$H%t% ]PL                  ! ]'4      t(R R lt)R R lt*R R R llt+R R lt,R R lt-R R lt.R!R R llt/ ! R R4      t0 ! R R4      t1R# )"z(Download files with progress indicators.N)Ú
HTTPStatus)ÚBinaryIOÚIterableÚOptionalÚTuple)ÚResponse)ÚReadTimeoutError)Úget_download_progress_renderer)ÚIncompleteDownloadErrorÚNetworkConnectionError)ÚPyPI)ÚLink)Úis_from_cache)Ú
PipSession)ÚHEADERSÚraise_for_statusÚresponse_chunks)Úformat_sizeÚredact_auth_from_urlÚsplitextc                óF   € V ^8„  d   QhR\         R\        \        ,          /# ©é   ÚrespÚreturn)r   r   Úint)Úformats   "Ú]/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/pip/_internal/network/download.pyÚ__annotate__r      s   € ÷ ñ ¤(ð ¬x¼­}ñ ó    c                 óv   €  \        V P                  R ,          4      #   \        \        \        3 d     R# i ; i)zcontent-lengthN)r   ÚheadersÚ
ValueErrorÚKeyErrorÚ	TypeError©r   s   &r   Ú_get_http_response_sizer&      s5   € ðÜ�4—<‘<Ð 0Õ1Ó2Ð2øÜœ¤)Ð,ô Úðús   ‚ ž8·8c                óF   € V ^8„  d   QhR\         R\        \        ,          /# r   )r   r   Ústr)r   s   "r   r   r       s"   € ÷ Gñ G´8ð GÄÌÅñ Gr   c                ól   € V P                   P                  RV P                   P                  R4      4      # )z�
Return either the ETag or Last-Modified header (or None if neither exists).
The return value can be used in an If-Range header.
Úetagzlast-modified)r!   Úgetr%   s   &r   Ú(_get_http_response_etag_or_last_modifiedr,       s*   € ð
 �<‰<×Ñ˜F D§L¡L×$4Ñ$4°_Ó$EÓFÐFr   c                ó¢   € V ^8„  d   QhR\         R\        R\        R\        \        ,          R\        \        ,          R\
        \        ,          /# )r   r   ÚlinkÚprogress_barÚtotal_lengthÚrange_startr   )r   r   r(   r   r   r   Úbytes)r   s   "r   r   r   (   sP   € ÷ 0ñ 0Ü
ð0ä
ð0ô ð0ô œ3•-ð	0ô
 œ#•ð0ô Œe…_ñ0r   c                 ó¾  € VP                   \        P                  8X  d   VP                  pMVP                  p\        V4      pV'       d8   V'       d   V R \        V4       R\        V4       R2pMV R \        V4       R2p\        V 4      '       d   \        P                  RV4       M5V'       d   \        P                  RV4       M\        P                  RV4       \        P                  4       \        P                  8”  d   RpM+\        V 4      '       d   RpMV'       g   RpMVR	8”  d   RpMRp\        V 4      pV'       g   V# \        W#VR7      p	V	! V4      # )
z (Ú/Ú)zUsing cached %szResuming download %szDownloading %sFT)Úbar_typeÚsizeÚinitial_progressi   )Únetlocr   Úfile_storage_domainÚshow_urlÚurl_without_fragmentr   r   r   ÚloggerÚinfoÚgetEffectiveLevelÚloggingÚINFOr   r	   )
r   r.   r/   r0   r1   ÚurlÚ
logged_urlÚshow_progressÚchunksÚrenderers
   &&&&&     r   Ú_prepare_downloadrG   (   s)  € ð ‡{�{”d×.Ñ.Ô.Ø�m‰m‰à×'Ñ'ˆä% cÓ*€Jçßà�,˜b¤¨[Ó!9Ð :¸!¼KÈÓ<UÐ;VÐVWÐXñ ð '˜< r¬+°lÓ*CÐ)DÀAÐFˆJä�T×ÒÜ�‰Ð% zÕ2ß	Ü�‰Ð*¨JÕ7ä�‰Ð$ jÔ1ä×ÑÓ!¤G§L¡LÔ0Ø‰Ü	�t×	Ò	Ø‰ßØ‰Ø	˜Ô	$Ø‰àˆä˜TÓ"€FçØˆä-ØÀ;ô€Hñ �FÓÐr   c                ó0   € V ^8„  d   QhR\         R\         /# )r   Úfilenamer   ©r(   )r   s   "r   r   r   [   s   € ÷ &ñ &¬ð &´ñ &r   c                ó@   € \         P                  P                  V 4      # )zB
Sanitize the "filename" value from a Content-Disposition header.
)ÚosÚpathÚbasename)rI   s   &r   Úsanitize_content_filenamerO   [   s   € ô �7‰7×Ñ˜HÓ%Ð%r   c                ó<   € V ^8„  d   QhR\         R\         R\         /# )r   Úcontent_dispositionÚdefault_filenamer   rJ   )r   s   "r   r   r   b   s"   € ÷ (ñ (´3ð (Ì#ð (ÔRUñ (r   c                ó¸   € \         P                  P                  4       pWR&   VP                  R4      pV'       d   \	        \        V4      4      pT;'       g    T# )zw
Parse the "filename" value from a Content-Disposition header, and
return the default filename if the result is empty.
úcontent-typerI   )ÚemailÚmessageÚMessageÚ	get_paramrO   r(   )rQ   rR   ÚmrI   s   &&  r   Úparse_content_dispositionrZ   b   sN   € ô
 	�‰×ÑÓ€AØ+€nÑØ�{‰{˜:Ó&€Hßô -¬S°«]Ó;ˆØ×'Ð'Ð'Ð'r   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   r   r.   r   )r   r   r(   )r   s   "r   r   r   q   s!   € ÷ ñ ¤hð ´dð ¼sñ r   c                óô  € VP                   pV P                  P                  R4      pV'       d   \        W24      p\	        V4      ^,          pV'       gA   \
        P                  ! V P                  P                  RR4      4      pV'       d	   W$,          pV'       g\   VP                  V P                  8w  dA   \        P                  P	                  V P                  4      ^,          pV'       d	   W$,          pV# )zgGet an ideal filename from the given HTTP response, falling back to
the link filename if not provided.
zcontent-dispositionrT   Ú )
rI   r!   r+   rZ   r   Ú	mimetypesÚguess_extensionrB   rL   rM   )r   r.   rI   rQ   Úexts   &&   r   Ú_get_http_response_filenamera   q   s¬   € ð �}‰}€HàŸ,™,×*Ñ*Ð+@ÓAÐßÜ,Ð-@ÓKˆÜ! (Ó+¨AÕ.€CßÜ×'Ò'¨¯©×(8Ñ(8¸ÈÓ(LÓMˆßØ�OˆHß�4—8‘8˜tŸx™xÔ'Ü�g‰g×Ñ˜tŸx™xÓ(¨Õ+ˆßØ�OˆHØ€Or   c          
      ó€   € V ^8„  d   QhR\         R\        R\        \        ,          R\        \        ,          R\
        /# )r   Úsessionr.   r1   Úif_ranger   )r   r   r   r   r(   r   )r   s   "r   r   r   †   sB   € ÷ ñ Üðä
ðô œ#•ðô ”s�mð	ô
 ñr   c                 óŒ  € VP                   P                  R ^4      ^ ,          p\        P                  ! 4       pV'       d
   RV R2VR&   V'       d   W5R&    V P	                  WERR7      p\        V4       V#   \         dB   pTP                  f   Q h\        P                  RTP                  P                  T4       h Rp?ii ; i)	Ú#zbytes=Ú-ÚRangezIf-RangeT)r!   ÚstreamNzHTTP error %s while getting %s)rB   Úsplitr   Úcopyr+   r   r   Úresponser=   ÚcriticalÚstatus_code)rc   r.   r1   rd   Ú
target_urlr!   r   Úes   &&&&    r   Ú_http_get_downloadrq   †   s°   € ð —‘—‘  QÓ'¨Õ*€JÜ�lŠl‹n€GçØ# K =°Ð2ˆ�ÑçØ&�
ÑðØ�{‰{˜:¸tˆ{ÓDˆÜ˜Ôð
 €Køô	 "ô Ø�z‰zÒ%Ð%Ð%Ü�‰Ð8¸!¿*¹*×:PÑ:PÐRVÔWØûðús   ÁA7 Á7CÂ<B>Â>Cc                   óŒ   a € ] tR t^žt o 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tV 3R	 lR
 ltV 3R lR lt	Rt
V tR# )Ú
Downloaderc                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# ©r   rc   r/   Úresume_retriesr   N©r   r(   r   )r   Ú__classdict__s   "€r   r   ÚDownloader.__annotate__Ÿ   s3   ø€ ÷ .ñ .áð.ñ ð.ñ ð	.ð
 
ñ.r   c                óF   € V^ 8¼  g   Q R4       hWn         W n        W0n        R# )é    z<Number of max resume retries must be bigger or equal to zeroN)Ú_sessionÚ_progress_barÚ_resume_retries©Úselfrc   r/   rv   s   &&&&r   Ú__init__ÚDownloader.__init__Ÿ   s/   € ð ˜aÔð	JàIó	JØàŒØ)ÔØ-Ör   c                óB   <€ V ^8„  d   QhRS[ RS[RS[S[S[3,          /# )r   r.   Úlocationr   )r   r(   r   )r   rx   s   "€r   r   ry   ¬   s*   ø€ ÷ &ñ &™Tð &©Sð &±U¹3Á¸8µ_ñ &r   c           	     ó¤  € \        V P                  V4      p\        V4      pVP                  P	                  RR4      p\        W14      p\        P                  P                  W&4      p\        VR4      ;_uu_ 4       pV P                  W1V^ V4      p	V'       d   W”8  d   V P                  W1W„V	4       RRR4       Wu3#   + '       g   i     Yu3# ; i)z.Download the file given by link into location.zContent-Typer]   ÚwbN)rq   r|   r&   r!   r+   ra   rL   rM   ÚjoinÚopenÚ_process_responseÚ_attempt_resume)
r€   r.   r„   r   r0   Úcontent_typerI   ÚfilepathÚcontent_fileÚbytes_receiveds
   &&&       r   Ú__call__ÚDownloader.__call__¬   s»   € ä! $§-¡-°Ó6ˆô /¨tÓ4ˆØ—|‘|×'Ñ'¨¸Ó;ˆä.¨tÓ:ˆÜ—7‘7—<‘< Ó3ˆä�(˜D×!Ô! \Ø!×3Ñ3Ø˜L¨!¨\óˆN÷  Ô =Ø×$Ñ$Ø ¸Nô÷ "ð Ð%Ð%÷ "Ö!ð Ð%Ð%ús   Á<6B=Â=C	c                óN   <€ V ^8„  d   QhRS[ RS[RS[RS[RS[S[,          RS[/# )r   r   r.   r�   rŽ   r0   r   )r   r   r   r   r   )r   rx   s   "€r   r   ry   Ä   sK   ø€ ÷ 
ñ 
áð
ñ ð
ñ ð	
ñ
 ð
ñ ™s•mð
ñ 
ñ
r   c                ój   € \        WV P                  WTR7      pV P                  Wc\        V4      R7      # )z6Process the response and write the chunks to the file.)r1   )Úallow_partial)rG   r}   Ú_write_chunks_to_fileÚbool)r€   r   r.   r�   rŽ   r0   rE   s   &&&&&& r   r‰   ÚDownloader._process_responseÄ   s?   € ô #Ø˜×*Ñ*¨Lô
ˆð ×)Ñ)Ø´°\Ó0Bð *ó 
ð 	
r   c                óB   <€ V ^8„  d   QhRS[ S[,          RS[RS[RS[/# )r   rE   r�   r“   r   )r   r2   r   r•   r   )r   rx   s   "€r   r   ry   Ô   s1   ø€ ÷ ñ Ù™u•oðÙ5=ðÙQUðá	ñr   c               óÔ   € ^ p V F&  pV\        V4      ,          pVP                  V4       K(  	  V#   \         d+   pT'       g   Th\        P	                  R4        Rp?T# Rp?ii ; i)zEWrite the chunks to the file and return the number of bytes received.z'Connection timed out while downloading.N)ÚlenÚwriter   r=   Úwarning)r€   rE   r�   r“   rŽ   Úchunkrp   s   &&&$   r   r”   Ú Downloader._write_chunks_to_fileÔ   sq   € ð ˆð
	FÛ�Ø¤# e£*Õ,�Ø×"Ñ" 5Ö)ñ  ð Ðøô  ô 	Fç Ø�ô �N‰NÐD×EÐEàÐûð	Fús   „,2 ²A'½A"Á"A'c                óL   <€ V ^8„  d   QhRS[ RS[RS[RS[S[,          RS[RR/# )r   r   r.   r�   r0   rŽ   r   N)r   r   r   r   r   )r   rx   s   "€r   r   ry   ç   sK   ø€ ÷ 3ñ 3áð3ñ ð3ñ ð	3ñ
 ™s•mð3ñ ð3ð 
ñ3r   c                óŽ  € \        V4      pV P                  pV'       dÁ   V'       d¹   WT8  d³   V^,          p\        P                  R\	        V4      \	        V4      V P                  V,
          4        \        V P                  VVVR7      pVP                  \        P                  8g  p	V	'       d   V P                  Wƒ4      w  rTpWPP                  W‚W5V4      ,          pKÈ  V'       d@   WT8  d8   \        P                   ! VP"                  4       \%        W%W@P                  R7      hR# R#   \        \        \        3 d     EK+  i ; i)z9Attempt to resume the download if connection was dropped.z<Attempting to resume incomplete download (%s/%s, attempt %d))r1   rd   )ÚretriesN)r,   r~   r=   r›   r   rq   r|   rn   r   ÚPARTIAL_CONTENTÚ_reset_download_stater‰   ÚConnectionErrorr   ÚOSErrorrL   ÚremoveÚnamer
   )
r€   r   r.   r�   r0   rŽ   Úetag_or_last_modifiedÚattempts_leftÚresume_respÚmust_restarts
   &&&&&&    r   rŠ   ÚDownloader._attempt_resumeç   s$  € ô !IÈÓ NÐà×,Ñ,ˆßŸ}°Ô1NØ˜QÕˆMä�N‰NØNÜ˜NÓ+Ü˜LÓ)Ø×%Ñ%¨Õ5ô	ðä0Ø—M‘MØØ .Ø2ô	�ð  +×6Ñ6¼*×:TÑ:TÑT�ßà×2Ñ2°;ÓMñ H�NÐ2Gð ×"8Ñ"8Ø |À\ó#õ ’÷ ˜NÔ9Ü�IŠI�l×'Ñ'Ô(Ü)Ø l×<PÑ<Pôð ñ :‰<øô	 $Ô%5´wÐ?ô Ûðús   Á3A+D) Ä)EÅEc          
      óf   <€ V ^8„  d   QhRS[ RS[RS[S[S[S[,          S[S[,          3,          /# )r   r   r�   r   )r   r   r   r   r   r(   )r   rx   s   "€r   r   ry     sB   ø€ ÷ Cñ CáðCñ ðCñ 
‰s‘H™S•M¡8©C¥=Ð0Õ	1ñ	Cr   c                ó|   € VP                  ^ 4       VP                  4        ^ p\        V4      p\        V4      pW4V3# )zCReset the download state to restart downloading from the beginning.)ÚseekÚtruncater&   r,   )r€   r   r�   rŽ   r0   r§   s   &&&   r   r¢   Ú Downloader._reset_download_state  sD   € ð 	×Ñ˜!ÔØ×ÑÔØˆÜ.¨tÓ4ˆÜ HÈÓ NÐàÐ-BÐBÐBr   )r}   r~   r|   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r�   r�   r‰   r”   rŠ   r¢   Ú__static_attributes__Ú__classdictcell__©rx   s   @r   rs   rs   ž   sD   ø‡ € ÷.ð .÷&ð &÷0
ð 
÷ ð ÷&3ð 3÷jCö Cr   rs   c                   óD   a € ] tR tRt o V 3R lR ltV 3R lR ltRtV tR# )ÚBatchDownloaderi+  c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# ru   rw   )r   rx   s   "€r   r   ÚBatchDownloader.__annotate__,  s9   ø€ ÷ Mñ MáðMñ ðMñ ð	Mð
 
ñMr   c                ó(   € \        WV4      V n        R # )N)rs   Ú_downloaderr   s   &&&&r   r�   ÚBatchDownloader.__init__,  s   € ô & g¸^ÓLˆÖr   c                óx   <€ V ^8„  d   QhRS[ S[,          RS[RS[ S[S[S[S[S[3,          3,          ,          /# )r   Úlinksr„   r   )r   r   r(   r   )r   rx   s   "€r   r   r»   4  s@   ø€ ÷ 1ñ 1Ù™d•^ð1Ù/2ð1á	‘%™™e¡C© H�oÐ-Õ.Õ	/ñ1r   c              #  óT   "  € V F  pV P                  W24      w  rEW4V33x € K  	  R# 5i)z0Download the files given by links into location.N©r½   )r€   rÀ   r„   r.   rŒ   r‹   s   &&&   r   r�   ÚBatchDownloader.__call__4  s2   é € ó ˆDØ%)×%5Ñ%5°dÓ%EÑ"ˆHØ <Ð0Ð0Ô0ó ùs   ‚&(rÂ   N)r±   r²   r³   r´   r�   r�   rµ   r¶   r·   s   @r   r¹   r¹   +  s   ø‡ € ÷Mð M÷1ö 1r   r¹   )r{   )r{   N)2Ú__doc__Úemail.messagerU   r@   r^   rL   Úhttpr   Útypingr   r   r   r   Úpip._vendor.requests.modelsr   Úpip._vendor.urllib3.exceptionsr   Úpip._internal.cli.progress_barsr	   Úpip._internal.exceptionsr
   r   Úpip._internal.models.indexr   Úpip._internal.models.linkr   Úpip._internal.network.cacher   Úpip._internal.network.sessionr   Úpip._internal.network.utilsr   r   r   Úpip._internal.utils.miscr   r   r   Ú	getLoggerr±   r=   r&   r,   rG   rO   rZ   ra   rq   rs   r¹   © r   r   Ú<module>rÔ      s�   ðÙ .ã Û Û Û 	Ý ß 6Ó 6å 0Ý ;å Jß TÝ +Ý *Ý 5Ý 4ß RÑ Rß PÑ Pà	×	Ò	˜8Ó	$€õõG÷0õf&õ(õ÷*÷0JCñ JC÷Z1ó 1r   