
    2hhJ                        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Jr  S SKJr  S SKJrJ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Jr  S SKJ r   S SKJ!r!  Sr"S r#\#" SS5      r$\#" SS5      r%\#" SS5      r&\#" SS5      r'SSSSSSSSSSS.
r(S r)S S!.S" jr*S# r+S$ r,\RZ                  4S% jr.S& r/ " S' S(\5      r0 " S) S*\5      r1 " S+ S,5      r2 " S- S.\2\15      r3S/S0.S1 jr4\5" \S25      (       ad   " S3 S4\	Rl                  \5      r7 " S5 S6\7\5      r8 " S7 S8\85      r9 " S9 S:\2\95      r:S; r;\Rx                  S< 5       r=\Rx                  S/S0.S= j5       r>\Rx                  S>S S/S?.S@ j5       r?SA r@\Rx                  S>S SB.SC j5       rASD rB " SE SF\R                  5      rD " SG SH\R                  5      rFSI rG " SJ SK\H5      rI " SL SM5      rJSN rK " SO SP\R                  5      rL\Rx                  SQ 5       rM\R                  \R                  \R                  4SR jrQSS rRg! \ a    Sr GNf = f)T    N)mock)
HTTPServer)WSGIRequestHandler
WSGIServer)base_events)events)format_helpers)tasks)logger)support)socket_helper)threading_helper皙?c                     [         R                  R                  " [        R                  /U Q76 n[         R                  R                  U5      (       a  U$ [         R                  R                  " [         R                  R                  [        5      S/U Q76 n[         R                  R                  U5      (       a  U$ [        [         R                  R                  U 5      5      e)Nz..)	ospathjoinr   TEST_HOME_DIRisfiledirname__file__FileNotFoundError)filenamefullnames     @/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/utils.py	data_filer   ,   s    ww||G11=H=H	ww~~hww||BGGOOH5tGhGH	ww~~h
BGGLL2
33    certdatazssl_cert.pemzssl_key.pemzkeycert3.pemzpycacert.pem)z)http://testca.pythontest.net/testca/ocsp/)z0http://testca.pythontest.net/testca/pycacert.cer)z2http://testca.pythontest.net/testca/revocation.crl))countryNameXY))organizationNamezPython Software Foundation CA))
commonNamezour-ca-serverzOct 28 14:23:16 2037 GMTzAug 29 14:23:16 2018 GMTCB2D80995A69525C)r   ))localityNamezCastle Anthrax))r"   zPython Software Foundation))r#   	localhost))DNSr&      )
OCSP	caIssuerscrlDistributionPointsissuernotAfter	notBeforeserialNumbersubjectsubjectAltNameversionc                      [         R                  " [         R                  5      n U R                  [        [
        5        SU l        [         R                  U l        U $ NF)	ssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chainONLYCERTONLYKEYcheck_hostname	CERT_NONEverify_mode)server_contexts    r   simple_server_sslcontextr?   M   s@    ^^C$;$;<N""8W5$)N!!$Nr   Tdisable_verifyc                     [         R                  " [         R                  5      nSUl        U (       a  [         R                  Ul        U$ r4   )r5   r6   PROTOCOL_TLS_CLIENTr;   r<   r=   )rA   client_contexts     r   simple_client_sslcontextrE   U   s3    ^^C$;$;<N$)N!%(]]"r   c                  $    [         c  g [        SS9$ )NTr@   )r5   rE    r   r   dummy_ssl_contextrH   ]   s    
{'t<<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NrG   rG   r   r   oncerun_briefly.<locals>.oncee   s     s   F)create_task_log_destroy_pendingrun_until_completeclose)looprL   gents       r   run_brieflyrU   d   sN    
&CA #A"				s   A Ac                     Sn[         R                  " USS9 HE  nU" 5       (       a    g U R                  [        R                  " U5      5        [        US-  S5      nMG     [        5       e)NgMbP?F)error   g      ?)r   
busy_retryrP   r
   sleepmaxTimeoutError)rR   predtimeoutdelay_s        r   	run_untilra   r   sY    Eu566E 23EAIs#	 6 nr   c                 Z    U R                  U R                  5        U R                  5         g rK   )	call_soonstoprun_forever)rR   s    r   run_oncerf   }   s      	NN499r   c                        \ rS rSrS rS rSrg)SilentWSGIRequestHandler   c                 ,    [         R                  " 5       $ rK   )ioStringIOselfs    r   
