
    k*i<                     <   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKr " S S\5      r " S S\R*                  5      r " S S\5      r " S	 S
\R2                  \S9rS r\R8                  S 5       rS!S jr " S S5      r " S S\5      r  " S S\5      r!S r"\"" 5       r" " S S5      r# " S S\RH                  5      r% " S S\%5      r& " S S\%5      r'S r(S"S jr)\R8                  S  5       r*g)#z8Test utilities. Don't use outside of the uvloop project.    Nc                       \ rS rSrS rSrg)MockPattern   c                 r    [        [        R                  " [        U 5      U[        R                  5      5      $ N)boolresearchstrS)selfothers     P/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/uvloop/_testbase.py__eq__MockPattern.__eq__   s"    BIIc$i566     N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r      s    7r   r   c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )TestCaseDict   c                 .   > [         TU ]  5         Xl        g r   )super__init__name)r   r   	__class__s     r   r   TestCaseDict.__init__   s    	r   c                    > XR                   ;   a%  [        SR                  U R                  U5      5      e[        TU ]  X5        g )Nzduplicate test {}.{})dataRuntimeErrorformatr   r   __setitem__)r   keyvaluer    s      r   r&   TestCaseDict.__setitem__#   s>    ))5<<		3   ! !C'r   )r   )r   r   r   r   r   r&   r   __classcell__r    s   @r   r   r      s    ( (r   r   c                   8   ^  \ rS rSr\S 5       rU 4S jrSrU =r$ )BaseTestCaseMeta*   c                     [        U5      $ r   )r   )mclsr   basess      r   __prepare__BaseTestCaseMeta.__prepare__,   s    D!!r   c           	         > U HY  nUR                  S5      (       d  M  U H8  n[        XT5      (       d  M  [        SR                  XUR                  5      5      e   M[     [
        TU ]  XU[        U5      5      $ )Ntest_z6duplicate test {}.{} (also defined in {} parent class))
startswithhasattrr$   r%   r   r   __new__dict)r0   r   r1   dct	test_namebaser    s         r   r8   BaseTestCaseMeta.__new__0   st    I''004++&((. T]])<= =   wt5$s)<<r   r   )	r   r   r   r   classmethodr2   r8   r   r*   r+   s   @r   r-   r-   *   s    " "= =r   r-   c                       \ rS rSrS rS rS rS rS rSS.S	 jr	S
 r
S rS rS r\R                  SSSSS.S jr\R                  S4S jrS rS r\R*                  S 5       rS rSrg)BaseTestCase>   c                     [         er   NotImplementedErrorr   s    r   new_loopBaseTestCase.new_loop@       !!r   c                     [         er   rC   rE   s    r   
new_policyBaseTestCase.new_policyC   rH   r   c                     [        U5      $ r   )r   )r   r   s     r   mock_patternBaseTestCase.mock_patternF   s    3r   c                    #    [        U[        R                  5      (       d  g  UR                  5       I S h  vN   g  N! [        [
        4 a     g f = f7fr   )
isinstanceasyncioStreamWriterwait_closedBrokenPipeErrorConnectionError)r   objs     r   rS   BaseTestCase.wait_closedI   sF     #w3344	//###1 		s1   !A? =? A? AAAAc                 ^    [        U R                  5      R                  R                  S5      $ )Nzasyncio.)typeloopr   r6   rE   s    r   is_asyncio_loopBaseTestCase.is_asyncio_loopQ   s!    DII))44Z@@r   g{Gz?)delayc                b    U R                   R                  [        R                  " U5      5        g r   )rZ   run_until_completerQ   sleep)r   r]   s     r   run_loop_brieflyBaseTestCase.run_loop_brieflyT   s    		$$W]]5%9:r   c                 p    U R                   R                  U5        U R                  R                  U5        g r   )#_BaseTestCase__unhandled_exceptionsappendrZ   default_exception_handler)r   rZ   contexts      r   loop_exception_handler#BaseTestCase.loop_exception_handlerW   s(    ##**73		++G4r   c                    U R                  5       U l        [        R                  " U R	                  5       5        [        R
                  " U R                  5        SU l        U R                  R                  U R                  5        / U l	        g )NT)
