+
    ‚V@i:m  ã                   ój  € ^ RI t ^ RIHt ^ RIHt ^ RIHt ^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHtHtHt ^ R	IHt ^ R
IHtHtHtH t H!t! ^ RI"H#t#H$t$ ^ RI%H&t& ^ RI't']'PP                  '       d   ^ RI'H)t)  ! R R]4      t* ! R R]PV                  4      t, ! R R]4      t- ! R R]4      t. ! R R]PV                  4      t/ ! R R]PV                  4      t0 ! R R]4      t1 ! R R]PV                  4      t2]3R8X  d   ]Ph                  ! 4        R# R# )é    N)ÚThreadPoolExecutor)Úfutures)Ú	Generator)Úmock)Ú
native_str)Úgen)ÚIOLoopÚTimeoutErrorÚPeriodicCallback)Úapp_log)ÚAsyncTestCaseÚbind_unused_portÚ	ExpectLogÚgen_testÚsetup_with_context_manager)Úignore_deprecationÚskipIfNonUnix)ÚFuture)ÚListc                   óð   a € ] tR t^(t o R tR tR tR tR tR t	R t
R tR	 t]R
 4       tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t]R 4       t]]R 4       4       t R t!Rt"V t#R# )Ú
TestIOLoopc                ó’  aa€ ^ V n         V P                  pV oVP                  oVV3R lp\        P                  ! W!4      Vn        VP                  R 4       VP                  R 4       VP                  \        P                  ! ^2R7      VP                  4       VP                  4        V P                  V P                   ^
4       R# )r   c                 óR   <€ S;P                   ^,          un         S! V.VO5/ VB  R# ©é   N©Úcalls)ÚselfÚcallbackÚargsÚkwargsÚold_add_callbackÚtests   &&*,€€Ú:/usr/lib/python3/dist-packages/tornado/test/ioloop_test.pyÚadd_callbackÚBTestIOLoop.test_add_callback_return_sequence.<locals>.add_callback1   s"   ø€ Ø�JŠJ˜!�O�JÙ˜XÐ7¨Ò7°Ô7ó    c                  ó   € / # ©N© r*   r'   r$   Ú<lambda>Ú>TestIOLoop.test_add_callback_return_sequence.<locals>.<lambda>6   ó   € ¡"r'   c                  ó   € . # r)   r*   r*   r'   r$   r+   r,   7   r-   r'   )ÚmillisecondsN)r   Úio_loopr%   ÚtypesÚ
MethodTypeÚadd_timeoutÚdatetimeÚ	timedeltaÚstopÚstartÚ
assertLess)r   Úloopr%   r"   r#   s   &  @@r$   Ú!test_add_callback_return_sequenceÚ,TestIOLoop.test_add_callback_return_sequence)   s”   ù€ àˆŒ
à�|‰|ˆØˆØ×,Ñ,Ðö	8ô "×,Ò,¨\Ó@ˆÔØ×Ñ™*Ô%Ø×Ñ™*Ô%Ø×Ñœ×+Ò+¸Ô<¸d¿i¹iÔHØ�
‰
ŒØ�‰˜Ÿ
™
 BÖ'r'   c                óD  a a€ V 3R  loVV 3R lpS P                   P                  S P                   P                  4       V4       S P                  4        S P	                  \        P                  ! 4       S P
                  ^R7       S P                  S P                  4       R# )c                  ó6   <€ R S n         S P                  4        R# ©TN)Úcalledr6   ©r   s   €r$   r   Ú5TestIOLoop.test_add_callback_wakeup.<locals>.callback?   s   ø€ ØˆDŒKØ�I‰IŽKr'   c                  ó€   <€ R Sn         SP                  P                  S 4       \        P                  ! 4       Sn        R# ©FN)r?   r0   r%   ÚtimeÚ
start_time)r   r   s   €€r$   Úschedule_callbackÚ>TestIOLoop.test_add_callback_wakeup.<locals>.schedule_callbackC   s)   ø€ ØˆDŒKØ�L‰L×%Ñ% hÔ/ä"Ÿiši›kˆDŽOr'   )ÚplacesN)r0   r3   rD   ÚwaitÚassertAlmostEqualrE   Ú
assertTruer?   )r   rF   r   s   f @r$   Útest_add_callback_wakeupÚ#TestIOLoop.test_add_callback_wakeup<   si   ù€ õ	ö	*ð 	�‰× Ñ  §¡×!2Ñ!2Ó!4Ð6GÔHØ�	‰	ŒØ×ÑœtŸyšy›{¨D¯O©OÀAÐÔFØ�‰˜Ÿ™Ö$r'   c                ó<  a € V 3R  lp\         P                  ! VR7      pS P                  P                  VP                  4       S P                  4        \        P                  ! 4       S P                  ,
          pS P                  VR4       VP                  4        R# )c                  ó²   <€ \         P                  ! R 4       \         P                   ! 4       S n        S P                  P	                  S P
                  4       R# )ç{®Gáz„?N)rD   ÚsleepÚ	stop_timer0   r%   r6   r@   s   €r$   ÚtargetÚ@TestIOLoop.test_add_callback_wakeup_other_thread.<locals>.targetO   s2   ø€ ä�JŠJ�tÔÜ!ŸYšY›[ˆDŒNØ�L‰L×%Ñ% d§i¡iÖ0r'   ©rS   çš™™™™™¹?N)
Ú	threadingÚThreadr0   r%   r7   rI   rD   rR   r8   Újoin)r   rS   ÚthreadÚdeltas   f   r$   Ú%test_add_callback_wakeup_other_threadÚ0TestIOLoop.test_add_callback_wakeup_other_threadN   sd   ø€ õ	1ô ×!Ò!¨Ô0ˆØ�‰×!Ñ! &§,¡,Ô/Ø�	‰	ŒÜ—	’	“˜dŸn™nÕ,ˆØ�‰˜˜sÔ#Ø�‰Žr'   c                óœ   € V P                   P                  \        P                  ! ^R7      V P                  4       V P                  4        R# )r   )ÚmicrosecondsN)r0   r3   r4   r5   r6   rI   r@   s   &r$   Útest_add_timeout_timedeltaÚ%TestIOLoop.test_add_timeout_timedelta\   s.   € Ø�‰× Ñ ¤×!3Ò!3ÀÔ!CÀTÇYÁYÔOØ�	‰	Žr'   c                ó  € \        4       w  r V P                  P                  VP                  4       R  \        P
                  4       V P                  \        V P                  P                  VP                  4       R \        P
                  4       V P                  P                  VP                  4       4       VP                  4        R#   T P                  P                  TP                  4       4       TP                  4        i ; i)c                 ó   € R # r)   r*   ©ÚfdÚeventss   &&r$   r+   Ú.TestIOLoop.test_multiple_add.<locals>.<lambda>d   s   € ±$r'   c                 ó   € R # r)   r*   rd   s   &&r$   r+   rg   l   s   € ¡4r'   N)
