
    0hh7                     ^   S SK r S SK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
r
S SKrS SKrS SKrS SKr\R                   " S5        S rS	 r\" \R&                  R(                  \R*                  R,                  5      r " S
 S\5      r\" \\ R6                  S9r\" \\ R:                  S9r\" \\ R:                  S9r " S S\R@                  5      r! " S S\R@                  5      r" " S S\R@                  5      r# " S S\R@                  5      r$\%S:X  a  \RL                  " 5         gg)    N)support)	os_helper)socket_helper)ResourceDenied)sanepathname2urlnetworkc                 h    [        S5       H  n U " U0 UD6s  $    We! U a  nUn S nAM   S nAff = f)N   )range)funcexcargskwargsielast_excs          =/opt/python-3.13.8/usr/lib/python3.13/test/test_urllib2net.py_retry_thricer      sF    1X	(((  N  	H	s   1,1c                    ^ ^ UU 4S jnU$ )Nc                  $   > [        TT/U Q70 UD6$ N)r   )r   r   r   r   s     r   wrapped(_wrap_with_retry_thrice.<locals>.wrapped   s    T38888     )r   r   r   s   `` r   _wrap_with_retry_thricer      s    9Nr   c                   *    \ rS rSrS rS rSS jrSrg)TransientResource&   c                     Xl         X l        g r   )r   attrs)selfr   r   s      r   __init__TransientResource.__init__+   s    
r   c                     U $ r   r   r"   s    r   	__enter__TransientResource.__enter__/   s    r   Nc                     Ubm  [        U R                  U5      (       aQ  U R                  R                  5        H(  u  pE[	        X$5      (       d    g [        X$5      U:w  d  M(    g    [        S5      eg g )Nz%an optional resource is not available)
issubclassr   r!   itemshasattrgetattrr   )r"   type_value	tracebackattr
attr_values         r   __exit__TransientResource.__exit__2   sh     DHHe!<!<$(JJ$4$4$6 u++5':5	 %7 %%LMM "=r   )r!   r   )NNN)__name__
__module____qualname____firstlineno__r#   r'   r3   __static_attributes__r   r   r   r   r   &   s    
Nr   r   )errnoc                       \ rS rSrSrg)	AuthTestsG   r   N)r5   r6   r7   r8   r9   r   r   r   r<   r<   G   s     r   r<   c                       \ rS rSrS rSrg)CloseSocketTestn   c                    U R                  [        R                  R                  5        [        R
                  n[        R                  " U5         [        U5      nUR                  nU R                  UR                  5        UR                  5         U R                  UR                  5        S S S 5        g ! , (       d  f       g = fr   )
addCleanupurllibrequest
urlcleanupr   TEST_HTTP_URLr   transient_internet_urlopen_with_retryfpassertFalseclosedclose
assertTrue)r"   urlresponsesocks       r   
test_closeCloseSocketTest.test_closep   s~    112 ##--c2*3/H;;DT[[)NNOODKK( 322s   AB77
Cr   N)r5   r6   r7   r8   rQ   r9   r   r   r   r?   r?   n   s    )r   r?   c                       \ rS rSrS r\R                  " S5      S 5       rS rS r	\R                  " S5      S 5       r
S r\R                  " S	5      S
 5       rSS jrS rSrg)OtherNetworkTests~   c                     g r   )logging	getLogger
