
    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 rSS jrSrg)	TransientResource&   zRaise ResourceDenied if an exception is raised while the context manager
is in effect that matches the specified exception and attributes.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)zIf type_ is a subclass of self.exc and value has attributes matching
self.attrs, raise ResourceDenied.  Otherwise let the exception
propagate (if any).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____doc__r#   r'   r3   __static_attributes__r   r   r   r   r   &   s    INr   r   )errnoc                       \ rS rSrSrSrg)	AuthTestsG   z&Tests urllib2 authentication features.r   N)r5   r6   r7   r8   r9   r:   r   r   r   r=   r=   G   s    0r   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   rR   r:   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"   rX   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)rD   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writerM   r   ospathabspathrD   ra   rb   rc   rd   removeassertRaises
ValueErrorrE   urlopen)r"   rk   fre   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   rH   rD   rE   Requestrt   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/#fragry   )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   rG   r   rH   rD   rE   build_openerrz   rK   header_itemsrl   rN   
has_header
add_headerr{   
get_header)r"   rO   openerrE   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   rH   rD   rE   rt   rN   rs   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)rO   zread %d bytesz<timeout: %s>)filezDidn't get expected error(s) z for  z, got z: g?) timerX   rY   debugrD   rE   r   rl   r   ra   rb   subTest
isinstancetupler   rH   r   INTERNET_TIMEOUTtime_outsocket_peer_resetioerror_peer_resetr   lenTimeoutErrorprintsysstderrrM   OSErrortypeassertIsInstancesleep)r"   re   handlersrj   r   rX   r   rt   rO   r~   expected_errru   buferrmsgs                  r   rc   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   )rD   rE   CacheFTPHandlerrC   clear_cache
setTimeoutappend)r"   r   cfhs      r   rd   !OtherNetworkTests._extra_handlers  sF    nn,,.(qr   r   N)T)r5   r6   r7   r8   r]   r   requires_resourcerf   rv   r   r   r   unittestskipr   rc   rd   r:   r   r   r   rU   rU   ~   s    7 z*6 +6XZA z*A +AL ]]56! 7!(% Nr   rU   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   )rC   rD   rE   rF   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   rG   r   rH   rI   rC   rM   rJ   raw_sock
gettimeoutr"   rO   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   rG   r   rH   setdefaulttimeoutrI   rC   rM   r{   rJ   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   rG   r   rH   r   rI   rC   rM   rJ   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   rG   r   rH   rI   rC   rM   r{   rJ   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   rH   FTP_HOSTrI   rC   rM   rJ   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   rH   r   r   rI   rC   rM   r{   rJ   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   rH   r   r   rI   rC   rM   rJ   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   rH   r   rI   rC   rM   r{   rJ   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   r:   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   rn   r   urllib.errorrD   urllib.requestr   requiresr   r   rE   rt   ra   rb   rI   objectr   r   	ETIMEDOUTr   
ECONNRESETr   r   TestCaser=   r@   rU   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   