r   r0   Úadd_handlerÚfilenor	   ÚREADÚassertRaisesÚ	ExceptionÚremove_handlerÚclose©r   ÚsockÚports   &  r$   Útest_multiple_addÚTestIOLoop.test_multiple_add`   s°   € Ü%Ó'‰
ˆð	Ø�L‰L×$Ñ$Ø—‘“Ñ6¼¿¹ôð
 ×ÑÜØ—‘×(Ñ(Ø—‘“Ù'Ü—‘ôð �L‰L×'Ñ'¨¯©«Ô6Ø�J‰JŽLøð �L‰L×'Ñ'¨¯©«Ô6Ø�J‰J�Lús   ŽBC Ã;Dc                ó¼   € \        4       w  r V P                  P                  VP                  4       4       VP	                  4        R #   TP	                  4        i ; ir)   )r   r0   rn   rj   ro   rp   s   &  r$   Útest_remove_without_addÚ"TestIOLoop.test_remove_without_adds   s>   € ô &Ó'‰
ˆð	Ø�L‰L×'Ñ'¨¯©«Ô6à�J‰JŽLøˆD�J‰J�Lús   Ž)A	 Á	Ac                óÌ   € \        4       ;_uu_ 4        V P                  P                  V P                  4       R R R 4       V P	                  4        R #   + '       g   i     L"; ir)   )r   r0   Úadd_callback_from_signalr6   rI   r@   s   &r$   Útest_add_callback_from_signalÚ(TestIOLoop.test_add_callback_from_signal|   s:   € ô  ×!Õ!Ø�L‰L×1Ñ1°$·)±)Ô<÷ "à�	‰	Ž÷ "×!ús   “&AÁA#	c                óR  € \        R R7      p\        P                  ! VP                  R7      pVP                  4        \	        4       ;_uu_ 4        VP                  VP                  4       RRR4       VP                  4        VP                  4        R#   + '       g   i     L2; i)F©Úmake_currentrU   N)	r	   rW   rX   r7   r   ry   r6   rY   ro   )r   Úother_iolooprZ   s   &  r$   Ú*test_add_callback_from_signal_other_threadÚ5TestIOLoop.test_add_callback_from_signal_other_threadƒ   sm   € ô ¨5Ô1ˆÜ×!Ò!¨×);Ñ);Ô<ˆØ�‰ŒÜ×!Õ!Ø×1Ñ1°,×2CÑ2CÔD÷ "à�‰ŒØ×ÑÖ÷ "×!ús   ÁBÂB&	c                ó  aa€ \         P                  ! 4       oVV3R  lp\        RR7      o\         P                  ! VR7      pVP	                  4        SP                  4        \        R4       F  pSP                  R 4       K  	  R# )c                  ó¢   <€ SP                  SP                  4       SP                  4        S P                  4        SP	                  R R7       R# )T©Úall_fdsN)r%   r6   r7   Úsetro   )Úclosingr   s   €€r$   rS   Ú:TestIOLoop.test_add_callback_while_closing.<locals>.target•   s=   ø€ Ø×%Ñ% l×&7Ñ&7Ô8Ø×ÑÔ Ø�K‰KŒMØ×Ñ tÐÖ,r'   Fr}   rU   éè  c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú<TestIOLoop.test_add_callback_while_closing.<locals>.<lambda>    s   € ©dr'   N)rW   ÚEventr	   rX   r7   rI   Úranger%   )r   rS   rZ   Úir‡   r   s   &   @@r$   Útest_add_callback_while_closingÚ*TestIOLoop.test_add_callback_while_closing�   s`   ù€ ô —/’/Ó#ˆö	-ô ¨5Ô1ˆÜ×!Ò!¨Ô0ˆØ�‰ŒØ�‰ŒÜ�t–ˆAØ×%Ñ%¡lÖ3ó r'   c                óf  a € \         P                  ! 4       w  r V 3R  lpS P                  P                  VP	                  4       V\
        P                  4       S P                  P                  S P                  P                  4       R,           \        P                  ! VP                  R4      4       S P                  4        S P                  P                  VP	                  4       4       VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i)c                 óh   <€ SP                  V\        P                  4       SP                  4        R # r)   )ÚassertEqualr	   rk   r6   )re   rf   r   s   &&€r$   ÚhandlerÚ5TestIOLoop.test_read_while_writeable.<locals>.handlerª   s    ø€ Ø× Ñ  ¬¯©Ô5Ø—	‘	–r'   rP   s   asdfN)ÚsocketÚ
socketpairr0   ri   rj   r	   rk   r3   rD   Ú	functoolsÚpartialÚsendrI   rn   ro   )r   ÚclientÚserverr”   s   f   r$   Útest_read_while_writeableÚ$TestIOLoop.test_read_while_writeable¢   sÆ   ø€ ô
  ×*Ò*Ó,‰ˆð	õð �L‰L×$Ñ$ V§]¡]£_°g¼v¿{¹{ÔKØ�L‰L×$Ñ$Ø—‘×!Ñ!Ó# dÕ*¬I×,=Ò,=¸f¿k¹kÈ7Ó,Sôð �I‰IŒKØ�L‰L×'Ñ'¨¯©«Ô8à�L‰LŒNØ�L‰LŽNøð �L‰LŒNØ�L‰L�Nús   šCD Ä"D0c                óØ   € V P                   P                  V P                   P                  4       V P                  4      pV P	                  4        V P                   P                  V4       R # r)   )r0   r3   rD   r6   rI   Úremove_timeout©r   Úhandles   & r$   Útest_remove_timeout_after_fireÚ)TestIOLoop.test_remove_timeout_after_fire¸   sD   € à—‘×)Ñ)¨$¯,©,×*;Ñ*;Ó*=¸t¿y¹yÓIˆØ�	‰	ŒØ�‰×#Ñ# FÖ+r'   c                ó8  a € \        R 4       FZ  pS P                  P                  S P                  P                  4       R,           R 4      pS P                  P	                  V4       K\  	  S P                  P                  V 3R l4       S P                  4        R# )iÐ  i  c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú8TestIOLoop.test_remove_timeout_cleanup.<locals>.<lambda>Å   s   € ÑSWr'   c                  óN   <€ S P                   P                  S P                  4      # r)   ©r0   r%   r6   r@   s   €r$   r+   r§   È   s   ø€ ¨$¯,©,×*CÑ*CÀDÇIÁIÔ*Nr'   N)r�   r0   r3   rD   r    r%   rI   )r   rŽ   Útimeouts   f  r$   Útest_remove_timeout_cleanupÚ&TestIOLoop.test_remove_timeout_cleanup¾   sk   ø€ ô �t–ˆAØ—l‘l×.Ñ.¨t¯|©|×/@Ñ/@Ó/BÀTÕ/IÉ<ÓXˆGØ�L‰L×'Ñ'¨Ö0ñ ð 	�‰×!Ñ!Ô"NÔOØ�	‰	Žr'   c                ó¾  a aa€ R R .oS P                   P                  4       pVV V3R lpS P                   P                  VR,           V4       V3R lpS P                   P                  VR,           V4      oS P                   P                  VR,           S P                  4       \        P                  ! R4       S P                  4        S P                  SRR .4       R# )Fc                  óH   <€ R S ^ &   SP                   P                  S4       R# r>   )r0   r    )r   r   Ú	t2_handles   €€€r$   Út1Ú7TestIOLoop.test_remove_timeout_from_timeout.<locals>.t1Ó   s   ø€ ØˆE�!‰HØ�L‰L×'Ñ'¨	Ö2r'   rP   c                  ó   <€ R S ^&   R# r>   r*   r   s   €r$   Út2Ú7TestIOLoop.test_remove_timeout_from_timeout.<locals>.t2Ù   s   ø€ ØˆE�!‹Hr'   g{®Gáz”?g¸…ëQ¸ž?TN)r0   rD   r3   r6   rQ   rI   r“   )r   Únowr°   r³   r   r¯   s   f   @@r$   Ú test_remove_timeout_from_timeoutÚ+TestIOLoop.test_remove_timeout_from_timeoutË   s¥   ú€ Ø˜�ˆð
 �l‰l×ÑÓ!ˆ÷	3ð 	�‰× Ñ   t¥¨RÔ0õ	ð —L‘L×,Ñ,¨S°4­Z¸Ó<ˆ	Ø�‰× Ñ   t¥¨T¯Y©YÔ7Ü�
Š
�4ÔØ�	‰	ŒØ×Ñ˜  u Ö.r'   c                ór  € . pV P                   P                  V P                   P                  4       VP                  ^4       V P                   P                  \        P
                  ! ^ R7      VP                  ^4       V P                   P                  V P                   P                  4       VP                  ^4       V P                   P                  ^ VP                  ^4       V P                   P                  ^ V P                  4       V P                  4        V P                  \        V4      . RO4       R# )r   )ÚsecondsN)r   é   é   é   )r0   r3   rD   Úappendr4   r5   Úcall_atÚ
call_laterr6   rI   r“   Úsorted)r   Úresultss   & r$   Útest_timeout_with_argumentsÚ&TestIOLoop.test_timeout_with_argumentsâ   sÌ   € àˆØ�‰× Ñ  §¡×!2Ñ!2Ó!4°g·n±nÀaÔHØ�‰× Ñ ¤×!3Ò!3¸AÔ!>ÀÇÁÐPQÔRØ�‰×Ñ˜TŸ\™\×.Ñ.Ó0°'·.±.À!ÔDØ�‰×Ñ  7§>¡>°1Ô5Ø�‰×Ñ  4§9¡9Ô-Ø�	‰	Œð 	×Ñœ ›ª,Ö7r'   c                óÈ   € V P                   P                  V P                   P                  4       R  4      pV P                  V4       V P                   P	                  V4       R# )c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú4TestIOLoop.test_add_timeout_return.<locals>.<lambda>ò   s   € Átr'   N)r0   r3   rD   ÚassertIsNotNoner    r¡   s   & r$   Útest_add_timeout_returnÚ"TestIOLoop.test_add_timeout_returnï   sG   € ð —‘×)Ñ)¨$¯,©,×*;Ñ*;Ó*=¹|ÓLˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÖ+r'   c                óÈ   € V P                   P                  V P                   P                  4       R  4      pV P                  V4       V P                   P	                  V4       R# )c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú0TestIOLoop.test_call_at_return.<locals>.<lambda>÷   s   € Á4r'   N)r0   r¾   rD   rÇ   r    r¡   s   & r$   Útest_call_at_returnÚTestIOLoop.test_call_at_returnö   sE   € Ø—‘×%Ñ% d§l¡l×&7Ñ&7Ó&9¹<ÓHˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÖ+r'   c                ó˜   € V P                   P                  ^ R 4      pV P                  V4       V P                   P                  V4       R# )r   c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú3TestIOLoop.test_call_later_return.<locals>.<lambda>ü   s   € ±Dr'   N)r0   r¿   rÇ   r    r¡   s   & r$   Útest_call_later_returnÚ!TestIOLoop.test_call_later_returnû   s8   € Ø—‘×(Ñ(¨©LÓ9ˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÖ+r'   c                óä   aa€  ! R R4      p\        4       w  r#V! V4      o\        RR7      oSP                  VV3R l4       SP                  RR7       V P	                  SP
                  4       R# )	zŽWhen a file object is used instead of a numeric file descriptor,
the object should be closed (by IOLoop.close(all_fds=True),
not just the fd.
c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )Ú8TestIOLoop.test_close_file_object.<locals>.SocketWrapperi	  c                ó    € Wn         R V n        R# rC   )ÚsockobjÚclosed)r   rØ   s   &&r$   Ú__init__ÚATestIOLoop.test_close_file_object.<locals>.SocketWrapper.__init__
  s   € Ø&”Ø#�–r'   c                ó6   € V P                   P                  4       # r)   )rØ   rj   r@   s   &r$   rj   Ú?TestIOLoop.test_close_file_object.<locals>.SocketWrapper.fileno  s   € Ø—|‘|×*Ñ*Ó,Ð,r'   c                óH   € R V n         V P                  P                  4        R# r>   )rÙ   rØ   ro   r@   s   &r$   ro   Ú>TestIOLoop.test_close_file_object.<locals>.SocketWrapper.close  s   € Ø"�”Ø—‘×"Ñ"Ö$r'   )rÙ   rØ   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rÚ   rj   ro   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r$   ÚSocketWrapperrÖ   	  s   ø‡ € ò$ò-÷%ð %r'   rè   Fr}   c                  óH   <€ S P                  SR  \        P                  4      # )c                 ó   € R # r)   r*   rd   s   &&r$   r+   ÚETestIOLoop.test_close_file_object.<locals>.<lambda>.<locals>.<lambda>  s   € ±4r'   )ri   r	   rk   )r0   Úsocket_wrappers   €€r$   r+   Ú3TestIOLoop.test_close_file_object.<locals>.<lambda>  s   ø€ �G×'Ñ'ØÑ 7¼¿¹ôr'   Tr„   N)r   r	   Úrun_syncro   rK   rÙ   )r   rè   rØ   rr   r0   rì   s   &   @@r$   Útest_close_file_objectÚ!TestIOLoop.test_close_file_object   sb   ù€ ÷
	%ñ 
	%ô )Ó*‰ˆÙ& wÓ/ˆÜ eÔ,ˆØ×Ñõô	