rF   rZ   rQ   set_event_loop_policyrJ   set_event_loop"_check_unclosed_resources_in_debugset_exception_handlerrh   rd   rE   s    r   setUpBaseTestCase.setUp[   s^    MMO	%%doo&78tyy)26/		''(C(CD&(#r   c           	      
   U R                   R                  5         U R                  (       a=  [        S5        [        R                  " U R                  5        U R                  S5        g U R                  (       d  g [        R                  " 5         [        R                  " 5         [        R                  " 5         [        U R                   SS5      (       Ga  [        R                  " 5         [        R                  " 5         [        R                  " 5         U R                  U R                   R                  U R                   R                  S5        U R                  U R                   R                  SS5        U R                  U R                   R                  SS5        U R                  U R                   R                  SS	5        U R                   R                   R#                  5        H@  u  pU R%                  S
US9   U R                  USSR'                  U5      5        S S S 5        MB     U R                   R(                  R#                  5        HV  u  pU R%                  SUS9   U R                  X R                   R*                  U   SR'                  U5      5        S S S 5        MX     [,        R.                  " S 5        [,        R0                  " S 5        S U l         g ! , (       d  f       GM  = f! , (       d  f       M  = f)Nz2Unexpected calls to loop.call_exception_handler():z1unexpected calls to loop.call_exception_handler()	_debug_ccFz&not all uv_handle_t handles were freedr   z&not all callbacks (call_soon) are GCedz-not all timer callbacks (call_later) are GCedz&not all stream write contexts are GCedzAlive handle after test)handle_namezalive {} after testzTotal/closed handlesztotal != closed for {})rZ   closerd   printpprintfailrm   gccollectgetattrassertEqual_debug_uv_handles_total_debug_uv_handles_freed_debug_cb_handles_count_debug_cb_timer_handles_count_debug_stream_write_ctx_cnt_debug_handles_currentitemssubTestr%   _debug_handles_total_debug_handles_closedrQ   rl   rk   )r   h_nameh_cnts      r   tearDownBaseTestCase.tearDownd   s>   		&&FGMM$556IIIJ66 	







499k511JJLJJLJJL		11		118:
 		1118: 		77?A 		55q8: "&!A!A!G!G!I\\";.4 " 6$$q-44V<>6 6 "J "&!?!?!E!E!G\\"8.4 " 6$$yy>>vF077?A6 6 "H 	t$%%d+	6 66 6s   ?#K '9K3 
K0	3
L	c                     SU l         g NF)rm   rE   s    r   skip_unclosed_handles_check(BaseTestCase.skip_unclosed_handles_check   s
    27/r   N      
   )familyaddrtimeoutbacklogmax_clientsc                   UcA  U[         R                  :X  a+  [        R                  " 5        nUR                  nS S S 5        OSn[         R                   " U[         R
                  5      nUc  [        S5      eUS::  a  [        S5      eUR                  U5         UR                  U5        UR                  U5        [        XXU5      $ ! , (       d  f       N= f! [         a  n	UR                  5         U	eS n	A	ff = f)N)z	127.0.0.1r   timeout is requiredr   #only blocking sockets are supported)socketAF_UNIXtempfileNamedTemporaryFiler   SOCK_STREAMr$   
settimeoutbindlistenOSErrorrt   TestThreadedServer)
r   server_progr   r   r   r   r   tmpsockexs
             r   
tcp_serverBaseTestCase.tcp_server   s     <'002c88D 32 (}}VV%7%78?455a<DEE 	IIdOKK 
 "k; 	;) 32   	JJLH	s#   C
"C 

C
C<%C77C<c                     [         R                   " U[         R                  5      nUc  [        S5      eUS::  a  [        S5      eUR                  U5        [	        XX5      $ )Nr   r   r   )r   r   r$   r   TestThreadedClient)r   client_progr   r   r   s        r   
tcp_clientBaseTestCase.tcp_client   s\     }}VV%7%78?455a<DEE !. 	.r   c                 F    U R                   " US[        R                  0UD6$ Nr   )r   r   r   r   argskwargss      r   unix_serverBaseTestCase.unix_server       FV^^FvFFr   c                 F    U R                   " US[        R                  0UD6$ r   )r   r   r   r   s      r   unix_clientBaseTestCase.unix_client   r   r   c              #   Z  #    [         R                  " 5        n[        R                  R	                  US5      n Uv    [        R
                  " U5        S S S 5        g ! [         a     Nf = f!  [        R
                  " U5        f ! [         a     f f = f= f! , (       d  f       g = f7f)Nr   )r   TemporaryDirectoryospathjoinunlinkr   )r   tdfns      r   unix_sock_nameBaseTestCase.unix_sock_name   s     ((*bb&)BIIbM +*  IIbM  +*sn   B+!BA.A	B+
A+(B*A++B.B0BB
B	BB	BB
B($B+c                      U R                   R                  5         U R                  U5        g ! U R                  U5        f = fr   )rZ   stoprw   r   r   s     r   _abort_socket_testBaseTestCase._abort_socket_test   s,    	IINNIIbMDIIbMs	   . A)__unhandled_exceptionsrm   rZ   )r   r   r   r   rF   rJ   rM   rS   r[   ra   rh   ro   r   r   r   AF_INETr   r   r   r   
contextlibcontextmanagerr   r   r   r   r   r   r@   r@   >   s    "" A )- ;5)7r8 !..!;B !...GG 	 	r   r@   )	metaclassc                    [         R                  R                  [         R                  R                  [         R                  R	                  U 5      SU5      5      n[         R                  R                  U5      (       d   eU$ )Ncerts)r   r   abspathr   dirnameisfile)test_file_namecert_file_namefullnames      r   _cert_fullnamer      sW    wwrww||
'. B CH77>>(####Or   c               #      #     " S S[         R                  5      n [         R                  " S5      nU " 5       nUR                  U5         S v   UR	                  U5        g ! UR	                  U5        f = f7f)Nc                       \ rS rSrS rSrg))silence_long_exec_warning.<locals>.Filter   c                     UR                   R                  S5      =(       a    UR                   R                  S5      (       + $ )N	Executingseconds)msgr6   endswith)r   records     r   filter0silence_long_exec_warning.<locals>.Filter.filter   s5    

--k: 7

++I68 8r   r   N)r   r   r   r   r   r   r   r   r   Filterr      s    	8r   r   rQ   )loggingr   	getLogger	addFilterremoveFilter)r   loggerr   s      r   silence_long_exec_warningr      s`     8 8
 y)FXF
V$F#F#s   AA7A! A7!A44A7c                    [        X S-   5       H:  n[        R                  " 5       nU    UR                  SU45        UsS S S 5        s  $    [	        S5      e! [        R                   a     S S S 5        Mh  f = f! , (       d  f       M{  = f)Ni   zcould not find a free port)ranger   r   errorr$   )
start_fromportr   s      r   find_free_portr      sz    js"23}}		2t*%  T 4 3
44	 << 	 T Ts-   A;AA;A8,A;7A88A;;
B
	c                   P    \ rS rSrS	S jrSS.S jr\R                  S 5       rSr	g)
SSLTestCasei  Nc                    [        [        S5      (       a%  [        R                  " [        R                  5      nO^[        [        S5      (       a%  [        R                  " [        R                  5      nO$[        R                  " [        R
                  5      nU=R                  [        R                  -  sl        UR                  X5        U$ )NPROTOCOL_TLS_SERVERPROTOCOL_TLS)	r7   ssl
SSLContextr   r   PROTOCOL_SSLv23optionsOP_NO_SSLv2load_cert_chain)r   certfilekeyfile
sslcontexts       r   _create_server_ssl_context&SSLTestCase._create_server_ssl_context  s    3-..(?(?@JS.))(8(89J(;(;<Jcoo-""85r   T)disable_verifyc                v    [         R                  " 5       nSUl        U(       a  [         R                  Ul        U$ r   )r   create_default_contextcheck_hostname	CERT_NONEverify_mode)r   r   r   s      r   _create_client_ssl_context&SSLTestCase._create_client_ssl_context  s-    //1
$)
!%(]]J"r   c              #      #    [         R                  " S5      n[         R                  " S5      nUR                  U5         S v   UR	                  U5        g ! UR	                  U5        f = f7f)NrQ   zhas no effect when using ssl)r   r   r   r   r   )r   r   r   s      r   _silence_eof_received_warning)SSLTestCase._silence_eof_received_warning!  sX      ""9- >? 	('F's   >A-A A-A**A-r   r   )
r   r   r   r   r   r  r   r   r	  r   r   r   r   r   r     s,    	 <@  ( (r   r   c                   $    \ rS rSrSrS rS rSrg)
UVTestCasei-  uvloopc                 ,    [         R                  " 5       $ r   )r  new_event_looprE   s    r   rF   UVTestCase.new_loop1  s    $$&&r   c                 ,    [         R                  " 5       $ r   )r  EventLoopPolicyrE   s    r   rJ   UVTestCase.new_policy4  s    %%''r   r   N)r   r   r   r   implementationrF   rJ   r   r   r   r   r  r  -  s    N'(r   r  c                   D   ^  \ rS rSrSrU 4S jrU 4S jrS rS rSr	U =r
$ )AIOTestCasei8  rQ   c                    > [         TU ]  5         [        R                  S:  aG  [        R
                  " 5       nUR                  U R                  5        [        R                  " U5        g g N)      )	r   ro   sysversion_inforQ   SafeChildWatcherattach_looprZ   set_child_watcher)r   watcherr    s     r   ro   AIOTestCase.setUp<  sM    g%..0G		*%%g. &r   c                 v   > [         R                  S:  a  [        R                  " S 5        [        TU ]  5         g r  )r  r  rQ   r  r   r   r   r    s    r   r   AIOTestCase.tearDownD  s*    g%%%d+r   c                 ,    [         R                  " 5       $ r   )rQ   r  rE   s    r   rF   AIOTestCase.new_loopI  s    %%''r   c                 ,    [         R                  " 5       $ r   )rQ   DefaultEventLoopPolicyrE   s    r   rJ   AIOTestCase.new_policyL  s    --//r   r   )r   r   r   r   r  ro   r   rF   rJ   r   r*   r+   s   @r   r  r  8  s!    N/
(0 0r   r  c                      [         R                   " [         R                  5      n U     U R                  S5         S S S 5        g! [         a     S S S 5        gf = f! , (       d  f       g = f)N)z::1r   TF)r   AF_INET6r   r   )server_socks    r   has_IPv6r-  P  sY    --0K		Z(  
  		 
	 
s-   AAA
AAAA
A*c                   >    \ rS rSrS rS rSSSS.S jrS	 rS
 rSr	g)TestSocketWrapperic  c                     Xl         g r   )_TestSocketWrapper__sockr   r   s     r   r   TestSocketWrapper.__init__e  s    r   c                     Sn[        U5      U:  a>  U R                  U[        U5      -
  5      nUS:X  a  [        eX#-  n[        U5      U:  a  M>  U$ )Nr   )lenrecvConnectionAbortedError)r   nbufr#   s       r   recv_allTestSocketWrapper.recv_allh  sP    #hl99QS\*Ds{,,KC	 #hl
 
r   FNTserver_sideserver_hostnamedo_handshake_on_connectc                    [        U[        R                  5      (       d   eUR                  U R                  UUUS9nU(       a  UR                  5         U R                  R                  5         XPl        g )Nr<  )rP   r   r   wrap_socketr1  do_handshakert   )r   ssl_contextr=  r>  r?  ssl_socks         r   starttlsTestSocketWrapper.starttlsq  se    
 +s~~6666**KK[+$; + =
 !!#r   c                 .    [        U R                  U5      $ r   )rz   r1  )r   r   s     r   __getattr__TestSocketWrapper.__getattr__  s    t{{D))r   c                 `    SR                  [        U 5      R                  U R                  5      $ )Nz	<{} {!r}>)r%   rY   r   r1  rE   s    r   __repr__TestSocketWrapper.__repr__  s#    !!$t*"5"5t{{CCr   )__sock)
r   r   r   r   r   r:  rE  rH  rK  r   r   r   r   r/  r/  c  s'     #!%)-$*Dr   r/  c                   &    \ rS rSrS rS rS rSrg)SocketThreadi  c                 2    SU l         U R                  5         g r   )_activer   rE   s    r   r   SocketThread.stop  s    		r   c                 &    U R                  5         U $ r   )startrE   s    r   	__enter__SocketThread.__enter__  s    

r   c                 $    U R                  5         g r   )r   )r   excs     r   __exit__SocketThread.__exit__  s    		r   )rQ  N)r   r   r   r   r   rU  rY  r   r   r   r   rO  rO    s    r   rO  c                        \ rS rSrS rS rSrg)r   i  c                     [         R                  R                  U S S S5        SU l        X@l        X l        SU l        X0l        Xl        g )Nztest-clientT)		threadingThreadr   daemon_timeout_sockrQ  _prog_test)r   testr   progr   s        r   r   TestThreadedClient.__init__  s>    !!$dMB