get_stderr#SilentWSGIRequestHandler.get_stderr   s    {{}r   c                     g rK   rG   )rn   formatargss      r   log_message$SilentWSGIRequestHandler.log_message       r   rG   N)__name__
__module____qualname____firstlineno__ro   rt   __static_attributes__rG   r   r   rh   rh      s    r   rh   c                   F   ^  \ rS rSr\R
                  rU 4S jrS rSr	U =r
$ )SilentWSGIServer   c                 `   > [         TU ]  5       u  pUR                  U R                  5        X4$ rK   superget_request
settimeoutrequest_timeoutrn   requestclient_addr	__class__s      r   r   SilentWSGIServer.get_request   s0    $w244//0##r   c                     g rK   rG   rn   r   client_addresss      r   handle_errorSilentWSGIServer.handle_error   rv   r   rG   )rw   rx   ry   rz   r   LOOPBACK_TIMEOUTr   r   r   r{   __classcell__r   s   @r   r}   r}      s    ..O$
 r   r}   c                       \ rS rSrS rSrg)SSLWSGIServerMixin   c                    [         R                  " [         R                  5      nUR                  [        [
        5        UR                  USS9n U R                  XBU 5        UR                  5         g ! [         a     g f = f)NT)server_side)
r5   r6   r7   r8   r9   r:   wrap_socketRequestHandlerClassrQ   OSError)rn   r   r   contextssocks        r   finish_request!SSLWSGIServerMixin.finish_request   sm    
 ..!8!89'2##G#>	$$UDAKKM 		s   "A3 3
B ?B rG   N)rw   rx   ry   rz   r   r{   rG   r   r   r   r      s    r   r   c                       \ rS rSrSrg)SSLWSGIServer   rG   Nrw   rx   ry   rz   r{   rG   r   r   r   r      s    r   r   F)use_sslc              #     ^^#    S mU4S jnU(       a  UOUnU" U [         5      mTR                  U5        TR                  Tl        [        R
                  " U4S jS9nUR                  5          Tv   TR                  5         TR                  5         UR                  5         g ! TR                  5         TR                  5         UR                  5         f = f7f)Nc              3      #    [        U S   5      nU(       a:  U S   R                  [        US5      5      nUv   U[        U5      -  nU(       a  M9  g g 7f)NCONTENT_LENGTHz
wsgi.inputi   )intreadminlen)environsizedatas      r   rR   _run_test_server.<locals>.loop   sN     7+,-<(--c$.@ADJCID ds   AAAc                 F   > SnS/nU" X#5        U S   S:X  a  T" U 5      $ S/$ )Nz200 OK)zContent-typez
text/plain	PATH_INFOz/loops   Test messagerG   )r   start_responsestatusheadersrR   s       r   app_run_test_server.<locals>.app   s8    12v';7*= #$$r   c                  "   > T R                  SS9$ )Nr   )poll_interval)serve_forever)httpds   r   <lambda>"_run_test_server.<locals>.<lambda>   s    u***>r   target)
rh   set_appserver_addressaddress	threadingThreadstartshutdownserver_closer   )	r   r   
server_clsserver_ssl_clsr   server_classserver_threadr   rR   s	          @@r   _run_test_serverr      s     % &->*L":;E	MM#((EM$$>@M 	s   A,C1B& 51C&2CCAF_UNIXc                       \ rS rSrS rSrg)UnixHTTPServer   c                 ^    [         R                  R                  U 5        SU l        SU l        g )N	127.0.0.1P   )socketserverUnixStreamServerserver_bindserver_nameserver_portrm   s    r   r   UnixHTTPServer.server_bind   s&    ))55d;*D!Dr   )r   r   N)rw   rx   ry   rz   r   r{   rG   r   r   r   r      s    	"r   r   c                   F   ^  \ rS rSr\R
                  rS rU 4S jrSr	U =r
$ )UnixWSGIServer   c                 N    [         R                  U 5        U R                  5         g rK   )r   r   setup_environrm   s    r   r   UnixWSGIServer.server_bind   s    &&t, r   c                 b   > [         TU ]  5       u  pUR                  U R                  5        US4$ )N)r    r   r   s      r   r   UnixWSGIServer.get_request   s5    #(7#6#8 Gt334 ---r   rG   )rw   rx   ry   rz   r   r   r   r   r   r{   r   r   s   @r   r   r      s    !22	!		. 		.r   r   c                       \ rS rSrS rSrg)SilentUnixWSGIServer   c                     g rK   rG   r   s      r   r   !SilentUnixWSGIServer.handle_error   s    r   rG   N)rw   rx   ry   rz   r   r{   rG   r   r   r   r      s    	r   r   c                       \ rS rSrSrg)UnixSSLWSGIServer   rG   Nr   rG   r   r   r   r      s    r   r   c                  ,    [         R                  " 5       $ rK   )r   create_unix_domain_namerG   r   r   gen_unix_socket_pathr      s    4466r   c               #      #    [        5       n  U v    [        R                  " U 5        g ! [         a     g f = f!  [        R                  " U 5        f ! [         a     f f = f= f7frK   )r   r   unlinkr   )r   s    r   unix_socket_pathr     sZ     #%	J		$ 		$ sR   A&: * A&
7A&7A&A#AA#
A A#A  A##A&c              #      #    [        5        n[        X[        [        S9 S h  vN   S S S 5        g  N! , (       d  f       g = f7fN)r   r   r   r   )r   r   r   r   )r   r   s     r   run_test_unix_serverr     s@     4'3G7HJ J J  J  s$   A424	A4
AAr   hostportr   c              #   J   #    [        X4U[        [        S9 S h  vN   g  N7fr   )r   r}   r   r   s      r   run_test_serverr     s#     g+;/<> > >s   #!#c                 ~     U R                  S5      u  pUS:X  a  U R                  5         g U R                  X5        M=  )Ni      STOP)recvfromrQ   sendto)sockr   addrs      r   echo_datagramsr     s9    
]]4(
7?JJLKK# r   )r   r   c              #   `  ^#    [         R                  " X[         R                  S9nUS   u  p4pVn[         R                   " X4U5      mTR                  X45        TR	                  5       n[
        R                  " U4S jS9n	U	R                  5          Uv   [         R                   " X4U5      n