ð
 	�‰˜dˆÔ#Ø�‰˜×-Ñ-Ö.r'   c                óì  a aa€ \        4       w  op. oVV V3R lpS P                  P                  SV\        P                  4       \
        P                  ! \        P                  ! 4       4      ;_uu_ 4       pVP                  RV34       S P                  4        RRR4       S P                  P                  S4       S P                  P                  SP                  4       V\        P                  4       \
        P                  ! \        P                  ! 4       4      ;_uu_ 4       pVP                  RV34       S P                  4        RRR4       S P                  S^ ,          S4       S P                  S^,          SP                  4       4       S P                  P                  SP                  4       4       SP                  4        R#   + '       g   i     EL=; i  + '       g   i     LŸ; i)z>The handler callback receives the same fd object it passed in.c                 óŽ   <€ SP                  V 4       SP                  4       w  r#VP                  4        SP                  4        R # r)   )r½   Úacceptro   r6   )re   rf   ÚconnÚaddrÚfdsr   Úserver_socks   &&  €€€r$   Úhandle_connectionÚGTestIOLoop.test_handler_callback_file_object.<locals>.handle_connection%  s0   ø€ Ø�J‰J�rŒNØ$×+Ñ+Ó-‰JˆDØ�J‰JŒLØ�I‰IŽKr'   z	127.0.0.1N)r   r0   ri   r	   rk   Ú
