ó
    öÞ jÒ<  ã                   ó<  • 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     ÚJ/var/www/html/gaurav/venv/lib/python3.13/site-packages/uvloop/_testbase.pyÚ__eq__ÚMockPattern.__eq__   s"   € Ü”B—I’Iœc $›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‰˜t¨5´$°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!   € Ü�D—I‘I‹×)Ñ)×4Ñ4°ZÓ@Ð@r   g{®Gáz„?)Ú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^   € Ø—M‘M“OˆŒ	Ü×%Ò% d§o¡oÓ&7Ô8Ü×Ò˜tŸy™yÔ)Ø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Ü�MŠM˜$×5Ñ5Ô6Ø�I‰IÐIÔJØà×6×6Øô 	�
Š
ŒÜ
�
Š
ŒÜ
�
Š
Œä�4—9‘9˜k¨5×1Ò1Ü�JŠJŒLÜ�JŠJŒLÜ�JŠJŒLà×ÑØ—	‘	×1Ñ1Ø—	‘	×1Ñ1Ø8ô:ð
 ×ÑØ—	‘	×1Ñ1°1Ø8ô:ð ×ÑØ—	‘	×7Ñ7¸Ø?ôAð ×ÑØ—	‘	×5Ñ5°qØ8ô:ð "&§¡×!AÑ!A×!GÑ!GÖ!I‘�Ø—\‘\Ð";Ø.4ð "ò 6à×$Ñ$Ø˜qØ-×4Ñ4°VÓ<ô>÷6ñ 6ñ "Jð "&§¡×!?Ñ!?×!EÑ!EÖ!G‘�Ø—\‘\Ð"8Ø.4ð "ò 6à×$Ñ$ØŸy™y×>Ñ>¸vÑFØ0×7Ñ7¸Ó?ôA÷6ñ 6ñ "Hô 	×Ò˜tÔ$Ü×%Ò% dÔ+Øˆ�	÷6÷ 6ú÷6ö 6ús   Ç?#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Ô2°cØŸ8™8�D÷ 3Ð2ð (�ä�}Š}˜V¤V×%7Ñ%7Ó8ˆà‰?ÜÐ4Ó5Ð5Ø�a‹<ÜÐDÓEÐEØ�‰˜Ô ð	Ø�I‰I�dŒOØ�K‰K˜Ô ô
 "Ø˜¨kó;ð 	;÷) 3Õ2ûô  ó 	Ø�J‰JŒLØˆ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\   € ô �}Š}˜V¤V×%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Ï   ó   € Ø�Š ÐF¬V¯^©^ÐF¸vÑ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ðØ’ðÜ—I’I˜b”M÷ +Ð*øô ó ÙðûðÜ—I’I˜b•MøÜó Ùðý÷ +Õ*ü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,   € ð	Ø�I‰I�N‰NÔà�I‰I�b�MøˆD�I‰I�b�Mús	   ‚. ®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   € Ü�w‰w�‰œrŸw™wŸ|™|Ü
�‰�‰˜Ó'¨°.ó Bó C€Hä�7‰7�>‰>˜(×#Ñ#Ð#Ð#Ø€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   ÚfilterÚ0silence_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Ù‹X€FØ
×Ñ�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   € Ü�j¨sÑ"2Ö3ˆÜ�}Š}‹ˆÚðØ—	‘	˜2˜t˜*Ô%ð ÷ ‹Tñ 4ô Ð3Ó
4Ð4øô	 —<‘<ó Ø÷	 ‰Tðú÷ ŽTús-   ©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Ó9‰JäŸš¬×(;Ñ(;Ó<ˆJØ×ÒœcŸo™oÑ-ÕØ×"Ñ" 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Ó%Ü×.Ò.Ó0ˆGØ×Ñ §	¡	Ô*Ü×%Ò% 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   € Ü—-’-¤§¡Ó0€KÚ	ð	Ø×Ñ˜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Ø—9‘9˜Q¤ S£™\Ó*ˆDØ�s‹{Ü,Ð,Ø‰KˆCô	 �#‹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à×*Ñ*Ø�K‰K [Ø+Ø$;ð +ð =ˆö
 Ø×!Ñ!Ô#à�‰×ÑÔØ�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Ñ"5°t·{±{Ó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>   € Ü×Ñ×!Ñ! $¨¨d°MÔ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   € ð	.Ø�J‰JÔ(¨¯©Ó4Õ5øÜ!¤:Ð.ó 	ØÜó 	.Ø�J‰J×)Ñ)¨"×-Ñ-ûð	.ú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|   € Ü×Ñ×!Ñ! $¨¨d°MÔ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)Néÿÿÿÿs   stop)rt  ÚfilenoÚsendr¡   r   rÄ   r#  s    €r   rÄ   ÚTestThreadedServer.stopÁ  sa   ø€ ð	Ø�x�x˜DŸH™HŸO™OÓ-°Ó3ðØ—H‘H—M‘M 'Ô*ô ‰G‰L�Nøô ó Ùðûô ‰G‰L�Nús(   ƒ/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Ô)Ø—	‘	”÷ ð �H‰H�N‰NÔØ�H‰H�N‰NÕ÷ •ûð �H‰H�N‰NÔØ�H‰H�N‰NÕú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  € Ø�l�lØ�}‰} × 1Ñ 1Ó1Øä—m’mØ—‘˜TŸX™XÐ&¨¨B°·±ó?‰GˆA�!ð �x‰x˜1‹}Øà�z‰z˜Q‹ð>Ø!%§¡×!2Ñ!2Ó!4‘J�Dð —M’M QÑ&•MØ—O‘O D§M¡MÔ2ð
>Ú!Ø ×/Ñ/°Ô5÷ "ð1 �l�l‹l÷0 "�Tûä-¬zÐ:ó ØÜ(ó >Ø',˜œð>Ø!øà ŸJ™J×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   € à�z‰z×%Ñ%Ó'Ð'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   gü©ñÒMbP?)ÚtimerQ   ÚfuturesÚTimeoutErrorr_   Útasksr`   )rZ   Úpredr“   Údeadlines       r   Ú	run_untilrŸ    so   € Ü�yŠy‹{˜WÑ$€HÙ�f‰fØÑØ¤§¢£Ñ,ˆGØ˜!‹|Ü—o‘o×2Ñ2Ó4Ð4Ø×Ñ¤§¡× 3Ñ 3°EÓ :Ô;ñ �f�fr   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Ñ$4°qÑ$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�,ô 0ò0ñ ‹:€÷$Dñ $DôN�9×#Ñ#ô ô.˜ô .ô*P(˜ô P(òpô<ð ×Ññ
/ó ñ
/r   