
    <Bh/                       S r SSKJr  SSKrSSKrSSKrSSKrSSKJr  SSK	J
r
J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JrJrJ r J!r!J"r"J#r#J$r$  SSK%J&r&  SSK'J(r(  SSKJ)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0  \" \15      r2Sr3S r4\" S5          SS j5       r5S r6\          S S j5       r7\S!S j5       r8S r9 " S S5      r:g)"z.Download logic for conda indices and packages.    )annotationsN)contextmanager)DEBUG	getLogger)basenameexistsjoin)Path   )
CondaError)dals)	stringify)context)time_recorder)BasicClobberErrorChecksumMismatchErrorCondaDependencyErrorCondaHTTPErrorCondaSSLErrorCondaValueError
ProxyErrormaybe_raise   )rm_rf)lock   )ConnectionError	HTTPErrorInsecureRequestWarningInvalidSchemaRequestsProxyErrorSSLError)get_sessioni @  c                 :    [         R                  " S[        5        g )Nignore)warningssimplefilterr        Blib/python3.13/site-packages/conda/gateways/connection/download.pydisable_ssl_verify_warningr+   1   s    ($:;r)   downloadc           
        [        U5      (       a  [        [        X[        5      [        5        [        R                  (       d
  [        5         [        U 5          [        XX#XE5        S S S 5        g ! [         aB  nUR                  S   (       d  e [        R                  SU5        [        XX#XE5         S nANPS nAff = f! , (       d  f       g = f)Npartial_downloadz Retry failed partial download %s)r   r   r   r   
ssl_verifyr+   download_http_errorsdownload_innerr   _kwargslogwarning)urltarget_full_pathmd5sha256sizeprogress_update_callbackes          r*   r,   r,   5   s     %&6WEwO"$	c	"	sD 
#	"
 % 	99/0KK:<LMsD 	 
#	"s0   C A11
B=;8B83C 8B==C  
Cc           	     *   [         R                  [         R                  4n[        U 5      nSnU(       a  U(       d  U(       a  SnSn	Sn
[	        XX#US9 n[
        R                  " UR                  5       5      nUb  UR                  U:  a
   S S S 5        g 0 nU(       a=  UR                  S:  a-  SSUR                   S30nUR                  UR                  5        UR                  U SXR                  US9n[        R                  [        5      (       a  [        R                  [!        US	S
95        UR#                  5         U(       a1  UR$                  S:w  a!  UR                  S5        UR'                  5         [)        UR*                  R                  SS5      5      =nnU(       aT  U(       aM  UR*                  R                  SS5      n [)        UR-                  SS5      S   R/                  S5      S   5      nUR5                  [6        S9 Hz  nUR8                  R;                  5       n	 UR=                  U5        U
[G        U5      -  n
U(       d  MF  SU	s=::  a  U::  d  MU  O  MY  U(       d  Mb  U" UR                  U	-   U-  5        M|     U(       a  X:w  a  [I        S5      n[A        UU UUU	S9eS S S 5        g ! [0        [2        4 a     Nf = f! [>         a&  nSn[A        UURB                  URD                  S9eS nAff = f! , (       d  f       g = f)NFTr   )r5   r7   r8   r9   Rangezbytes=-)streamheadersproxiestimeout   content_max_len   zContent-LengthzContent-Rangezbytes 0-0/0 r   /)
chunk_sizez5Failed to write to %(target_path)s
  errno: %(errno)d)target_patherrnoz
            Downloaded bytes did not match Content-Length
                url: %(url)s
                target_path: %(target_path)s
                Content-Length: %(content_length)d
                downloaded bytes: %(downloaded_bytes)d
            )r5   rK   content_lengthdownloaded_bytes)%r   remote_connect_timeout_secsremote_read_timeout_secsr#   download_partial_fileosfstatfilenost_sizeseekgetrA   r3   isEnabledForr   debugr   raise_for_statusstatus_codetruncateintr@   splitrsplitLookupError
ValueErroriter_content
CHUNK_SIZErawtellwriteOSErrorr   namerL   lenr   )r5   r6   r7   r8   r9   r:   rB   sessionpartialstreamed_bytessize_buildertargetstat_resultr@   resprM   total_content_lengthcontent_rangechunkr;   messages                        r*   r1   r1   R   s   1173S3SSG#GGNL 
s
	hhv}}/ 3 3t ;
 
 {**Q.&)<)<(=Q ?@GKK++,{{gPW  
 E""IIic:; t''3.KKNOO03LL-q11
 	
- w !LL,,_mLM'*!''Q/299#>rB($ &&*&=E "XX]]_NRU# CJ&L##^(M~(M(M++,$,,~=AUU >" n>G ,-!/ G
 
H  ,   RR fkkQQR[
 
sn   9LD6L0J;=0L.K?LL%	L2A L;KLKL
L!K<<LL
Lc             #  "  ^ ^^^^^#    [        T 5      m T R                  n[        T 5      R                  nU S3nXW-  nUR                  5       mT(       a  SOSn	UUUUU U4S jn
 UR	                  U	S9 n[        U5         Uv   U
" U5        SSS5        SSS5         UR                  T 5        g! , (       d  f       N)= f! , (       d  f       N2= f! [         ae  n UR                  R                  nO! [         a    Sn Of = f[        U[        5      (       a   SUs=::  a  S:  a  O  e UR                  5         e SnAf[         a    UR                  5         e f = f! [         a$    T R                  5         UR                  T 5         gf = f7f)	z~
Create or open locked partial download file, moving onto target_full_path
when finished. Preserve partial file on exception.
z.partialzr+bzw+bc           	       > U R                  S5        T	(       d  T(       a  T(       a  SOSnT(       a  TOT	n [        R                  U5      n[        R                  " U5      nU R                  S5        U R                  [        5      =n(       a/  UR                  U5        U R                  [        5      =n(       a  M/  UR                  5       U:w  a7  UR                  5       n[        R                  SUTUU5        [        TTUUUT
S9eTb[  [         R"                  " U R%                  5       5      R&                  nUT:w  a&  [        R                  STUT5        [        TTSTUT
S9eg g ! [        [        4 a  n[        U5      UeS nAff = f)Nr   r8   r7   z'%s mismatch for download: %s (%s != %s))r.   z)size mismatch for download: %s (%s != %s)r9   )rV   bytesfromhexra   	TypeErrorr   hashlibnewreadrc   updatedigest	hexdigestr3   rY   r   rR   rS   rT   rU   )rn   checksum_typechecksumchecksum_bytesexchasherr|   actual_checksumactual_sizer7   r.   r8   r9   r6   r5   s            r*   check$download_partial_file.<locals>.check   st   A&(.HEM!'vSH4!&x!8 [[/FKKN ++j11$1d# !++j11$1 }}.0"("2"2"4		=!# ,$!#%5  ((6==?3;;Kd"		?	 ,$%5  # 1 	* 4%c*34s   E) )F
9FF
)modeNi  i  )r
   parentrh   r   openr   r   responser[   AttributeError
isinstancer]   unlinkr   renamerg   )r6   r5   r8   r7   r9   r   rh   partial_namepartial_pathr   r   rk   r;   r[   r.   s   `````         @r*   rQ   rQ      sg     ,-$$F !&&DV8$L(L $**,$5%D/ /bD)Wd7mM'N 7D)".,-% 7Dm))  		**00K 	K	k3''C;,D,D !    .!,-.s   AF%C 4C B0CC E /F0
B>	:C
CC FC 
EC43D<4D D<D9D<<EF+F	FFFc              #    #     Sv   g! [          a  n[        R                  U S35        e SnAf[         a    [	        5       e[
         a+  nS[        U5      ;   a  [        S5      n[        U5      ee SnAf[         aH  n SSK
n[        [        SU S35      5      e! [         a    [        [        SU S35      5      ef = fSnAf[        [        4 ah  n[        S	5      n[        UU [!        UR"                  S
S5      [!        UR"                  SS5      [!        UR"                  SS5      UR"                  US9eSnAff = f7f)z+Exception translator used inside download()Nz, trying againSOCKSaQ  
                Requests has identified that your current working environment is configured
                to use a SOCKS proxy, but pysocks is not installed.  To proceed, remove your
                proxy configuration, run `conda install pysocks`, and then you can re-enable
                your proxy configuration.
                r   z}
                    Encountered an SSL error. Most likely a certificate verification issue.

                    Exception: z
                    z
                    OpenSSL appears to be unavailable on this machine. OpenSSL is required to
                    download and install packages.

                    Exception: z
        An HTTP error occurred when trying to retrieve this URL.
        HTTP errors are often intermittent, and a simple retry will get you on your way.
        r[   reasonelapsed)	caused_by)ConnectionResetErrorr3   rY   r!   r   r    strr   r   r"   sslr   ImportErrorr   r   r   getattrr   )r5   r;   rt   r   help_messages        r*   r0   r0   	  s^    B
 		QC~&' l c!fG 'w// 	    !"s #   
	  !"s #		 	
	, Y' 

 AJJt4AJJ$/AJJ	40JJ
 	

sY   E 	 E 
D=, D=&A22D= BC#B??CD=A#D88D==E c                   [         R                  (       d
  [        5         [        U 5         [         R                  [         R
                  4n[        U 5      nUR                  U SUR                  US9n[        R                  [        5      (       a  [        R                  [        USS95        UR                  5         S S S 5        UR                  $ ! , (       d  f       WR                  $ = f)NT)r?   rA   rB   rC   rD   )r   r/   r+   r0   rO   rP   r#   rW   rA   r3   rX   r   rY   r   rZ   text)r5   rB   rj   r   s       r*   download_textr   T  s    "$	c	"55w7W7WWc";;goow  
 E""IIi#>?!!# 
# == 
#	" ==s   BC
C+c                  .    \ rS rSrSrSS jrS rS rSrg)	TmpDownloadic  z2Context manager to handle downloads to a tempfile.c                    Xl         X l        g N)r5   verbose)selfr5   r   s      r*   __init__TmpDownload.__init__f  s    r)   c                    SU R                   ;  a  S U l        U R                   $ [        R                  " 5       U l        [	        U R                  [        U R                   5      5      n[        U R                   U5        U$ )Nz://)r5   tmp_dirtempfilemkdtempr	   r   r,   )r   dsts     r*   	__enter__TmpDownload.__enter__j  sZ     DL88O#++-DLt||Xdhh%78CTXXs#Jr)   c                R    U R                   (       a  [        U R                   5        g g r   )r   r   )r   exc_type	exc_value	tracebacks       r*   __exit__TmpDownload.__exit__u  s    <<$,, r)   )r   r5   r   N)T)	__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes__r(   r)   r*   r   r   c  s    <	 r)   r   )NNNN)
r6   z
str | Pathr5   r   r8   r   r7   r   r9   r]   )r5   r   );r   
__future__r   rz   rR   r   r&   
contextlibr   loggingr   r   os.pathr   r   r	   pathlibr
    r   
auxlib.ishr   auxlib.logzr   base.contextr   	common.ior   
exceptionsr   r   r   r   r   r   r   r   disk.deleter   	disk.lockr   r   r   r   r    r!   r"   rj   r#   r   r3   rc   r+   r,   r1   rQ   r0   r   r   r(   r)   r*   <module>r      s   5 "  	   % $ * *    $ # &	 	 	     ! 
< z 		! 8Vt Y. Y.*-Y.7:Y.ADY.LOY. Y.x G
 G
T   r)   