contextlibr‡   r–   ÚconnectrI   rn   rj   ÚassertIsr“   ro   )r   rr   rø   Úclient_sockrö   r÷   s   f   @@r$   Ú!test_handler_callback_file_objectÚ,TestIOLoop.test_handler_callback_file_object   sP  ú€ ä,Ó.Ñˆ�TØˆ÷	ð 	�‰× Ñ  Ð.?ÄÇÁÔMÜ×Ò¤§¢£×0Ô0°KØ×Ñ ¨dÐ 3Ô4Ø�I‰IŒK÷ 1ð 	�‰×#Ñ# KÔ0Ø�‰× Ñ  ×!3Ñ!3Ó!5Ð7HÌ&Ï+É+ÔVÜ×Ò¤§¢£×0Ô0°KØ×Ñ ¨dÐ 3Ô4Ø�I‰IŒK÷ 1ð 	�‰�c˜!•f˜kÔ*Ø×Ñ˜˜Q� ×!3Ñ!3Ó!5Ô6Ø�‰×#Ñ# K×$6Ñ$6Ó$8Ô9Ø×ÑÖ÷ 1×0Ð0ú÷
 1×0ús   Á7$GÄ($G#ÇG 	Ç#G3	c                óÎ  € \        4       w  rR  pV P                  P                  W\        P                  4       V P                  \        4      ;_uu_ 4        V P                  P                  VP                  4       V\        P                  4       RRR4       V P                  P                  VP                  4       4       VP                  4        R#   + '       g   i     LK; i)c                 ó   € R # r)   r*   rd   s   &&r$   ÚfÚ+TestIOLoop.test_mixed_fd_fileobj.<locals>.f<  s   € Ùr'   N)
r   r0   ri   r	   rk   rl   rm   rj   rn   ro   )r   r÷   rr   r  s   &   r$   Útest_mixed_fd_fileobjÚ TestIOLoop.test_mixed_fd_fileobj9  s™   € Ü,Ó.Ñˆò	ð 	�‰× Ñ  ´·±Ô=Ø×Ñœy×)Õ)ð �L‰L×$Ñ$ [×%7Ñ%7Ó%9¸1¼f¿k¹kÔJ÷ *ð 	�‰×#Ñ# K×$6Ñ$6Ó$8Ô9Ø×ÑÖ÷ *×)ús   Á:CÃC$	c                óÞ   a aa€ R.oR.oVVV 3R lpS P                   P                  V4       S P                  4        S P                  S^ ,          4       S P	                  S^ ,          4       R# )z:Calling start() twice should raise an error, not deadlock.Fc                  ó”   <€  SP                   P                  4        R S^ &   SP                  4        R#   \         d	    R S ^ &    L$i ; ir>   )r0   r7   rm   r6   )Úgot_exceptionÚreturned_from_startr   s   €€€r$   r   Ú+TestIOLoop.test_reentrant.<locals>.callbackL  sI   ø€ ð(Ø—‘×"Ñ"Ô$Ø)-Ð# AÑ&ð �I‰IŽKøô ô (Ø#'�˜aÓ ð(ús   ƒ4 ´AÁAN)r0   r%   rI   rK   ÚassertFalse)r   r   r  r	  s   f @@r$   Útest_reentrantÚTestIOLoop.test_reentrantG  sY   ú€ à$˜gÐØ˜ˆ÷	ð 	�‰×!Ñ! (Ô+Ø�	‰	ŒØ�‰˜ aÕ(Ô)Ø×ÑÐ,¨QÕ/Ö0r'   c                ó  € V P                   P                  R 4       V P                   P                  V P                  4       \        \        R4      ;_uu_ 4        V P                  4        RRR4       R#   + '       g   i     R# ; i)z-Uncaught exceptions get logged by the IOLoop.c                  ó   € ^^ ,          # ©r   r*   r*   r'   r$   r+   Ú3TestIOLoop.test_exception_logging.<locals>.<lambda>[  ó   € ¨!¨a®%r'   úException in callbackN)r0   r%   r6   r   r   rI   r@   s   &r$   Útest_exception_loggingÚ!TestIOLoop.test_exception_loggingY  sP   € à�‰×!Ñ!¡-Ô0Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7×8Õ8Ø�I‰IŒK÷ 9×8×8Ò8ús   ÁA5Á5B	c                óú   a € \         P                  V 3R l4       pS P                  P                  V4       \	        \
        R4      ;_uu_ 4        S P                  4        RRR4       R#   + '       g   i     R# ; i)z:The IOLoop examines exceptions from Futures and logs them.c                  ód   <€ S P                   P                  S P                  4       ^^ ,           R# r   r©   r@   s   €r$   r   Ú:TestIOLoop.test_exception_logging_future.<locals>.callbackc  s"   ø€ à�L‰L×%Ñ% d§i¡iÔ0Ø��EˆEr'   r  N)r   Ú	coroutiner0   r%   r   r   rI   ©r   r   s   f r$   Útest_exception_logging_futureÚ(TestIOLoop.test_exception_logging_future`  sU   ø€ ô 
�‰ô	ó 
ð	ð 	�‰×!Ñ! (Ô+Ü”wÐ 7×8Õ8Ø�I‰IŒK÷ 9×8×8Ò8ús   ÁA)Á)A:	c                óÔ   a € V 3R lpS P                   P                  V4       \        \        R4      ;_uu_ 4        S P	                  4        RRR4       R#   + '       g   i     R# ; i)z=The IOLoop examines exceptions from awaitables and logs them.c               “   ó–   <"  € S P                   P                  S P                   P                  S P                  4       ^^ ,           R# 5ir   r©   r@   s   €r$   r   Ú?TestIOLoop.test_exception_logging_native_coro.<locals>.callbacko  s3   øé € ð �L‰L×%Ñ% d§l¡l×&?Ñ&?ÀÇÁÔKØ��EˆEùs   ƒAA	r  N)r0   r%   r   r   rI   r  s   f r$   Ú"test_exception_logging_native_coroÚ-TestIOLoop.test_exception_logging_native_corol  sB   ø€ õ	ð 	�‰×!Ñ! (Ô+Ü”wÐ 7×8Õ8Ø�I‰IŒK÷ 9×8×8Ò8ús   »AÁA'	c                ó  € V P                   P                  R  4       V P                   P                  V P                  4       \        \        R4      ;_uu_ 4        V P                  4        RRR4       V P                   P                  R 4       V P                   P                  V P                  4       \        \        R4      ;_uu_ 4        V P                  4        RRR4       R#   + '       g   i     L„; i  + '       g   i     R# ; i)c                  ó   € ^^ ,          # r  r*   r*   r'   r$   r+   Ú0TestIOLoop.test_spawn_callback.<locals>.<lambda>|  r  r'   r  Nc                  ó   € ^^ ,          # r  r*   r*   r'   r$   r+   r$  ‚  s   € ¨A°®Er'   )r0   r%   r6   r   r   rI   Úspawn_callbackr@   s   &r$   Útest_spawn_callbackÚTestIOLoop.test_spawn_callbacky  s¦   € ð 	�‰×!Ñ!¡-Ô0Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7×8Õ8Ø�I‰IŒK÷ 9ð 	�‰×#Ñ#¡MÔ2Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7×8Õ8Ø�I‰IŒK÷ 9Ñ8÷ 9×8ú÷ 9×8Ð8ús   ÁC'ÃC:Ã'C7	Ã:D	c                óz  a aaa€ \         P                  ! 4       w  oo SP                  R 4       SP                  R 4       . oVVV V3R lpS P                  P	                  SVS P                  P
                  4       S P                  P	                  SVS P                  P
                  4       S P                  P                  RS P                  4       S P                  4        S P                  SR .4       SP                  4        SP                  4        R#   SP                  4        SP                  4        i ; i)s   abcc                 óÄ   <€ SP                  V P                  R 4      4       V SJ d   SP                  P                  S4       R# SP                  P                  S4       R# )i   N)r½   Úrecvr0   rn   )re   rf   Úchunksr›   r   rœ   s   &&€€€€r$   Úhandle_readÚ@TestIOLoop.test_remove_handler_from_handler.<locals>.handle_read’  sB   ø€ Ø—‘˜bŸg™g d›mÔ,Ø˜“<Ø—L‘L×/Ñ/°Ö7à—L‘L×/Ñ/°Ö7r'   rV   N)r–   r—   rš   r0   ri   rk   r¿   r6   rI   r“   ro   )r   r-  r,  r›   rœ   s   f @@@r$   Ú test_remove_handler_from_handlerÚ+TestIOLoop.test_remove_handler_from_handler‡  sä   û€ ô  ×*Ò*Ó,‰ˆ�ð	Ø�K‰K˜ÔØ�K‰K˜Ôð ˆF÷8ð 8ð �L‰L×$Ñ$ V¨[¸$¿,¹,×:KÑ:KÔLØ�L‰L×$Ñ$ V¨[¸$¿,¹,×:KÑ:KÔLØ�L‰L×#Ñ# C¨¯©Ô3Ø�I‰IŒKð ×Ñ˜V f XÔ.à�L‰LŒNØ�L‰LŽNøð �L‰LŒNØ�L‰L�Nús   žCD Ä"D:c           	   #  ó²   "  € R  p\         P                  ! \        ^4       Uu. uF  q P                  P	                  RV4      NK   	  up4      x € R# u upi 5i)c                  ób   € \        ^
4       F  p \        RR7      pVP                  4        K!  	  R# )é
   Fr}   N)r�   r	   ro   )rŽ   r9   s     r$   r  Ú*TestIOLoop.test_init_close_race.<locals>.f¬  s#   € Ü˜2–Y�Ü¨5Ô1�Ø—