r   c                      U R                  [        U R                  5      5        g ! [        [        4 a    e [
         a%  nU R                  R                  U5         S nAg S nAff = fr   )rb  r/  ra  KeyboardInterrupt
SystemExitBaseExceptionrc  r   r   s     r   runTestThreadedClient.run  sR    	.JJ(45!:. 	 	.JJ))"--	.s   $' A&A!!A&)rQ  rb  ra  rc  r`  r_  N)r   r   r   r   r   rk  r   r   r   r   r   r     s    .r   r   c                   P   ^  \ rS rSrS rU 4S jrS rS rS r\	S 5       r
SrU =r$ )	r   i  c                 6   [         R                  R                  U S S S5        SU l        SU l        SU l        XPl        X@l        X l        SU l	        X0l
        [        R                  " 5       u  U l        U l        U R                  R                  S5        Xl        g )Nztest-serverTr   F)r]  r^  r   r_  _clients_finished_clients_max_clientsr`  ra  rQ  rb  r   
socketpair_s1_s2setblockingrc  )r   rd  r   re  r   r   s         r   r   TestThreadedServer.__init__  s|    !!$dMB!"'

#..0$(U#
r   c                    >  U R                   (       a:  U R                   R                  5       S:w  a   U R                   R                  S5        [        TU ]  5         g ! [         a     Nf = f! [        TU ]  5         f = f)Ns   stop)rt  filenosendr   r   r   r#  s    r   r   TestThreadedServer.stop  sa    	xxDHHOO-3HHMM'* GLN   GLNs(   /A- A 
A*'A- )A**A- -A=c                     U R                      U R                   R                  S5        U R                  5         S S S 5        U R                  R	                  5         U R
                  R	                  5         g ! , (       d  f       NC= f! U R                  R	                  5         U R
                  R	                  5         f = f)Nr   )ra  ru  _runrs  rt   rt  rE   s    r   rk  TestThreadedServer.run  ss    	

&&q)		  HHNNHHNN  HHNNHHNNs!   B ,A7B 7
BB 6B>c                 <   U R                   (       a  U R                  U R                  :  a  g [        R                  " U R                  U R
                  // / U R                  5      u  pnU R
                  U;   a  g U R                  U;   aj   U R                  R                  5       u  pEU =R                  S-  sl        UR                  U R                  5         U   U R                  U5        S S S 5        U R                   (       a  M  g g ! , (       d  f       N#= f! [        [        4 a    e [         a.  nSU l          e ! U R                  R                  U5        f = fS nAff = f! [         a     GMr  [         R"                   a    U R                   (       d   g e f = f)Nr   F)rQ  ro  rq  selectra  rs  r`  acceptr   _handle_clientrh  ri  rj  rc  r   BlockingIOErrorr   r   )r   rwxconnr   r   s          r   r}  TestThreadedServer._run  s9   ll}} 1 11mmTXX&B?GA! xx1}zzQ>!%!2!2!4JD MMQ&MOODMM2
>! //5 "1 lll0 "T-z: ( >',>! JJ99"=> ' ~~ <<	s`   E% D D	,D 	
DD D E"4E<D==EEE"%
F3$FFc                 8    U R                  [        U5      5        g r   )rb  r/  r2  s     r   r  !TestThreadedServer._handle_client  s    

$T*+r   c                 6    U R                   R                  5       $ r   )ra  getsocknamerE   s    r   r   TestThreadedServer.addr  s    zz%%''r   )rQ  ro  rp  rq  rb  rs  rt  ra  rc  r`  r_  )r   r   r   r   r   r   rk  r}  r  propertyr   r   r*   r+   s   @r   r   r     s1    $">H, ( (r   r   c                     S nU" 5       nU R                  U5      nSUl         U R                  U5        UR                  5         g ! UR                  5         f = f)Nc                     #    g 7fr   r   r   r   r   oncerun_briefly.<locals>.once  s     s   F)create_task_log_destroy_pendingr_   rt   )rZ   r  gents       r   run_brieflyr    sN    
&CA #A"				s   A Ac                 D   [         R                   " 5       U-   nU" 5       (       d|  Ub<  U[         R                   " 5       -
  nUS::  a  [        R                  R                  5       eU R	                  [        R
                  R                  S5      5        U" 5       (       d  M{  g g )Nr   gMbP?)timerQ   futuresTimeoutErrorr_   tasksr`   )rZ   predr   deadlines       r   	run_untilr    so    yy{W$Hff,G!|oo2244 3 3E :; ffr   c               #     #    [         R                  R                  R                  n  [         R                  R                  R	                  [
        R                  S-   5        Sv   [         R                  R                  R	                  U 5        g! [         R                  R                  R	                  U 5        f = f7f)zjContext manager to disable asyncio logger.

For example, it can be used to ignore warnings in debug mode.
r   N)rQ   logr   levelsetLevelr   CRITICAL)	old_levels    r   disable_loggerr    sw      ""((I/##G$4$4q$89##I.##I.s   %B>>B &*B>+B;;B>)iP  )   )+__doc__rQ   asyncio.eventscollectionsr   rx   r   r   rv   r	   r  r   r   r  r   r]  r  unittestr  r   r   UserDictr   rY   r-   TestCaser@   r   r   r   r   r   r  r  r-  r/  r^  rO  r   r   r  r  r  r   r   r   <module>r     s5   >     	  	  	   
 
     7# 7

(;'' 
(=t =(g8$$0@ gT $ $ 
5( (@( (0, 00 :$D $DN9## . .*P( P(p< 
/ 
/r   