
    g              	          S r SSKrSSKrSSKrSSKrSSKJrJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJrJr  SSKJrJrJr  \R@                  " \!5      r"S\S\\#   4S jr$S\S\S\%S\\&   4S jr'S\%S\%4S jr(S\%S\%S\%4S jr)S\S\S\%4S jr*S\S\S\4S jr+ " S S5      r, " S S5      r-g)z)Download files with progress indicators.
    N)IterableOptionalTuple)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                 j     [        U R                  S   5      $ ! [        [        [        4 a     g f = f)Nzcontent-length)intheaders
ValueErrorKeyError	TypeError)r   s    f/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/pip/_internal/network/download.py_get_http_response_sizer      s5    4<< 0122), s    22linkprogress_barc                 2   [        U 5      nUR                  [        R                  :X  a  UR                  nOUR
                  n[        U5      nU(       a  U S[        U5       S3n[        U 5      (       a  [        R                  SU5        O[        R                  SU5        [        R                  5       [        R                  :  a  SnO([        U 5      (       a  SnOU(       d  SnOUS:  a  SnOSn[        U 5      nU(       d  U$ [        X#S9nU" U5      $ )	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   total_lengthurl
logged_urlshow_progresschunksrenderers	            r   _prepare_downloadr2      s    
 +40L{{d...mm''%c*J"|2k,&?%@B
T%z2$j1!GLL0	t				$T"F-|WHF    filenamec                 @    [         R                  R                  U 5      $ )zB
Sanitize the "filename" value from a Content-Disposition header.
)ospathbasename)r4   s    r   sanitize_content_filenamer9   I   s     77H%%r3   content_dispositiondefault_filenamec                     [         R                  R                  5       nXS'   UR                  S5      nU(       a  [	        [        U5      5      nU=(       d    U$ )zw
Parse the "filename" value from a Content-Disposition header, and
return the default filename if the result is empty.
content-typer4   )emailmessageMessage	get_paramr9   str)r:   r;   mr4   s       r   parse_content_dispositionrD   P   sK    
 	A+n{{:&H -S];'''r3   c                    UR                   nU R                  R                  S5      nU(       a  [        X25      n[	        U5      S   nU(       d;  [
        R                  " U R                  R                  SS5      5      nU(       a  X$-  nU(       dQ  UR                  U R                  :w  a7  [        R                  R	                  U R                  5      S   nU(       a  X$-  nU$ )zgGet an ideal filename from the given HTTP response, falling back to
the link filename if not provided.
zcontent-disposition   r=    )
r4   r   getrD   r   	mimetypesguess_extensionr-   r6   r7   )r   r   r4   r:   exts        r   _get_http_response_filenamerL   _   s     }}H,,**+@A,-@K!(+A.C''(8(8(LMOH488txx'ggtxx(+OHOr3   sessionc                     UR                   R                  SS5      S   nU R                  U[        SS9n[	        U5        U$ )N#rF   r   T)r   stream)r-   splitrH   r   r   )rM   r   
target_urlr   s       r   _http_get_downloadrS   t   s<    Q'*J;;z74;@DTKr3   c                   J    \ rS rSrS\S\SS4S jrS\S\S\\\4   4S	 jr	S
r
g)
Downloader{   rM   r   r   Nc                     Xl         X l        g N_session_progress_barselfrM   r   s      r   __init__Downloader.__init__|       
  )r3   r   locationc                     [        U R                  U5      n[        X15      n[        R                  R                  X%5      n[        X1U R                  5      n[        US5       nU H  n	UR                  U	5        M     SSS5        UR                  R!                  SS5      n
Xj4$ ! [         a@  nUR                  c   e[        R                  SUR                  R                  U5        e SnAff = f! , (       d  f       Nz= f)z.Download the file given by link into location.NHTTP error %s while getting %swbContent-TyperG   rS   rZ   r   responser'   criticalstatus_coderL   r6   r7   joinr2   r[   openwriter   rH   )r]   r   ra   r   er4   filepathr0   content_filechunkcontent_types              r   __call__Downloader.__call__   s    	%dmmT:D /t:77<<3"4t/A/AB(D!\""5)   " ||'';%% & 	::)))OO0!**2H2H$ 	 "!s#   B& $C3&
C00;C++C03
Dr[   rZ   )__name__
__module____qualname____firstlineno__r   rB   r^   r
   r   rr   __static_attributes__ r3   r   rU   rU   {   sE    ** * 
	*&T &S &U38_ &r3   rU   c                   `    \ rS rSrS\S\SS4S jrS\\   S\S\\	\\	\\4   4      4S	 jr
S
rg)BatchDownloader   rM   r   r   Nc                     Xl         X l        g rX   rY   r\   s      r   r^   BatchDownloader.__init__   r`   r3   linksra   c              #   ,  #    U H  n [        U R                  U5      n[        XC5      n[        R                  R                  X&5      n[        XCU R                  5      n[        US5       n	U H  n
U	R                  U
5        M     SSS5        UR                  R!                  SS5      nX7U44v   M     g! [         a@  nUR                  c   e[        R                  SUR                  R                  U5        e SnAff = f! , (       d  f       N= f7f)z0Download the files given by links into location.Nrc   rd   re   rG   rf   )r]   r   ra   r   r   rm   r4   rn   r0   ro   rp   rq   s               r   rr   BatchDownloader.__call__   s      D	)$--> 34>Hww||H7H&t43E3EFFh%#E &&u- $ &  <<++NB?L<000)  * zz---4JJ**
  &%s@   DB6AD+D0D6
D  ;C;;D  D
D	Drt   )ru   rv   rw   rx   r   rB   r^   r   r
   r   rr   ry   rz   r3   r   r|   r|      s[    ** * 
	*1d^1/21	%eCHo-.	/1r3   r|   ).__doc__email.messager>   r*   rI   r6   typingr   r   r   pip._vendor.requests.modelsr   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   	getLoggerru   r'   r   r   rB   bytesr2   r9   rD   rL   rS   rU   r|   rz   r3   r   <module>r      s
      	 , , 0 J ; + * 5 4 R R P P			8	$( x} '
'
' ' e_	'T& & &(3 (# (RU (h d s *
 $ 8 & &>!1 !1r3   