‘
–ó r'   N)r   Úmultir�   r0   Úrun_in_executor)r   r  rŽ   s   &  r$   Útest_init_close_raceÚTestIOLoop.test_init_close_race¤  s@   é € ò	ô
 �iŠiÌÈaÌÓQÉÀ1Ÿ™×5Ñ5°d¸AÖ>ÉÑQÓRÔRùÒQùs   ‚!A£$AÁAc                ó  € \         P                  ! 4       p\        VR R7      pVP                  VJ g   Q hV P	                  \
        4      ;_uu_ 4        \        VR R7       RRR4       VP                  4        R#   + '       g   i     L"; i)F)Úasyncio_loopr~   N)ÚasyncioÚnew_event_loopr	   r:  rl   ÚRuntimeErrorro   )r   r:  r9   s   &  r$   Útest_explicit_asyncio_loopÚ%TestIOLoop.test_explicit_asyncio_loop³  sd   € Ü×-Ò-Ó/ˆÜ <¸eÔDˆØ× Ñ  LÓ0Ð0Ð0Ø×Ñœ|×,Õ,ä ¸5ÕA÷ -ð 	�
‰
Ž÷ -×,ús   ÁA:Á:B
	)r?   r   rE   rR   N)$rà   rá   râ   rã   r:   rL   r\   r`   rs   rv   rz   r€   r�   r   r�   r£   r«   r¶   rÂ   rÈ   rÍ   rÒ   rï   rþ   r  r  r  r  r   r'  r/  r   r7  r>  rä   rå   ræ   s   @r$   r   r   (   sÎ   ø‡ € ò(ò&%ò$òòò&òò
ò4ð& ñó ðò*,òò/ò.8ò,ò,ò
,ò
/ò@ò2ò1ò$ò
òòð ñó ðð8 ØñSó ó ðS÷ð r'   r   c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚTestIOLoopCurrenti¿  c                óf   € \        V \        4       4       R V n        \        P                  ! 4        R # r)   )r   r   r0   r	   Úclear_currentr@   s   &r$   ÚsetUpÚTestIOLoopCurrent.setUpÀ  s#   € Ü" 4Ô);Ó)=Ô>ØˆŒÜ×ÒÖr'   c                óZ   € V P                   e   V P                   P                  4        R # R # r)   ©r0   ro   r@   s   &r$   ÚtearDownÚTestIOLoopCurrent.tearDownÅ  s!   € Ø�<‰<Ò#Ø�L‰L×ÑÖ ñ $r'   c                ó¨  a € \        R R7      S n        S P                  \         P                  ! R R7      4       \	        ^4       FŠ  pV 3R lpS P                  P                  V4       S P                  P                  4        S P                  S P                  S P                  4       S P                  \         P                  ! R R7      4       KŒ  	  R# )Fr}   )Úinstancec                  ó�   <€ \         P                  ! 4       S n        S P                  f   Q hS P                  P	                  4        R # r)   )r	   ÚcurrentÚcurrent_io_loopr0   r6   r@   s   €r$   r  Ú-TestIOLoopCurrent.test_non_current.<locals>.fÑ  s2   ø€ Ü'-§~¢~Ó'7�Ô$Ø—|‘|Ò/Ð/Ð/Ø—‘×!Ñ!Ö#r'   N)	r	   r0   ÚassertIsNonerM  r�   r%   r7   rü   rN  )r   rŽ   r  s   f  r$   Útest_non_currentÚ"TestIOLoopCurrent.test_non_currentÉ  sŽ   ø€ Ü¨5Ô1ˆŒà×Ñœ&Ÿ.š.°%Ô8Ô9ô �q–ˆAõ$ð
 �L‰L×%Ñ% aÔ(Ø�L‰L×ÑÔ Ø�M‰M˜$×.Ñ.°·±Ô=à×ÑœfŸnšn°eÔ<Ö=ó r'   c                ó†   € \        R R7      V n        V P                  V P                  \         P                  ! 4       4       R# )Tr}   N)r	   r0   rü   rM  r@   s   &r$   Útest_force_currentÚ$TestIOLoopCurrent.test_force_currentÜ  s'   € Ü¨4Ô0ˆŒØ�‰�d—l‘l¤F§N¢NÓ$4Ö5r'   )rN  r0   N)
rà   rá   râ   rã   rD  rH  rQ  rT  rä   rå   ræ   s   @r$   rA  rA  ¿  s   ø‡ € òò
!ò>÷&6ð 6r'   rA  c                   óB   a a€ ] tR tRt oV 3R lt]R 4       tRtVtV ;t	# )ÚTestIOLoopCurrentAsynciá  c                óL   <€ \         SV `  4        \        V \        4       4       R # r)   )ÚsuperrD  r   r   )r   Ú	__class__s   &€r$   rD  ÚTestIOLoopCurrentAsync.setUpâ  s   ø€ Ü‰‰ŒÜ" 4Ô);Ó)=Ö>r'   c              #  ó°   "  € \        ^4      ;_uu_ 4       pVP                  \        P                  4      x € RRR4       R#   + '       g   i     R# ; i5ir   )r   Úsubmitr	   rC  )r   Úes   & r$   Útest_clear_without_currentÚ1TestIOLoopCurrentAsync.test_clear_without_currentæ  s7   é € ô
   ×"Ô" aØ—(‘(œ6×/Ñ/Ó0Ò0÷ #×"×"Ò"üs   ‚A–"A¸
AÁA	Á	Ar*   )
rà   rá   râ   rã   rD  r   r_  rä   rå   Ú__classcell__)rZ  rç   s   @@r$   rW  rW  á  s#   ù‡ € õ?ð ñ1ó ÷1ð 1r'   rW  c                   óV   a € ] tR tRt o R t]R 4       t]R 4       t]R 4       tRt	V t
R# )ÚTestIOLoopFuturesiï  c                ó~  a € \         P                  ! ^4      ;_uu_ 4       pR pS P                  P                  VP	                  V4      V 3R l4       S P                  4       pS P                  VP                  4       4       S P                  VP                  4       4       RRR4       R#   + '       g   i     R# ; i)r   c                  ó   € R # r)   r*   r*   r'   r$   ÚdummyÚ8TestIOLoopFutures.test_add_future_threads.<locals>.dummyó  s   € Ùr'   c                 ó&   <€ SP                  V 4      # r)   ©r6   )Úfuturer   s   &€r$   r+   Ú;TestIOLoopFutures.test_add_future_threads.<locals>.<lambda>÷  s   ø€ °4·9±9¸VÔ3Dr'   N)
r   r   r0   Ú
add_futurer]  rI   rK   ÚdonerP  Úresult)r   Úpoolrf  rj  s   f   r$   Útest_add_future_threadsÚ)TestIOLoopFutures.test_add_future_threadsð  s€   ø€ Ü×'Ò'¨×*Ô*¨dòð �L‰L×#Ñ#Ø—‘˜EÓ"Ô$Dôð —Y‘Y“[ˆFØ�O‰O˜FŸK™K›MÔ*Ø×Ñ˜fŸm™m›oÔ.÷ +×*×*Ò*ús    BB+Â+B<	c              #  ó*  "  € \         P                  ! 4       p\         P                  ! 4       pR  p\        P                  ! 4       P	                  RW1V4      \        P                  ! 4       P	                  RW2V4      .x €pV P                  W.V4       R# 5i)c                 óF   € V P                  4        VP                  4        V # r)   ©r†   rI   ©Ú
self_eventÚother_events   &&r$   Ú	sync_funcÚ=TestIOLoopFutures.test_run_in_executor_gen.<locals>.sync_func  s    € Ø�N‰NÔØ×ÑÔð Ðr'   N)rW   rŒ   r	   rM  r6  r“   )r   Úevent1Úevent2rx  Úress   &    r$   Útest_run_in_executor_genÚ*TestIOLoopFutures.test_run_in_executor_gený  sw   é € ä—’Ó"ˆÜ—’Ó"ˆò	ô �NŠNÓ×,Ñ,¨T°9ÀfÓMÜ�NŠNÓ×,Ñ,¨T°9ÀfÓMð
ñ 
ˆð
 	×Ñ˜&Ð)¨3Ö/ùs   ‚BBc              #  óÀ   a"  € \         P                  ! 4       p\         P                  ! 4       pR  oV3R lpV! W4      V! W!4      .x €pV P                  W.V4       R# 5i)c                 óF   € V P                  4        VP                  4        V # r)   rt  ru  s   &&r$   rx  Ú@TestIOLoopFutures.test_run_in_executor_native.<locals>.sync_func  s   € Ø�N‰NÔØ×ÑÔØÐr'   c              “   ól   <"  € \         P                  ! 4       P                  R SW4      G R j  x€L
 #  L5ir)   )r	   rM  r6  )rv  rw  rx  s   &&€r$   Úasync_wrapperÚDTestIOLoopFutures.test_run_in_executor_native.<locals>.async_wrapper   s1   øé € ÜŸšÓ)×9Ñ9Ø�i ó÷ ð ñ ùs   ƒ*4­2®4N)rW   rŒ   r“   )r   rz  r{  rƒ  r|  rx  s   &    @r$   Útest_run_in_executor_nativeÚ-TestIOLoopFutures.test_run_in_executor_native  sT   øé € ä—’Ó"ˆÜ—’Ó"ˆò	õ	ñ
 # 6Ó2±MÀ&Ó4QÐRÑRˆà×Ñ˜&Ð)¨3Ö/ùs   ƒAAc              #  óz  aa"  € ^ .o ! V3R lR\         P                  4      p\        P                  ! 4       oV3R lpV! ^4      p\        P
                  ! 4       pVP                  V4       VP                  RV4      x € V P                  ^S^ ,          4       V P                  SP                  4       4       R# 5i)r   c                   ó6   <a a€ ] tR tRt oV V3R ltRtVtV ;t# )Ú?TestIOLoopFutures.test_set_default_executor.<locals>.MyExecutori-  c                óR   <€ S^ ;;,          ^,          uu&   \         SV `  ! V.VO5!  # ©r   )rY  r]  )r   Úfuncr    rZ  Úcounts   &&*€€r$   r]  ÚFTestIOLoopFutures.test_set_default_executor.<locals>.MyExecutor.submit.  s$   ø€ Ø�a—˜A•“Ü‘w’~ dÐ2¨TÓ2Ð2r'   r*   )rà   rá   râ   rã   r]  rä   rå   ra  )rZ  rç   r�  s   @@€r$   Ú
