Ë
    äØjjÆ  ã            	       óˆ  — d Z ddlZddlZddlZddlZddlmZmZm	Z	 ddl
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZm Z   ejB                  e"«      Z#dedee$   fd„Z%dedede&dee'   fd„Z(de&de&fd„Z)de&de&de&fd„Z*dedede&fd„Z+dededefd„Z, G d„ d«      Z- G d„ d«      Z.y)z)Download files with progress indicators.
é    N)ÚIterableÚOptionalÚTuple)ÚCONTENT_CHUNK_SIZEÚResponse)Úget_download_progress_renderer)ÚNetworkConnectionError)ÚPyPI)ÚLink)Úis_from_cache)Ú
PipSession)ÚHEADERSÚraise_for_statusÚresponse_chunks)Úformat_sizeÚredact_auth_from_urlÚsplitextÚrespÚreturnc                 óh   — 	 t        | j                  d   «      S # t        t        t        f$ r Y y w xY w)Nzcontent-length)ÚintÚheadersÚ
ValueErrorÚKeyErrorÚ	TypeError)r   s    ú`/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_internal/network/download.pyÚ_get_http_response_sizer      s5   € ðÜ�4—<‘<Ð 0Ñ1Ó2Ð2øÜœ¤)Ð,ò Ùðús   ‚ š1°1ÚlinkÚprogress_barc                 ó  — t        | «      }|j                  t        j                  k(  r|j                  }n|j
                  }t        |«      }|r|› dt        |«      › d�}t        | «      rt        j                  d|«       nt        j                  d|«       t        j                  «       t        j                  kD  rd}nt        | «      rd}n|sd}n
|dkD  rd}nd}t        | t        «      }|s|S t!        ||¬«      } ||«      S )	Nz (ú)zUsing cached %szDownloading %sFTi@œ  )Úbar_typeÚsize)r   Únetlocr
   Úfile_storage_domainÚshow_urlÚurl_without_fragmentr   r   r   ÚloggerÚinfoÚgetEffectiveLevelÚloggingÚINFOr   r   r   )	r   r   r   Útotal_lengthÚurlÚ
logged_urlÚshow_progressÚchunksÚrenderers	            r   Ú_prepare_downloadr3      sì   € ô
 +¨4Ó0€Là‡{�{”d×.Ñ.Ò.Ø�m‰m‰à×'Ñ'ˆä% cÓ*€JáØ"�| 2¤k°,Ó&?Ð%@ÀÐBˆ
ä�TÔÜ�‰Ð% zÕ2ä�‰Ð$ jÔ1ä×ÑÓ!¤G§L¡LÒ0Ø‰Ü	�tÔ	Ø‰ÙØ‰Ø	˜Ò	#Ø‰àˆä˜TÔ#5Ó6€FáØˆä-°|È,ÔW€HÙ�FÓÐó    Úfilenamec                 ó@   — t         j                  j                  | «      S )zJ
    Sanitize the "filename" value from a Content-Disposition header.
    )ÚosÚpathÚbasename)r5   s    r   Úsanitize_content_filenamer:   H   s   € ô �7‰7×Ñ˜HÓ%Ð%r4   Úcontent_dispositionÚdefault_filenamec                 ó¢   — t         j                  j                  «       }| |d<   |j                  d«      }|rt	        t        |«      «      }|xs |S )zƒ
    Parse the "filename" value from a Content-Disposition header, and
    return the default filename if the result is empty.
    úcontent-typer5   )ÚemailÚmessageÚMessageÚ	get_paramr:   Ústr)r;   r<   Úmr5   s       r   Úparse_content_dispositionrE   O   sM   € ô
 	�‰×ÑÓ€AØ+€A€nÑØ�{‰{˜:Ó&€HÙô -¬S°«]Ó;ˆØÒ'Ð'Ð'r4   c                 ó˜  — |j                   }| j                  j                  d«      }|rt        ||«      }t	        |«      d   }|s6t        j                  | j                  j                  dd«      «      }|r||z  }|sL|j                  | j                  k7  r3t        j                  j	                  | j                  «      d   }|r||z  }|S )zoGet an ideal filename from the given HTTP response, falling back to
    the link filename if not provided.
    zcontent-dispositioné   r>   Ú )
r5   r   ÚgetrE   r   Ú	mimetypesÚguess_extensionr.   r7   r8   )r   r   r5   r;   Úexts        r   Ú_get_http_response_filenamerM   ^   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Ø€Or4   Úsessionc                 óŠ   — |j                   j                  dd«      d   }| j                  |t        d¬«      }t	        |«       |S )Nú#rG   r   T)r   Ústream)r.   ÚsplitrI   r   r   )rN   r   Ú
target_urlr   s       r   Ú_http_get_downloadrT   s   s<   € Ø—‘—‘  QÓ'¨Ñ*€JØ�;‰;�z¬7¸4ˆ;Ó@€DÜ�TÔØ€Kr4   c                   ó>   — e Zd Zdededdfd„Zdededeeef   fd„Zy)	Ú
DownloaderrN   r   r   Nc                 ó    — || _         || _        y ©N©Ú_sessionÚ_progress_bar©ÚselfrN   r   s      r   Ú__init__zDownloader.__init__{   ó   € ð
  ˆŒØ)ˆÕr4   r   Úlocationc                 ó   — 	 t        | j                  |«      }t        ||«      }t        j                  j                  ||«      }t        ||| j                  «      }t        |d«      5 }|D ]  }	|j                  |	«       Œ 	 ddd«       |j                  j!                  dd«      }
||
fS # t        $ r?}|j                  €J ‚t        j                  d|j                  j                  |«       ‚ d}~ww xY w# 1 sw Y   ŒtxY w)z.Download the file given by link into location.NúHTTP error %s while getting %sÚwbúContent-TyperH   ©rT   rZ   r	   Úresponser(   ÚcriticalÚstatus_coderM   r7   r8   Újoinr3   r[   ÚopenÚwriter   rI   )r]   r   r`   r   Úer5   Úfilepathr1   Úcontent_fileÚchunkÚcontent_types              r   Ú__call__zDownloader.__call__ƒ   sò   € ð	Ü% d§m¡m°TÓ:ˆDô /¨t°TÓ:ˆÜ—7‘7—<‘< ¨(Ó3ˆä" 4¨¨t×/AÑ/AÓBˆÜ�(˜DÓ!ð 	* \Øò *�Ø×"Ñ" 5Õ)ñ*÷	*ð —|‘|×'Ñ'¨¸Ó;ˆØ˜Ð%Ð%øô &ò 	Ø—:‘:Ð)Ð)Ð)Ü�O‰OØ0°!·*±*×2HÑ2HÈ$ôð ûð	ú÷	*ð 	*ús#   ‚B) Á'C4Â)	C1Â2:C,Ã,C1Ã4C=)	Ú__name__Ú
__module__Ú__qualname__r   rC   r^   r   r   rq   © r4   r   rV   rV   z   sE   „ ð*àð*ð ð*ð 
ó	*ð&˜Tð &¨Sð &°U¸3À¸8±_ô &r4   rV   c                   óT   — e Zd Zdededdfd„Zdee   dedeeeeeef   f      fd„Z	y)	ÚBatchDownloaderrN   r   r   Nc                 ó    — || _         || _        y rX   rY   r\   s      r   r^   zBatchDownloader.__init__š   r_   r4   Úlinksr`   c              #   ó   K  — |D ]®  }	 t        | j                  |«      }t        ||«      }t        j                  j                  ||«      }t        ||| j                  «      }t        |d«      5 }	|D ]  }
|	j                  |
«       Œ 	 ddd«       |j                  j!                  dd«      }|||ff–— Œ° y# t        $ r?}|j                  €J ‚t        j                  d|j                  j                  |«       ‚ d}~ww xY w# 1 sw Y   Œ{xY w­w)z0Download the files given by links into location.Nrb   rc   rd   rH   re   )r]   ry   r`   r   r   rl   r5   rm   r1   rn   ro   rp   s               r   rq   zBatchDownloader.__call__¢   s  è ø€ ð ò 	1ˆDð	Ü)¨$¯-©-¸Ó>�ô 3°4¸Ó>ˆHÜ—w‘w—|‘| H¨hÓ7ˆHä& t¨T°4×3EÑ3EÓFˆFÜ�h Ó%ð .¨Ø#ò .�EØ ×&Ñ& uÕ-ñ.÷.ð  Ÿ<™<×+Ñ+¨N¸BÓ?ˆLØ˜ <Ð0Ð0Ó0ñ)	1øô *ò Ø—z‘zÐ-Ð-Ð-Ü—‘Ø4Ø—J‘J×*Ñ*Øôð
 ûðú÷.ð .üs@   ‚D‰B7ŸADÁ.DÂ/DÂ7	C?Ã :C:Ã:C?Ã?DÄD	ÄD)
rr   rs   rt   r   rC   r^   r   r   r   rq   ru   r4   r   rw   rw   ™   s[   „ ð*àð*ð ð*ð 
ó	*ð1Ø˜d‘^ð1Ø/2ð1à	�%˜˜e C¨ H™oÐ-Ñ.Ñ	/ô1r4   rw   )/Ú__doc__Úemail.messager?   r+   rJ   r7   Útypingr   r   r   Úpip._vendor.requests.modelsr   r   Úpip._internal.cli.progress_barsr   Úpip._internal.exceptionsr	   Ú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   Ú	getLoggerrr   r(   r   r   rC   Úbytesr3   r:   rE   rM   rT   rV   rw   ru   r4   r   ú<module>r‰      s
  ðñã Û Û Û 	ß ,Ñ ,ç Då JÝ ;Ý +Ý *Ý 5Ý 4ß RÑ Rß PÑ Pà	ˆ×	Ñ	˜8Ó	$€ð (ð ¨x¸©}ó ð'Ø
ð'à
ð'ð ð'ð ˆe�_ó	'ðT&¨ð &°ó &ð(°3ð (È#ð (ÐRUó (ð hð °dð ¸só ð* 
ð °$ð ¸8ó ÷&ñ &÷>!1ò !1r4   