U
R                  SU5        U
R                  5         U	R                  5         g ! [         R                   " X4U5      n
U
R                  SU5        U
R                  5         U	R                  5         f = f7f)N)typer   c                     > [        T 5      $ rK   )r   )r   s   r   r   %run_udp_echo_server.<locals>.<lambda>0  s
    ^D-Ar   r   r   )socketgetaddrinfo
SOCK_DGRAMbindgetsocknamer   r   r   r   rQ   r   )r   r   	addr_infofamilyr   protor`   sockaddrsocknamethreadsock2r   s              @r   run_udp_echo_serverr  )  s     ""4F4E4EFI'0|$F%H==u-DIItl!H%ABF
LLN fE2Wh' fE2Wh's    BD.C  A
D. AD++D.c                     0 n[        U 5       H<  nUR                  S5      (       a  UR                  S5      (       a  M1  [        S S9X'   M>     [	        SU 4U R
                  -   U5      " 5       $ )N__)return_valueTestProtocol)dir
startswithendswithMockCallbackr   	__bases__)basedctnames      r   make_test_protocolr  =  s`    
CD	??4  T]]4%8%8 d3		 
 $.. 8#>@@r   c                   6    \ rS rSrS rS	S jrS rS rS rSr	g)
TestSelectoriG  c                     0 U l         g rK   keysrm   s    r   __init__TestSelector.__init__I  s	    	r   Nc                 R    [         R                  " USX#5      nX@R                  U'   U$ )Nr   )	selectorsSelectorKeyr  )rn   fileobjr   r   keys        r   registerTestSelector.registerL  s'    ##GQ= 		'
r   c                 8    U R                   R                  U5      $ rK   )r  pop)rn   r%  s     r   
unregisterTestSelector.unregisterQ  s    yy}}W%%r   c                     / $ rK   rG   )rn   r^   s     r   selectTestSelector.selectT  s    	r   c                     U R                   $ rK   r  rm   s    r   get_mapTestSelector.get_mapW  s    yyr   r  rK   )
rw   rx   ry   rz   r   r'  r+  r.  r1  r{   rG   r   r   r  r  G  s    
&r   r  c                      ^  \ rS rSrSU 4S jjrS rS rU 4S jrS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rU 4S jrSS.U 4S jjrS rS rSrU =r$ )TestLoopi[  Nc                 F  > [         TU ]  5         Uc  S nSU l        OSU l        U" 5       U l        [	        U R                  5        SU l        SU l        / U l        [        5       U l	        0 U l
        0 U l        U R                  5         [        R                  " 5       U l        g )Nc               3      #    S v   g 7frK   rG   rG   r   r   rS   TestLoop.__init__.<locals>.genr  s     s   FTr   g&.>)r   r   _check_on_close_gennext_time_clock_resolution_timersr  	_selectorreaderswritersreset_countersweakrefWeakValueDictionary_transports)rn   rS   r   s     r   r   TestLoop.__init__n  s    ;#(D #'D E	TYY
!%%"668r   c                     U R                   $ rK   r;  rm   s    r   timeTestLoop.time  s    zzr   c                 >    U(       a  U =R                   U-  sl         g g rK   rG  )rn   advances     r   advance_timeTestLoop.advance_time  s    JJ'!J r   c                    > [         TU ]  5         U R                  (       a'   U R                  R	                  S5        [        S5      eg ! [         a     g f = f)Nr   zTime generator is not finished)r   rQ   r8  r9  sendAssertionErrorStopIteration)rn   r   s    r   rQ   TestLoop.close  sR    G		q! %%EFF   ! s   A	 	
AAc                 N    [         R                  " X#U S 5      U R                  U'   g rK   )r   Handler?  rn   fdcallbackrs   s       r   _add_readerTestLoop._add_reader      !==tDRr   c                 l    U R                   U==   S-  ss'   XR                  ;   a  U R                  U	 ggN   TF)remove_reader_countr?  rn   rV  s     r   _remove_readerTestLoop._remove_reader  4      $)$R r   c                 
   XR                   ;  a  [        SU S35      eU R                   U   nUR                  U:w  a  [        SUR                   SU 35      eUR                  U:w  a  [        SUR                   SU 35      eg )Nfd  is not registeredzunexpected callback:  != zunexpected callback args: )r?  rP  	_callback_argsrn   rV  rW  rs   handles        r   assert_readerTestLoop.assert_reader  s    \\! 3rd*<!=>>b!x' '(8(8'9hZHJ J<<4 ,V\\N$tfEG G  r   c                 @    XR                   ;   a  [        SU S35      eg )Nrd  z is registered)r?  rP  r_  s     r   assert_no_readerTestLoop.assert_no_reader  s%     3rd.!9:: r   c                 N    [         R                  " X#U S 5      U R                  U'   g rK   )r   rT  r@  rU  s       r   _add_writerTestLoop._add_writer  rZ  r   c                 l    U R                   U==   S-  ss'   XR                  ;   a  U R                  U	 ggr\  )remove_writer_countr@  r_  s     r   _remove_writerTestLoop._remove_writer  rb  r   c                    XR                   ;  a  [        SU S35      eU R                   U   nUR                  U:w  a  [        UR                  < SU< 35      eUR                  U:w  a  [        UR                  < SU< 35      eg )Nrd  re  rf  )r@  rP  rg  rh  ri  s        r   assert_writerTestLoop.assert_writer  s    \\! 3rd*<!=>>b!x' F$4$4#7tH<!HII<<4 FLL#34x!@AA  r   c                 <   [        U[        5      (       d   [        UR                  5       5      n U R                  U   n[        SR                  X5      5      e! [        [        [
        4 a    [        SR                  U5      5      S ef = f! [         a     g f = f)NzInvalid file object: {!r}z.File descriptor {!r} is used by transport {!r})

isinstancer   filenoAttributeError	TypeError
ValueErrorrr   rD  RuntimeErrorKeyError)rn   rV  	transports      r   _ensure_fd_no_transport TestLoop._ensure_fd_no_transport  s    "c"">%
	$((,I @GG#$ $ #Iz: >  "((.r
49=>>  		s   A B 1B
BBc                 J    U R                  U5        U R                  " X/UQ76 $ rK   )r  rX  rU  s       r   
add_readerTestLoop.add_reader  &    $$R(4t44r   c                 F    U R                  U5        U R                  U5      $ rK   )r  r`  r_  s     r   remove_readerTestLoop.remove_reader  !    $$R(""2&&r   c                 J    U R                  U5        U R                  " X/UQ76 $ rK   )r  rq  rU  s       r   
add_writerTestLoop.add_writer  r  r   c                 F    U R                  U5        U R                  U5      $ rK   )r  ru  r_  s     r   remove_writerTestLoop.remove_writer  r  r   c                     [         R                  " [        5      U l        [         R                  " [        5      U l        g rK   )collectionsdefaultdictr   r^  rt  rm   s    r   rA  TestLoop.reset_counters  s(    #.#:#:3#? #.#:#:3#? r   c                    > [         TU ]  5         U R                   H/  nU R                  R	                  U5      nU R                  U5        M1     / U l        g rK   )r   	_run_oncer=  r9  rO  rL  )rn   whenrK  r   s      r   r  TestLoop._run_once  sE    LLDiinnT*Gg& ! r   )r   c                b   > U R                   R                  U5        [        TU ]  " X/UQ7SU06$ )Nr   )r=  appendr   call_at)rn   r  rW  r   rs   r   s        r   r  TestLoop.call_at  s.    D!wtFFgFFr   c                     g rK   rG   )rn   
event_lists     r   _process_eventsTestLoop._process_events  s    r   c                     g rK   rG   rm   s    r   _write_to_selfTestLoop._write_to_self  rv   r   )r8  r<  r9  r>  r;  r=  rD  r?  r^  rt  r@  rK   )rw   rx   ry   rz   r   rH  rL  rQ   rX  r`  rk  rn  rq  ru  rx  r  r  r  r  r  rA  r  r  r  r  r{   r   r   s   @r   r4  r4  [  s    &9."
GE	G;EB$"5
'
5
'
@ 6: G G r   r4  c                  4    [         R                  " SSS/0U D6$ )Nspec__call__rG   )r   Mock)kwargss    r   r  r     s    991:,1&11r   c                       \ rS rSrS rSrg)MockPatterni  c                 r    [        [        R                  " [        U 5      U[        R                  5      5      $ rK   )boolresearchstrSrn   others     r   __eq__MockPattern.__eq__  s"    BIIc$i566r   rG   N)rw   rx   ry   rz   r  r{   rG   r   r   r  r    s    7r   r  c                        \ rS rSrS rS rSrg)MockInstanceOfi  c                     Xl         g rK   _type)rn   r   s     r   r   MockInstanceOf.__init__  s    
r   c                 ,    [        XR                  5      $ rK   )r{  r  r  s     r   r  MockInstanceOf.__eq__  s    %,,r   r  N)rw   rx   ry   rz   r   r  r{   rG   r   r   r  r    s    -r   r  c                 V    [         R                  " U 5      nUc  [        SU < 35      eU$ )Nzunable to get the source of )r	   _get_function_sourcer  )funcsources     r   get_function_sourcer    s*    006F~TCDDMr   c                   H    \ rS rSr\S 5       rSS.S jrSS jrS rS	 r	S
r
g)TestCasei   c                    U R                   bN  U R                  5       (       d   U R                  U R                  5       5        OU R                   R	                  SS9  U R                  5         [        R                  " 5       nUb   [        R                  " 5          [        R                  " S[        5        UR                  5       nS S S 5        [        W[        R                  5      (       al  [!        UR"                  R%                  5       5       HD  nUR'                  [        R(                  S9  UR+                  5       (       d  M7  [-        SU S35      e   g g g ! , (       d  f       N= f! [.         a     g f = f)NT)waitignore)r^   zthread z& still alive: subprocess still running)_default_executor	is_closedrP   shutdown_default_executorr   rQ   r   maybe_get_event_loop_policywarningscatch_warningssimplefilterDeprecationWarningget_child_watcherr{  asyncioThreadedChildWatcherlist_threadsvaluesr   SHORT_TIMEOUTis_aliver  NotImplementedError)rR   policywatcherr  s       r   
close_loopTestCase.close_loop!  s8   !!->>##''(F(F(HI&&//T/:

446K,,.))(4FG$668G / gw'C'CDD"&w'7'7'>'>'@"AG,A,AB!??,,". AJ 0J #K K #B E .. ' s*   E, ,EE, 
E)%E, ,
E98E9T)cleanupc                    Uc  [        S5      e[        R                  " S 5        U(       a  U R                  U R                  U5        g g )Nzloop is None)rP  r   set_event_loop
addCleanupr  )rn   rR   r  s      r   r  TestCase.set_event_loop=  s:    < 00d#OODOOT2 r   Nc                 >    [        U5      nU R                  U5        U$ rK   )r4  r  )rn   rS   rR   s      r   new_test_loopTestCase.new_test_loopE  s    }D!r   c                 8    [         R                  " 5       U l        g rK   )r   threading_setup_thread_cleanuprm   s    r   setUpTestCase.setUpJ  s    /??Ar   c                     [         R                  " S 5        U R                  [        R                  " 5       5        U R                  5         [        R                  " U R                  6   [        R                  " 5         g rK   )r   r  assertIsNonesys	exception
doCleanupsr   threading_cleanupr  r   reap_childrenrm   s    r   tearDownTestCase.tearDownM  sP    d# 	#--/***D,@,@Ar   )r  rK   )rw   rx   ry   rz   staticmethodr  r  r  r  r  r{   rG   r   r   r  r     s0    K K6 /3 3
B	 r   r  c               #      #    [         R                  n  [         R                  " [        R                  S-   5        S v   [         R                  " U 5        g ! [         R                  " U 5        f = f7f)Nr]  )r   levelsetLevelloggingCRITICAL)	old_levels    r   disable_loggerr  Y  sG      I#((*+	"	"s   A1+A A1A..A1c                     [         R                  " [        R                  5      nXl        Xl        X#l        SUR                  l        U$ )Ng        )r   	MagicMockr  r  r   r  
gettimeoutr  )r  r   r  r   s       r   mock_nonblocking_socketr  g  s6     >>&--(DJIK#&DOO Kr   c                    ^ ^#    S mU U4S jn[         R                  " 5       R                  U5        [         R                  " S5      I S h  vN   Tb  Teg  N
7f)Nc                  h   >  TR                  5        H  n M     g ! [         a  nUm S nAg S nAff = frK   )	__await__BaseException)r`   errcoroexcs     r   r   await_without_task.<locals>.funct  s1    	^^% & 	C	s    
1,1r   )r  get_running_looprc   rZ   )r  r  r  s   ` @r   await_without_taskr	  r  sO     
C ((.
--

	  s   AAAA)Sr  r  
contextlibrk   r  r   r  r#  r  r   r  r   unittestrB  r  r   http.serverr   wsgiref.simple_serverr   r   r5   ImportErrorr   r   r	   r
   asyncio.logr   testr   test.supportr   r   	CLOCK_RESr   r9   r:   SIGNED_CERTFILE
SIGNING_CAPEERCERTr?   rE   rH   rU   r  ra   rf   rh   r}   r   r   r   hasattrr   r   r   r   r   r   contextmanagerr   r   r   r   r  r  BaseSelectorr  BaseEventLoopr4  r  r  r  r  r  r  r  IPPROTO_TCPSOCK_STREAMAF_INETr  r	  rG   r   r   <module>r     s      	  	 	    
      " @    "    & ) 	4 Z0
J
.J7z>2
:FT0 ++&- .& 04 = #*"7"7 1 
z 
 &	&(8 	 */  F 69"66
 ". .(~ .0D 7   (- J J 'a > >$  +!  &A9)) (b{(( bJ2
7# 
7- -6 x   6 r 
# 
# #)"4"46;M;M#)>>s  
Cs   I II