MyExecutorr‰  -  s   ú‡ € ÷3ö 3r'   r�  c                  ó(   <€ S P                  4        R # r)   )r†   )Úevents   €r$   rx  Ú>TestIOLoopFutures.test_set_default_executor.<locals>.sync_func4  s   ø€ Ø�I‰IŽKr'   N)r   r   rW   rŒ   r	   rM  Úset_default_executorr6  r“   rK   Úis_set)r   r�  rx  Úexecutorr9   r�  r‘  s   &    @@r$   Útest_set_default_executorÚ+TestIOLoopFutures.test_set_default_executor)  s�   ùé € à�ˆ÷	3œ×3Ñ3ô 	3ô
 —’Ó!ˆõ	ñ ˜a“=ˆÜ�~Š~ÓˆØ×!Ñ! (Ô+Ø×"Ñ" 4¨Ó3Ò3Ø×Ñ˜˜E !�HÔ%Ø�‰˜Ÿ™›Ö'ùs   „B7B;r*   N)rà   rá   râ   rã   rp  r   r}  r…  r–  rä   rå   ræ   s   @r$   rc  rc  ï  sF   ø‡ € ò/ð ñ0ó ð0ð* ñ0ó ð0ð* ñ(ó ö(r'   rc  c                   ó\   a € ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )ÚTestIOLoopRunSynci?  c                ó(   € \        R R7      V n        R# )Fr}   N)r	   r0   r@   s   &r$   rD  ÚTestIOLoopRunSync.setUp@  s   € Ü¨5Ô1ˆŽr'   c                ó:   € V P                   P                  4        R # r)   rG  r@   s   &r$   rH  ÚTestIOLoopRunSync.tearDownC  s   € Ø�‰×ÑÖr'   c                óÆ   € V P                  \        P                  4      ;_uu_ 4        V P                  P	                  R  4       RRR4       R#   + '       g   i     R# ; i)c                  ó   € ^*# ©é*   r*   r*   r'   r$   r+   Ú4TestIOLoopRunSync.test_sync_result.<locals>.<lambda>H  s   € ©"r'   N)rl   r   ÚBadYieldErrorr0   rî   r@   s   &r$   Útest_sync_resultÚ"TestIOLoopRunSync.test_sync_resultF  s:   € Ø×Ñœs×0Ñ0×1Õ1Ø�L‰L×!Ñ!¡*Ô-÷ 2×1×1Ò1ús   ¨AÁA 	c                ó²   € V P                  \        4      ;_uu_ 4        V P                  P                  R  4       RRR4       R#   + '       g   i     R# ; i)c                  ó   € ^^ ,          # r  r*   r*   r'   r$   r+   Ú7TestIOLoopRunSync.test_sync_exception.<locals>.<lambda>L  r  r'   N)rl   ÚZeroDivisionErrorr0   rî   r@   s   &r$   Útest_sync_exceptionÚ%TestIOLoopRunSync.test_sync_exceptionJ  s5   € Ø×ÑÔ0×1Õ1Ø�L‰L×!Ñ!¡-Ô0÷ 2×1×1Ò1ús   žAÁA	c                óˆ   € \         P                  R  4       pV P                  V P                  P	                  V4      ^*4       R# )c               3   óZ   "  € \         P                  x € \         P                  ! ^*4      h5ir   )r   ÚmomentÚReturnr*   r'   r$   r  Ú.TestIOLoopRunSync.test_async_result.<locals>.fO  s   é € ä—*‘*ÒÜ—*’*˜R“.Ð ùs   ‚)+N)r   r  r“   r0   rî   ©r   r  s   & r$   Útest_async_resultÚ#TestIOLoopRunSync.test_async_resultN  s9   € Ü	�‰ñ	!ó 
ð	!ð 	×Ñ˜Ÿ™×.Ñ.¨qÓ1°2Ö6r'   c                óÜ   € \         P                  R  4       pV P                  \        4      ;_uu_ 4        V P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)c               3   óD   "  € \         P                  x € ^^ ,           R# 5ir   ©r   r®  r*   r'   r$   r  Ú1TestIOLoopRunSync.test_async_exception.<locals>.fW  s   é € ä—*‘*ÒØ��EˆEùs   ‚ N)r   r  rl   r©  r0   rî   r±  s   & r$   Útest_async_exceptionÚ&TestIOLoopRunSync.test_async_exceptionV  sM   € Ü	�‰ñ	ó 
ð	ð ×ÑÔ0×1Õ1Ø�L‰L×!Ñ! !Ô$÷ 2×1×1Ò1ús   ´AÁA+	c                óJ   a € V 3R  lpS P                   P                  V4       R# )c                  óf   <€ S P                  \        P                  ! 4       S P                  4       R # r)   )rü   r	   rM  r0   r@   s   €r$   r  Ú)TestIOLoopRunSync.test_current.<locals>.f`  s   ø€ Ø�M‰Mœ&Ÿ.š.Ó*¨D¯L©LÖ9r'   N)r0   rî   r±  s   f r$   Útest_currentÚTestIOLoopRunSync.test_current_  s   ø€ õ	:ð 	�‰×Ñ˜aÖ r'   c                óŒ   € \         P                  R  4       pV P                  \        V P                  P
                  VRR7       R# )c               3   ó>   "  € \         P                  ! ^4      x € R# 5ir   )r   rQ   r*   r'   r$   r  Ú)TestIOLoopRunSync.test_timeout.<locals>.ff  s   é € ä—)’)˜A“,Ôùs   ‚rP   )rª   N)r   r  rl   r
   r0   rî   r±  s   & r$   Útest_timeoutÚTestIOLoopRunSync.test_timeoute  s;   € Ü	�‰ñ	ó 