addHandlerStreamHandler)r"   rW   loggers      r   setUpOtherNetworkTests.setUp   s    r   walltimec                     SSSS [         R                  R                  4/nU R                  XR	                  5       5        g )Nzftp://www.pythontest.net/READMEz*ftp://www.pythontest.net/non-existent-file)rC   errorURLError
_test_urls_extra_handlers)r"   urlss     r   test_ftpOtherNetworkTests.test_ftp   s?     .-96<<((* 	2245r   c                    [         R                  n[        US5      n UR                  S5        UR	                  5         S[        [        R                  R                  U5      5      -   SS [        R                  R                  4/nU R                  X0R                  5       SS9  [        R                  " U5        U R                  [         [        R"                  R$                  S5        g ! [        R                  " U5        f = f)Nwz	hi there
zfile:zfile:///nonsensename/etc/passwdT)retryz./relative_path/to/file)r   TESTFNopenwriterL   r   ospathabspathrC   r`   ra   rb   rc   removeassertRaises
ValueErrorrD   urlopen)r"   rj   frd   s       r   	test_fileOtherNetworkTests.test_file   s    !!
	GGL!GGI*277??6+BCC2D&&(D
 OOD"6"6"8OEIIf*fnn&<&<=VW IIfs   BC+ +Dc                 $   Sn[         R                  " U5         [        R                  R	                  U5      n[        R                  R                  U5      nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nz)http://www.pythontest.net/index.html#fragr   rG   rC   rD   Requestrs   assertEqualgeturl)r"   urlwith_fragreqress       r   test_urlwithfrag"OtherNetworkTests.test_urlwithfrag   sc    B--l;..((6C..((-CSZZ\?A <;;   AB
Bc                 $   Sn[         R                  " U5         [        R                  R	                  U5      n[        R                  R                  U5      nU R                  UR                  5       S5        S S S 5        g ! , (       d  f       g = f)Nz*http://www.pythontest.net/redir/with_frag/z)http://www.pythontest.net/elsewhere/#fragrx   )r"   redirect_url_with_fragr}   r~   s       r   test_redirect_url_withfrag,OtherNetworkTests.test_redirect_url_withfrag   sg    !M--.DE..(()?@C..((-CSZZ\?A FEEr   c                 d   [         R                  n[        R                  " U5         [        R
                  R                  5       n[        R
                  R                  U5      nU R                  UR                  5       5        UR                  U5        U R                  UR                  5       5        U R                  UR                  S5      5        UR                  SS5        UR                  U5        U R                  UR                  S5      S5        S S S 5        g ! , (       d  f       g = f)Nz
User-agentz
User-Agentz
Test-Agent)r   rF   r   rG   rC   rD   build_openerry   rJ   header_itemsrk   rM   
has_header
add_headerrz   
get_header)r"   rN   openerrD   s       r   test_custom_headers%OtherNetworkTests.test_custom_headers   s    ##--c2^^002Fnn,,S1GW1134KK OOG0023OOG..|<=|L9KK W//=lK 322s   C1D!!
D/z XXX: http://www.imdb.com is gonec                    Sn[         R                  " U5          [        R                  R	                  U5       n S S S 5        U R                  W5        [        R                  R	                  U5      nUR                  5       nU R                  U5        S S S 5        g ! , (       d  f       Nh= f! [         a    U R                  S5         Nwf = f! , (       d  f       g = f)Nzhttp://www.imdb.comzOurlopen failed for site not sending                            Connection:close)	r   rG   rC   rD   rs   rM   rr   failread)r"   URLr~   r}   s       r   test_sites_no_connection_close0OtherNetworkTests.test_sites_no_connection_close   s    
 $--c2%^^++C0C 1 $..((-C((*COOC  3200 .		 - ..	 32sE   CB/BB/AC
B,	(B//C
CCC
Cc                 d   SS K nSS KnUR                  S5      R                  n[        R
                  R                  " U6 R                  nU(       a$  [        U[        R                  R                  5      nU H  nU R                  US9   [        U[        5      (       a  Uu  pn
OS =p[        R                  " U5          U" X[         R"                  5      n [$           [&           [(           UR+                  5       nU" S[-        U5      -  5        S S S 5        S S S 5        S S S 5        UR7                  5         S S S 5        UR?                  S5        S S S 5        M     g ! , (       d  f       NT= f! , (       d  f       N]= f! , (       d  f       Nf= f! [.         a    [1        SU-  [2        R4                  S9   Nf = f! [8         aC  nU
(       a6  SU
< SU< S	U	< S
[;        U5      < SU< 3
nU R=                  XU5         S nANe S nAff = f! , (       d  f       N= f! , (       d  f       GM  = f)Nr   test_urllib2)rN   zread %d bytesz<timeout: %s>)filezDidn't get expected error(s) z for  z, got z: g?) timerW   rX   debugrC   rD   r   rk   r   r`   ra   subTest
isinstancetupler   rG   r   INTERNET_TIMEOUTtime_outsocket_peer_resetioerror_peer_resetr   lenTimeoutErrorprintsysstderrrL   OSErrortypeassertIsInstancesleep)r"   rd   handlersri   r   rW   r   rs   rN   r}   expected_errrt   buferrmsgs                  r   rb   OtherNetworkTests._test_urls   s   !!.177..--x8==-gv||7L7LMGC#&c5))-0*Cl)--C"55c:"#Cg.F.FGJ!)!2!3&'ffh %oC&@ A "4 "3 "* 	) ;* 

37 '& , "4!3 "3!2 "*
  , J!/C"7cjjIJ # "'$0#sDIs$LC 11#SII!"	 ;: '&s   
5H?HF>FF	&E1-%E E1F	"F*H:H 
E.*E11
E?;F	
FFHF%F;	8H:F;	;H>
H	8H	 HH	H	H
HH
H/	c                     / n[         R                  R                  5       nU R                  UR                  5        UR                  S5        UR                  U5        U$ )N   )rC   rD   CacheFTPHandlerrB   clear_cache
setTimeoutappend)r"   r   cfhs      r   rc   !OtherNetworkTests._extra_handlers  sF    nn,,.(qr   r   N)T)r5   r6   r7   r8   r\   r   requires_resourcere   ru   r   r   r   unittestskipr   rb   rc   r9   r   r   r   rT   rT   ~   s    7 z*6 +6XZA z*A +AL ]]56! 7!(% Nr   rT   c                       \ rS rSrS rS rS rS rS rSr	\
R                  " S5      S	 5       rS
 r\
R                  " S5      S 5       r\
R                  " S5      S 5       rSrg)TimeoutTesti%  c                 V    U R                  [        R                  R                  5        g r   )rB   rC   rD   rE   r&   s    r   r\   TimeoutTest.setUp&  s    112r   c                    U R                  [        R                  " 5       5        [        R                  n[
        R                  " US S9   [        U5      nU R                  UR                  5        U R                  UR                  R                  R                  R                  5       5        S S S 5        g ! , (       d  f       g = fNtimeout)assertIsNonesocketgetdefaulttimeoutr   rF   r   rG   rH   rB   rL   rI   raw_sock
gettimeoutr"   rN   us      r   test_http_basicTimeoutTest.test_http_basic*  s~    &2245##--c4@#C(AOOAGG$addhhnn779: A@@s   
A$B77
Cc                 $   U R                  [        R                  " 5       5        [        R                  n[
        R                  " U5         [        R                  " S5         [        U5      nU R                  UR                  5        [        R                  " S 5        U R                  UR                  R                  R                  R                  5       S5        S S S 5        g ! [        R                  " S 5        f = f! , (       d  f       g = fN<   )r   r   r   r   rF   r   rG   setdefaulttimeoutrH   rB   rL   rz   rI   r   r   r   r   s      r   test_http_default_timeout%TimeoutTest.test_http_default_timeout2  s    &2245##--c2$$R(/',(((.QTTXX^^668"= 32 ((. 32s%   D#&C&	AD&C>>D
Dc                     U R                  [        R                  " 5       5        [        R                  n[
        R                  " U5         [        R                  " S5         [        US S9nU R                  UR                  5        [        R                  " S 5        U R                  UR                  R                  R                  R                  5       5        S S S 5        g ! [        R                  " S 5        f = f! , (       d  f       g = fNr   r   )r   r   r   r   rF   r   rG   r   rH   rB   rL   rI   r   r   r   r   s      r   test_http_no_timeout TimeoutTest.test_http_no_timeout>  s    &2245##--c2$$R(/'T:(((.addhhnn779: 32 ((. 32s%   C?#%C$AC?$C<<C??
Dc                 J   [         R                  n[        R                  " U5         [	        USS9nU R                  UR                  5        U R                  UR                  R                  R                  R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nx   r   )r   rF   r   rG   rH   rB   rL   rz   rI   r   r   r   r   s      r   test_http_timeoutTimeoutTest.test_http_timeoutJ  sh    ##--c2#C5AOOAGG$QTTXX^^668#> 322s   A$B
B"zftp://www.pythontest.net/r^   c                    U R                  [        R                  " 5       5        [        R                  " U R
                  S S9   [        U R
                  5      nU R                  UR                  5        U R                  UR                  R                  R                  R                  R                  5       5        S S S 5        g ! , (       d  f       g = fr   )r   r   r   r   rG   FTP_HOSTrH   rB   rL   rI   r   r   r   r"   r   s     r   test_ftp_basicTimeoutTest.test_ftp_basicS  s    &2245--dmmTJ#DMM2AOOAGG$addggkk//::<= KJJs   A8C
Cc                 @   U R                  [        R                  " 5       5        [        R                  " U R
                  5         [        R                  " S5         [        U R
                  5      nU R                  UR                  5        [        R                  " S 5        U R                  UR                  R                  R                  R                  R                  5       S5        S S S 5        g ! [        R                  " S 5        f = f! , (       d  f       g = fr   )r   r   r   r   rG   r   r   rH   rB   rL   rz   rI   r   r   r   r   s     r   test_ftp_default_timeout$TimeoutTest.test_ftp_default_timeout[  s    &2245--dmm<$$R(/'6(((.QTTWW[[..99;R@ =< ((. =<s%   D0C4AD4DD
Dc                 <   U R                  [        R                  " 5       5        [        R                  " U R
                  5         [        R                  " S5         [        U R
                  S S9nU R                  UR                  5        [        R                  " S 5        U R                  UR                  R                  R                  R                  R                  5       5        S S S 5        g ! [        R                  " S 5        f = f! , (       d  f       g = fr   )r   r   r   r   rG   r   r   rH   rB   rL   rI   r   r   r   r   s     r   test_ftp_no_timeoutTimeoutTest.test_ftp_no_timeoutf  s    &2245--dmm<$$R(/'tD(((.addggkk//::<= =< ((. =<s%   D/C2AD2D

D
Dc                 f   [         R                  " U R                  5         [        U R                  SS9nU R	                  UR
                  5        U R                  UR                  R                  R                  R                  R                  5       S5        S S S 5        g ! , (       d  f       g = fr   )r   rG   r   rH   rB   rL   rz   rI   r   r   r   r   s     r   test_ftp_timeoutTimeoutTest.test_ftp_timeoutr  sk    --dmm<#DMM2>AOOAGG$QTTWW[[..99;R@ =<<s   A8B""
B0r   N)r5   r6   r7   r8   r\   r   r   r   r   r   r   r   r   r   r   r   r9   r   r   r   r   r   %  s    3;
>
;? +Hz*> +>	A z*	> +	> z*A +Ar   r   __main__)'r:   r   testr   test.supportr   r   r   test.test_urllib2r   rm   r   urllib.errorrC   urllib.requestr   requiresr   r   rD   rs   r`   ra   rH   objectr   r   	ETIMEDOUTr   
ECONNRESETr   r   TestCaser<   r?   rT   r   r5   mainr   r   r   <module>r      s      " & ' . 	    
     .fnn.D.D.4ll.C.CE N N8 WEOO<%gU5E5EF &we6F6FG 1!! 1N)h'' ) d)) dNRA(## RAj zMMO r   