ð	ð 	×Ñœ,¨¯©×(=Ñ(=¸qÈ$ÐÖOr'   c                óv   a€ \         P                  R  4       oV3R lpV P                  P                  V4       R# )c               3   ó2   "  € \         P                  x € R # 5ir)   r¶  r*   r'   r$   Úf1Ú3TestIOLoopRunSync.test_native_coroutine.<locals>.f1m  s   é € ä—*‘*Ôùs   ‚c               “   ó2   <"  € S ! 4       G R j  x€L
  R #  L5ir)   r*   )rÆ  s   €r$   Úf2Ú3TestIOLoopRunSync.test_native_coroutine.<locals>.f2q  s   øé € Ù“$�JŒJùs   ƒŽ�N)r   r  r0   rî   )r   rÉ  rÆ  s   & @r$   Útest_native_coroutineÚ'TestIOLoopRunSync.test_native_coroutinel  s2   ø€ Ü	�‰ñ	ó 
ð	õ	ð 	�‰×Ñ˜bÖ!r'   c                óì   € R  pV P                  \        4      ;_uu_ 4       pV P                  P                  V4       RRR4       R\	        XP
                  4      9   g   Q hR#   + '       g   i     L.; i)c               “   óÔ   "  € \         P                  ! R 4      G Rj  x€L
  \        P                  ! 4       P	                  4        \         P                  ! ^
4      G Rj  x€L
  R#  LG L5i)rV   N)r;  rQ   r	   rM  r6   r*   r'   r$   r  Ú1TestIOLoopRunSync.test_stop_no_timeout.<locals>.fw  sD   é € Ü—-’- Ó$×$Ð$Ü�NŠNÓ×!Ñ!Ô#Ü—-’- Ó#×#Ò#ñ %á#ùs"   ‚A(œA$�A A(ÁA&ÁA(Á&A(NzEvent loop stopped)rl   r=  r0   rî   ÚstrÚ	exception)r   r  Úcms   &  r$   Útest_stop_no_timeoutÚ&TestIOLoopRunSync.test_stop_no_timeoutv  sS   € ò	$ð
 ×Ñœ|×,Ô,°Ø�L‰L×!Ñ! !Ô$÷ -à#¤s¨2¯<©<Ó'8Ô8Ð8Ò8÷ -×,ús   ¡A#Á#A3	)r0   N)rà   rá   râ   rã   rD  rH  r¤  rª  r²  r¸  r½  rÂ  rË  rÓ  rä   rå   ræ   s   @r$   r™  r™  ?  s=   ø‡ € ò2òò.ò1ò7ò%ò!òPò"÷9ð 9r'   r™  c                   óJ   a € ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )ÚTestPeriodicCallbackMathi�  c                óª   € . pRpWAn         V FB  pVP                  V4       VP                  VP                   4       VP                   V,           pKD  	  V# )a  Simulate a series of calls to the PeriodicCallback.

Pass a list of call durations in seconds (negative values
work to simulate clock adjustments during the call, or more or
less equivalently, between calls). This method returns the
times at which each call would be made.
r‰   )Ú_next_timeoutÚ_update_nextr½   )r   ÚpcÚ	durationsr   rµ   Úds   &&&   r$   Úsimulate_callsÚ'TestPeriodicCallbackMath.simulate_calls‚  sS   € ð ˆØˆØÔÛˆAØ�O‰O˜CÔ Ø�L‰L˜×)Ñ)Ô*Ø×"Ñ" QÕ&ŠCñ ð ˆr'   c                ó   € R # r)   r*   r@   s   &r$   rf  ÚTestPeriodicCallbackMath.dummy“  s   € Ùr'   c                óŠ   € \        V P                  R 4      pV P                  V P                  V^ .^,          4      . RO4       R# )é'  N©éò  éü  é  i  é  ©r   rf  r“   rÝ  ©r   rÚ  s   & r$   Ú
test_basicÚ#TestPeriodicCallbackMath.test_basic–  s9   € Ü˜dŸj™j¨%Ó0ˆØ×ÑØ×Ñ  Q C¨!¥GÓ,Ò.Lö	
r'   c                ó„   € . ROp. ROp\        V P                  R4      pV P                  V P                  W14      V4       R# )é	   râ  N)rí  rí  r3  é   é   rï  é#   rð  r   r   r   )rä  rå  ræ  rç  i.  iL  ij  i’  iº  iÄ  iÎ  rè  )r   Úcall_durationsÚexpectedrÚ  s   &   r$   Útest_overrunÚ%TestPeriodicCallbackMath.test_overrunœ  s>   € ò Aˆò
ˆô ˜dŸj™j¨%Ó0ˆØ×Ñ˜×,Ñ,¨RÓ@À(ÖKr'   c                óÊ   € \        V P                  R 4      pV P                  V P                  V. RO4      . RO4       V P                  V P                  V. RO4      . RO4       R# )râ  N)éþÿÿÿéÿÿÿÿéýÿÿÿrö  r   rã  )iœÿÿÿr   r   )rä  rå  ræ  rè  ré  s   & r$   Útest_clock_backwardsÚ-TestPeriodicCallbackMath.test_clock_backwards±  sV   € Ü˜dŸj™j¨%Ó0ˆð
 	×ÑØ×Ñ Ò$7Ó8Ò:Xô	
ð 	×Ñ˜×,Ñ,¨R²Ó>Ò@RÖSr'   c                ó4  a€ . ROo. ROp^ .\        S4      ,          p\        V P                  RR R7      pV3R lp\        P                  ! RV4      ;_uu_ 4        V P                  V P                  W24      V4       RRR4       R#   + '       g   i     R# ; i)ç      à?râ  )Újitterc                  ó&   <€ S P                  ^ 4      # r‹  )Úpop)Úrandom_timess   €r$   Úmock_randomÚ9TestPeriodicCallbackMath.test_jitter.<locals>.mock_randomÈ  s   ø€ Ø×#Ñ# AÓ&Ð&r'   zrandom.randomN)rü  r   r   g      è?)rä  g     ô�@ræ  g     E�@)Úlenr   rf  r   Úpatchr“   rÝ  )r   rò  rñ  rÚ  r  r   s   &    @r$   Útest_jitterÚ$TestPeriodicCallbackMath.test_jitterÂ  sr   ø€ Ú(ˆÚ0ˆØ˜œs <Ó0Õ0ˆÜ˜dŸj™j¨%¸Ô<ˆõ	'ô �ZŠZ˜¨×5Õ5Ø×Ñ˜T×0Ñ0°ÓDÀhÔO÷ 6×5×5Ò5ús   Á"BÂB	c                óˆ   € \        R  \        P                  ! ^^R7      4      pRpV P                  VP                  V4       R# )c                  ó   € R # r)   r*   r*   r'   r$   r+   Ú9TestPeriodicCallbackMath.test_timedelta.<locals>.<lambda>Ï  s   € ¡dr'   )Úminutesr¹   i8D N)r   r4   r5   r“   Úcallback_time)r   rÚ  Úexpected_callback_times   &  r$   Útest_timedeltaÚ'TestPeriodicCallbackMath.test_timedeltaÎ  s9   € Ü™l¬H×,>Ò,>ÀqÐRTÔ,UÓVˆØ!&ÐØ×Ñ˜×)Ñ)Ð+AÖBr'   r*   N)rà   rá   râ   rã   rÝ  rf  rê  ró  rù  r  r  rä   rå   ræ   s   @r$   rÖ  rÖ  �  s2   ø‡ € òò"ò
òLò*Tò"
P÷Cð Cr'   rÖ  c                   óJ   a € ] tR tRt o R tV 3R lR ltV 3R lR ltRtV tR# )	ÚTestPeriodicCallbackAsynciÔ  c                ó¾   a a€ ^ oR VV 3R llp\        V^
4      pVP                  4        S P                  4        VP                  4        S P	                  S^4       R# )r   c                ó   € V ^8„  d   QhRR/# ©rº   ÚreturnNr*   )Úformats   "r$   Ú__annotate__ÚCTestPeriodicCallbackAsync.test_periodic_plain.<locals>.__annotate__Ø  s   € ÷ 	ñ 	˜$ñ 	r'   c                  óL   <€ S ^,          o S ^8X  d   SP                  4        R# R# r   ri  )r�  r   s   €€r$   r   Ú?TestPeriodicCallbackAsync.test_periodic_plain.<locals>.callbackØ  s!   ø€ à�Q�JˆEØ˜ŒzØ—	‘	–ñ r'   N)r   r7   rI   r6   r“   )r   r   rÚ  r�  s   f  @r$   Útest_periodic_plainÚ-TestPeriodicCallbackAsync.test_periodic_plainÕ  sK   ù€ Øˆ÷	ñ 	ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ
�‰Œ	Ø×Ñ˜ Ö"r'   c                ó   <€ V ^8„  d   QhRR/# r  r*   )r  rç   s   "€r$   r  Ú&TestPeriodicCallbackAsync.__annotate__ä  s   ø€ ÷ 'ñ ' Dñ 'r'   c                ó  a aa€ ^ ^ .o\         P                  R VVV 3R ll4       p\        V^
4      oSP                  4        S P	                  4        S P                  S^ ,          ^4       S P                  S^,          ^4       R# )r   c                ó   € V ^8„  d   QhRR/# )rº   r  z%Generator[Future[None], object, None]r*   )r  s   "r$   r  ÚBTestPeriodicCallbackAsync.test_periodic_coro.<locals>.__annotate__è  s   € ÷ 	5ñ 	5ÐAñ 	5r'   c               3   ó  <"  € S ^ ;;,          ^,          uu&   \         P                  ! R4      x € S ^;;,          ^,          uu&   S ^,          ^8X  d8   SP                  4        SP                  P	                  SP                  4       R# R# 5i©r   gš™™™™™™?N©r   rQ   r6   r0   r%   ©ÚcountsrÚ  r   s   €€€r$   r   Ú>TestPeriodicCallbackAsync.test_periodic_coro.<locals>.callbackç  s^   øé € à�1�I˜�N‹IÜ—)’)˜EÓ"Ò"Ø�1�I˜�N‹IØ�a�y˜AŒ~Ø—‘”	Ø—‘×)Ñ)¨$¯)©)Ö4ñ ùs   ƒB
BN)r   r  r   r7   rI   r“   ©r   r   r%  rÚ  s   f @@r$   Útest_periodic_coroÚ,TestPeriodicCallbackAsync.test_periodic_coroä  so   ú€ Ø�Q�ˆä	�‰÷	5ñ 	5ó 
ð	5ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ×Ñ˜ � AÔ&Ø×Ñ˜ � AÖ&r'   c                ó   <€ V ^8„  d   QhRR/# r  r*   )r  rç   s   "€r$   r  r  ö  s   ø€ ÷ 'ñ ' Tñ 'r'   c                óæ   a aa€ ^ ^ .oR VVV 3R llp\        V^
4      oSP                  4        S P                  4        S P                  S^ ,          ^4       S P                  S^,          ^4       R# )r   c                ó   € V ^8„  d   QhRR/# r  r*   )r  s   "r$   r  ÚCTestPeriodicCallbackAsync.test_periodic_async.<locals>.__annotate__ù  s   € ÷ 	5ñ 	5 ñ 	5r'   c               “   ó.  <"  € S ^ ;;,          ^,          uu&   \         P                  ! R4      G Rj  x€L
  S ^;;,          ^,          uu&   S ^,          ^8X  d8   SP                  4        SP                  P	                  SP                  4       R# R#  L`5ir"  r#  r$  s   €€€r$   r   Ú?TestPeriodicCallbackAsync.test_periodic_async.<locals>.callbackù  sf   øé € Ø�1�I˜�N‹IÜ—)’)˜EÓ"×"Ð"Ø�1�I˜�N‹IØ�a�y˜AŒ~Ø—‘”	Ø—‘×)Ñ)¨$¯)©)Ö4ñ ñ #ùs   ƒ/B²B³A!BN)r   r7   rI   r“   r'  s   f @@r$   Útest_periodic_asyncÚ-TestPeriodicCallbackAsync.test_periodic_asyncö  s^   ú€ Ø�Q�ˆ÷	5ò 	5ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ×Ñ˜ � AÔ&Ø×Ñ˜ � AÖ&r'   r*   N)	rà   rá   râ   rã   r  r(  r0  rä   rå   ræ   s   @r$   r  r  Ô  s   ø‡ € ò#÷'ð '÷$'ö 'r'   r  c                   ó~   a € ] tR tRt o R tR tR t]P                  ! ]	P                  R	8¬  R4      R 4       tRtV tR# )
ÚTestIOLoopConfigurationi  c                óÈ   € R R.\        V4      ,           p\        P                  RRP                  V4      .p\	        \
        P                  ! V4      4      P                  4       # )z!from tornado.ioloop import IOLoopz*classname = lambda x: x.__class__.__name__z-cz; )ÚlistÚsysÚ
executablerY   r   Ú
subprocessÚcheck_outputÚstrip)r   Ú
statementsÚ	stmt_listr    s   &*  r$   Ú
run_pythonÚ"TestIOLoopConfiguration.run_python	  sX   € à/Ø8ð
ô �Óõˆ	ô —‘  d§i¡i°	Ó&:Ð;ˆÜœ*×1Ò1°$Ó7Ó8×>Ñ>Ó@Ð@r'   c                ó’   € V P                  R 4      pV P                  VR4       V P                  R4      pV P                  VR4       R# )ú"print(classname(IOLoop.current()))ÚAsyncIOMainLoopzprint(classname(IOLoop()))ÚAsyncIOLoopN©r=  r“   ©r   Úclss   & r$   Útest_defaultÚ$TestIOLoopConfiguration.test_default  sA   € à�o‰oÐBÓCˆØ×Ñ˜Ð/Ô0Ø�o‰oÐ:Ó;ˆØ×Ñ˜˜mÖ,r'   c                óN   € V P                  R R4      pV P                  VR4       R# )z8IOLoop.configure("tornado.platform.asyncio.AsyncIOLoop")r@  rA  NrC  rD  s   & r$   Útest_asyncioÚ$TestIOLoopConfiguration.test_asyncio  s)   € Ø�o‰oØFØ0ó
ˆð 	×Ñ˜Ð/Ö0r'   z*implicit event loop creation not availablec                óP   € V P                  R RR4      pV P                  VR4       R# )z4from tornado.platform.asyncio import AsyncIOMainLoopzAsyncIOMainLoop().install()r@  rA  NrC  rD  s   & r$   Útest_asyncio_mainÚ)TestIOLoopConfiguration.test_asyncio_main  s.   € ð �o‰oØBØ)Ø0ó
ˆð
 	×Ñ˜Ð/Ö0r'   r*   N)r»   é   )rà   rá   râ   rã   r=  rF  rI  ÚunittestÚskipIfr6  Úversion_inforL  rä   rå   ræ   s   @r$   r3  r3    sC   ø‡ € òAò-ò1ð ‡_‚_Ø×Ñ˜GÑ#Ð%Qóñ1óö1r'   r3  Ú__main__)5r;  Úconcurrent.futuresr   Ú
concurrentr   Úcollections.abcr   rú   r4   r˜   r–   r8  r6  rW   rD   r1   rO  r   Útornado.escaper   Útornador   Útornado.ioloopr	   r
   r   Útornado.logr   Útornado.testingr   r   r   r   r   Útornado.test.utilr   r   Útornado.concurrentr   ÚtypingÚTYPE_CHECKINGr   r   ÚTestCaserA  rW  rc  r™  rÖ  r  r3  rà   Úmainr*   r'   r$   Ú<module>ra     s  ðÛ Ý 1Ý Ý %Û Û Û Û Û Û 
Û Û Û Ý Û å %Ý ß AÑ AÝ ÷õ ÷õ &ã à	××ÐÝôR�ô Rôn6˜×)Ñ)ô 6ôD1˜]ô 1ôM(˜ô M(ô`?9˜×)Ñ)ô ?9ôDPC˜x×0Ñ0ô PCôf1' ô 1'ôh 1˜h×/Ñ/ô  1ðF ˆzÔØ‡M‚M†Oñ r'   