Ë
    êmxi:m  ã                   óV  — d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZmZm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dl'Z'e'jP                  rd dl'm)Z)  G d„ de«      Z* G d„ dejV                  «      Z, G d„ de«      Z- G d„ de«      Z. G d„ dejV                  «      Z/ G d„ dejV                  «      Z0 G d„ de«      Z1 G d„ dejV                  «      Z2e3dk(  r ejh                  «        yy)é    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                   óÜ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zeed„ «       «       Zd„ Z y)Ú
TestIOLoopc                 óŒ  ‡‡— d| _         | j                  }| Š|j                  Šˆˆfd„}t        j                  ||«      |_        |j                  d„ «       |j                  d„ «       |j                  t        j                  d¬«      |j                  «       |j                  «        | j                  | j                   d«       y )Nr   c                 óH   •— ‰xj                   dz  c_          ‰|g|¢­i |¤Ž y ©Né   ©Úcalls)ÚselfÚcallbackÚargsÚkwargsÚold_add_callbackÚtests       €€úO/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/ioloop_test.pyÚadd_callbackzBTestIOLoop.test_add_callback_return_sequence.<locals>.add_callback1   s"   ø€ Ø�JŠJ˜!‰O�JÙ˜XÐ7¨Ò7°Ó7ó    c                  ó   — i S ©N© r)   r&   r$   ú<lambda>z>TestIOLoop.test_add_callback_return_sequence.<locals>.<lambda>6   ó   €  "€ r&   c                  ó   — g S r(   r)   r)   r&   r$   r*   z>TestIOLoop.test_add_callback_return_sequence.<locals>.<lambda>7   r+   r&   é2   )Úmillisecondsé
   )r   Úio_loopr%   ÚtypesÚ
MethodTypeÚadd_timeoutÚdatetimeÚ	timedeltaÚstopÚstartÚ
assertLess)r   Úloopr%   r"   r#   s      @@r$   Ú!test_add_callback_return_sequencez,TestIOLoop.test_add_callback_return_sequence)   s–   ù€ àˆŒ
à�|‰|ˆØˆØ×,Ñ,Ðõ	8ô "×,Ñ,¨\¸4Ó@ˆÔØ×Ñ™*Ô%Ø×Ñ™*Ô%Ø×Ñœ×+Ñ+¸Ô<¸d¿i¹iÔHØ�
‰
ŒØ�‰˜Ÿ
™
 BÕ'r&   c                 ó<  ‡ ‡— ˆ fd„Šˆˆ fd„}‰ j                   j                  ‰ j                   j                  «       |«       ‰ j                  «        ‰ j	                  t        j                  «       ‰ j
                  d¬«       ‰ j                  ‰ j                  «       y )Nc                  ó4   •— d‰ _         ‰ j                  «        y ©NT)Úcalledr6   ©r   s   €r$   r   z5TestIOLoop.test_add_callback_wakeup.<locals>.callback?   s   ø€ ØˆDŒKØ�I‰I�Kr&   c                  ó|   •— d‰_         ‰j                  j                  ‰ «       t        j                  «       ‰_        y ©NF)r>   r0   r%   ÚtimeÚ
start_time)r   r   s   €€r$   Úschedule_callbackz>TestIOLoop.test_add_callback_wakeup.<locals>.schedule_callbackC   s)   ø€ ØˆDŒKØ�L‰L×%Ñ% hÔ/ä"Ÿi™i›kˆD�Or&   é   )Úplaces)r0   r3   rB   ÚwaitÚassertAlmostEqualrC   Ú
assertTruer>   )r   rD   r   s   ` @r$   Útest_add_callback_wakeupz#TestIOLoop.test_add_callback_wakeup<   si   ù€ ô	õ	*ð 	�‰× Ñ  §¡×!2Ñ!2Ó!4Ð6GÔHØ�	‰	ŒØ×ÑœtŸy™y›{¨D¯O©OÀAÐÔFØ�‰˜Ÿ™Õ$r&   c                 ó,  ‡ — ˆ fd„}t        j                  |¬«      }‰ j                  j                  |j                  «       ‰ j                  «        t        j                  «       ‰ j                  z
  }‰ j                  |d«       |j                  «        y )Nc                  ó¬   •— t        j                  d«       t        j                   «       ‰ _        ‰ j                  j	                  ‰ j
                  «       y )Nç{®Gáz„?)rB   ÚsleepÚ	stop_timer0   r%   r6   r?   s   €r$   Útargetz@TestIOLoop.test_add_callback_wakeup_other_thread.<locals>.targetO   s2   ø€ ä�J‰J�tÔÜ!ŸY™Y›[ˆDŒNØ�L‰L×%Ñ% d§i¡iÕ0r&   ©rP   çš™™™™™¹?)
Ú	threadingÚThreadr0   r%   r7   rG   rB   rO   r8   Újoin)r   rP   ÚthreadÚdeltas   `   r$   Ú%test_add_callback_wakeup_other_threadz0TestIOLoop.test_add_callback_wakeup_other_threadN   sd   ø€ ô	1ô ×!Ñ!¨Ô0ˆØ�‰×!Ñ! &§,¡,Ô/Ø�	‰	ŒÜ—	‘	“˜dŸn™nÑ,ˆØ�‰˜˜sÔ#Ø�‰�r&   c                 ó˜   — | j                   j                  t        j                  d¬«      | j                  «       | j                  «        y )Nr   )Úmicroseconds)r0   r3   r4   r5   r6   rG   r?   s    r$   Útest_add_timeout_timedeltaz%TestIOLoop.test_add_timeout_timedelta\   s.   € Ø�‰× Ñ ¤×!3Ñ!3ÀÔ!CÀTÇYÁYÔOØ�	‰	�r&   c                 ó  — t        «       \  }}	 | j                  j                  |j                  «       d„ t        j
                  «       | j                  t        | j                  j                  |j                  «       d„ t        j
                  «       | j                  j                  |j                  «       «       |j                  «        y # | j                  j                  |j                  «       «       |j                  «        w xY w)Nc                  ó   — y r(   r)   ©ÚfdÚeventss     r$   r*   z.TestIOLoop.test_multiple_add.<locals>.<lambda>d   ó   � r&   c                  ó   — y r(   r)   r^   s     r$   r*   z.TestIOLoop.test_multiple_add.<locals>.<lambda>l   ra   r&   )
r   r0   Úadd_handlerÚfilenor	   ÚREADÚassertRaisesÚ	ExceptionÚremove_handlerÚclose©r   ÚsockÚports      r$   Útest_multiple_addzTestIOLoop.test_multiple_add`   s²   € Ü%Ó'‰
ˆˆdð	Ø�L‰L×$Ñ$Ø—‘“Ñ6¼¿¹ôð
 ×ÑÜØ—‘×(Ñ(Ø—‘“Ù'Ü—‘ôð �L‰L×'Ñ'¨¯©«Ô6Ø�J‰J�Løð �L‰L×'Ñ'¨¯©«Ô6Ø�J‰J�Lús   �BC Ã;Dc                 ó¼   — t        «       \  }}	 | j                  j                  |j                  «       «       |j	                  «        y # |j	                  «        w xY wr(   )r   r0   rh   rd   ri   rj   s      r$   Útest_remove_without_addz"TestIOLoop.test_remove_without_adds   s@   € ô &Ó'‰
ˆˆdð	Ø�L‰L×'Ñ'¨¯©«Ô6à�J‰J�LøˆD�J‰J�Lús   �)A	 Á	Ac                 ó¬   — t        «       5  | j                  j                  | j                  «       d d d «       | j	                  «        y # 1 sw Y   ŒxY wr(   )r   r0   Úadd_callback_from_signalr6   rG   r?   s    r$   Útest_add_callback_from_signalz(TestIOLoop.test_add_callback_from_signal|   s>   € ô  Ó!ñ 	=Ø�L‰L×1Ñ1°$·)±)Ô<÷	=à�	‰	�÷	=ð 	=ús   ‹&A
Á
Ac                 ó0  — t        d¬«      }t        j                  |j                  ¬«      }|j                  «        t	        «       5  |j                  |j                  «       d d d «       |j                  «        |j                  «        y # 1 sw Y   Œ*xY w)NF©Úmake_currentrQ   )	r	   rS   rT   r7   r   rq   r6   rU   ri   )r   Úother_iolooprV   s      r$   Ú*test_add_callback_from_signal_other_threadz5TestIOLoop.test_add_callback_from_signal_other_threadƒ   su   € ô ¨5Ô1ˆÜ×!Ñ!¨×);Ñ);Ô<ˆØ�‰ŒÜÓ!ñ 	EØ×1Ñ1°,×2CÑ2CÔD÷	Eà�‰ŒØ×ÑÕ÷	Eð 	Eús   ÁBÂBc                 ó  ‡‡— t        j                  «       Šˆˆfd„}t        d¬«      Št        j                  |¬«      }|j	                  «        ‰j                  «        t        d«      D ]  }‰j                  d„ «       Œ y )Nc                  ó    •— ‰j                  ‰j                  «       ‰j                  «        ‰ j                  «        ‰j	                  d¬«       y )NT©Úall_fds)r%   r6   r7   Úsetri   )Úclosingrv   s   €€r$   rP   z:TestIOLoop.test_add_callback_while_closing.<locals>.target•   s=   ø€ Ø×%Ñ% l×&7Ñ&7Ô8Ø×ÑÔ Ø�K‰KŒMØ×Ñ tÐÕ,r&   Frt   rQ   éè  c                   ó   — y r(   r)   r)   r&   r$   r*   z<TestIOLoop.test_add_callback_while_closing.<locals>.<lambda>    ra   r&   )rS   ÚEventr	   rT   r7   rG   Úranger%   )r   rP   rV   Úir}   rv   s       @@r$   Útest_add_callback_while_closingz*TestIOLoop.test_add_callback_while_closing�   se   ù€ ô —/‘/Ó#ˆõ	-ô ¨5Ô1ˆÜ×!Ñ!¨Ô0ˆØ�‰ŒØ�‰ŒÜ�t“ò 	4ˆAØ×%Ñ%¡lÕ3ñ	4r&   c                 óX  ‡ — t        j                  «       \  }}	 ˆ fd„}‰ j                  j                  |j	                  «       |t
        j                  «       ‰ j                  j                  ‰ j                  j                  «       dz   t        j                  |j                  d«      «       ‰ j                  «        ‰ j                  j                  |j	                  «       «       |j                  «        |j                  «        y # |j                  «        |j                  «        w xY w)Nc                 óf   •— ‰j                  |t        j                  «       ‰j                  «        y r(   )ÚassertEqualr	   re   r6   )r_   r`   r   s     €r$   Úhandlerz5TestIOLoop.test_read_while_writeable.<locals>.handlerª   s    ø€ Ø× Ñ  ¬¯©Ô5Ø—	‘	•r&   rM   s   asdf)ÚsocketÚ
socketpairr0   rc   rd   r	   re   r3   rB   Ú	functoolsÚpartialÚsendrG   rh   ri   )r   ÚclientÚserverr‡   s   `   r$   Útest_read_while_writeablez$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 Ä"D)c                 óÖ   — | j                   j                  | j                   j                  «       | j                  «      }| j	                  «        | j                   j                  |«       y r(   )r0   r3   rB   r6   rG   Úremove_timeout©r   Úhandles     r$   Útest_remove_timeout_after_firez)TestIOLoop.test_remove_timeout_after_fire¸   sD   € à—‘×)Ñ)¨$¯,©,×*;Ñ*;Ó*=¸t¿y¹yÓIˆØ�	‰	ŒØ�‰×#Ñ# FÕ+r&   c                 ó(  ‡ — t        d«      D ]U  }‰ j                  j                  ‰ j                  j                  «       dz   d„ «      }‰ j                  j	                  |«       ŒW ‰ j                  j                  ˆ fd„«       ‰ j                  «        y )NiÐ  i  c                   ó   — y r(   r)   r)   r&   r$   r*   z8TestIOLoop.test_remove_timeout_cleanup.<locals>.<lambda>Å   ra   r&   c                  óN   •— ‰ j                   j                  ‰ j                  «      S r(   ©r0   r%   r6   r?   s   €r$   r*   z8TestIOLoop.test_remove_timeout_cleanup.<locals>.<lambda>È   s   ø€ ¨$¯,©,×*CÑ*CÀDÇIÁIÓ*N€ r&   )r�   r0   r3   rB   r‘   r%   rG   )r   r‚   Útimeouts   `  r$   Útest_remove_timeout_cleanupz&TestIOLoop.test_remove_timeout_cleanup¾   sp   ø€ ô �t“ò 	1ˆAØ—l‘l×.Ñ.¨t¯|©|×/@Ñ/@Ó/BÀTÑ/IÉ<ÓXˆGØ�L‰L×'Ñ'¨Õ0ð	1ð 	�‰×!Ñ!Ó"NÔOØ�	‰	�r&   c                 óž  ‡ ‡‡— ddgŠ‰ j                   j                  «       }ˆˆ ˆfd„}‰ j                   j                  |dz   |«       ˆfd„}‰ j                   j                  |dz   |«      Š‰ j                   j                  |dz   ‰ j                  «       t        j                  d«       ‰ j                  «        ‰ j                  ‰ddg«       y )NFc                  óF   •— d‰ d<   ‰j                   j                  ‰«       y ©NTr   )r0   r‘   )r   r   Ú	t2_handles   €€€r$   Út1z7TestIOLoop.test_remove_timeout_from_timeout.<locals>.t1Ó   s   ø€ ØˆE�!‰HØ�L‰L×'Ñ'¨	Õ2r&   rM   c                  ó   •— d‰ d<   y )NTr   r)   r   s   €r$   Út2z7TestIOLoop.test_remove_timeout_from_timeout.<locals>.t2Ù   s   ø€ ØˆE�!ŠHr&   g{®Gáz”?g¸…ëQ¸ž?T)r0   rB   r3   r6   rN   rG   r†   )r   ÚnowrŸ   r¡   r   rž   s   `   @@r$   Ú test_remove_timeout_from_timeoutz+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                 ón  — g }| j                   j                  | j                   j                  «       |j                  d«       | j                   j                  t	        j
                  d¬«      |j                  d«       | j                   j                  | j                   j                  «       |j                  d«       | j                   j                  d|j                  d«       | j                   j                  d| j                  «       | j                  «        | j                  t        |«      g d¢«       y )Nr   r   )ÚsecondsrE   é   é   )r   rE   r¦   r§   )r0   r3   rB   Úappendr4   r5   Úcall_atÚ
call_laterr6   rG   r†   Úsorted)r   Úresultss     r$   Útest_timeout_with_argumentsz&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                 óÆ   — | j                   j                  | j                   j                  «       d„ «      }| j                  |«       | j                   j	                  |«       y )Nc                   ó   — y r(   r)   r)   r&   r$   r*   z4TestIOLoop.test_add_timeout_return.<locals>.<lambda>ò   ra   r&   )r0   r3   rB   ÚassertIsNotNoner‘   r’   s     r$   Útest_add_timeout_returnz"TestIOLoop.test_add_timeout_returnï   sG   € ð —‘×)Ñ)¨$¯,©,×*;Ñ*;Ó*=¹|ÓLˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÕ+r&   c                 óÆ   — | j                   j                  | j                   j                  «       d„ «      }| j                  |«       | j                   j	                  |«       y )Nc                   ó   — y r(   r)   r)   r&   r$   r*   z0TestIOLoop.test_call_at_return.<locals>.<lambda>÷   ra   r&   )r0   r©   rB   r°   r‘   r’   s     r$   Útest_call_at_returnzTestIOLoop.test_call_at_returnö   sE   € Ø—‘×%Ñ% d§l¡l×&7Ñ&7Ó&9¹<ÓHˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÕ+r&   c                 ó–   — | j                   j                  dd„ «      }| j                  |«       | j                   j                  |«       y )Nr   c                   ó   — y r(   r)   r)   r&   r$   r*   z3TestIOLoop.test_call_later_return.<locals>.<lambda>ü   ra   r&   )r0   rª   r°   r‘   r’   s     r$   Útest_call_later_returnz!TestIOLoop.test_call_later_returnû   s8   € Ø—‘×(Ñ(¨©LÓ9ˆØ×Ñ˜VÔ$Ø�‰×#Ñ# FÕ+r&   c                 óâ   ‡‡—  G d„ d«      }t        «       \  }} ||«      Št        d¬«      Š‰j                  ˆˆfd„«       ‰j                  d¬«       | j	                  ‰j
                  «       y)	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                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ú8TestIOLoop.test_close_file_object.<locals>.SocketWrapperc                 ó    — || _         d| _        y rA   )ÚsockobjÚclosed)r   r¼   s     r$   Ú__init__zATestIOLoop.test_close_file_object.<locals>.SocketWrapper.__init__
  s   € Ø&�”Ø#�•r&   c                 ó6   — | j                   j                  «       S r(   )r¼   rd   r?   s    r$   rd   z?TestIOLoop.test_close_file_object.<locals>.SocketWrapper.fileno  s   € Ø—|‘|×*Ñ*Ó,Ð,r&   c                 óF   — d| _         | j                  j                  «        y r=   )r½   r¼   ri   r?   s    r$   ri   z>TestIOLoop.test_close_file_object.<locals>.SocketWrapper.close  s   € Ø"�”Ø—‘×"Ñ"Õ$r&   N)Ú__name__Ú
__module__Ú__qualname__r¾   rd   ri   r)   r&   r$   ÚSocketWrapperrº   	  s   „ ò$ò-ó%r&   rÄ   Frt   c                  óH   •— ‰ j                  ‰d„ t        j                  «      S )Nc                  ó   — y r(   r)   r^   s     r$   r*   zETestIOLoop.test_close_file_object.<locals>.<lambda>.<locals>.<lambda>  ra   r&   )rc   r	   re   )r0   Úsocket_wrappers   €€r$   r*   z3TestIOLoop.test_close_file_object.<locals>.<lambda>  s   ø€ �G×'Ñ'ØÑ 7¼¿¹ó€ r&   Trz   N)r   r	   Úrun_syncri   rI   r½   )r   rÄ   r¼   rl   r0   rÇ   s       @@r$   Útest_close_file_objectz!TestIOLoop.test_close_file_object   sd   ù€ ÷
	%ñ 
	%ô )Ó*‰ˆ�Ù& wÓ/ˆÜ eÔ,ˆØ×Ñôô	
ð
 	�‰˜dˆÔ#Ø�‰˜×-Ñ-Õ.r&   c                 ó”  ‡ ‡‡— t        «       \  Š}g Šˆˆ ˆfd„}‰ j                  j                  ‰|t        j                  «       t        j                  t        j                  «       «      5 }|j                  d|f«       ‰ j                  «        ddd«       ‰ j                  j                  ‰«       ‰ j                  j                  ‰j                  «       |t        j                  «       t        j                  t        j                  «       «      5 }|j                  d|f«       ‰ j                  «        ddd«       ‰ j                  ‰d   ‰«       ‰ j                  ‰d   ‰j                  «       «       ‰ j                  j                  ‰j                  «       «       ‰j                  «        y# 1 sw Y   �Œ#xY w# 1 sw Y   ŒˆxY w)z>The handler callback receives the same fd object it passed in.c                 óŽ   •— ‰j                  | «       ‰j                  «       \  }}|j                  «        ‰j                  «        y r(   )r¨   Úacceptri   r6   )r_   r`   ÚconnÚaddrÚfdsr   Úserver_socks       €€€r$   Úhandle_connectionzGTestIOLoop.test_handler_callback_file_object.<locals>.handle_connection%  s2   ø€ Ø�J‰J�rŒNØ$×+Ñ+Ó-‰JˆD�$Ø�J‰JŒLØ�I‰I�Kr&   z	127.0.0.1Nr   r   )r   r0   rc   r	   re   Ú
contextlibr}   rˆ   ÚconnectrG   rh   rd   ÚassertIsr†   ri   )r   rl   rÑ   Úclient_sockrÏ   rÐ   s   `   @@r$   Ú!test_handler_callback_file_objectz,TestIOLoop.test_handler_callback_file_object   sU  ú€ ä,Ó.Ñˆ�TØˆö	ð 	�‰× Ñ  Ð.?ÄÇÁÔMÜ×Ñ¤§¡£Ó0ð 	°KØ×Ñ ¨dÐ 3Ô4Ø�I‰IŒK÷	ð 	�‰×#Ñ# KÔ0Ø�‰× Ñ  ×!3Ñ!3Ó!5Ð7HÌ&Ï+É+ÔVÜ×Ñ¤§¡£Ó0ð 	°KØ×Ñ ¨dÐ 3Ô4Ø�I‰IŒK÷	ð 	�‰�c˜!‘f˜kÔ*Ø×Ñ˜˜Q™ ×!3Ñ!3Ó!5Ô6Ø�‰×#Ñ# K×$6Ñ$6Ó$8Ô9Ø×ÑÕ÷	ñ 	ú÷
	ð 	ús   Á,$F1Ä$F>Æ1F;Æ>Gc                 ó²  — t        «       \  }}d„ }| j                  j                  ||t        j                  «       | j                  t        «      5  | j                  j                  |j                  «       |t        j                  «       d d d «       | j                  j                  |j                  «       «       |j                  «        y # 1 sw Y   ŒCxY w)Nc                  ó   — y r(   r)   r^   s     r$   Úfz+TestIOLoop.test_mixed_fd_fileobj.<locals>.f<  s   € Ør&   )
r   r0   rc   r	   re   rf   rg   rd   rh   ri   )r   rÐ   rl   rÙ   s       r$   Útest_mixed_fd_fileobjz TestIOLoop.test_mixed_fd_fileobj9  s¥   € Ü,Ó.Ñˆ�Tò	ð 	�‰× Ñ  ¨a´·±Ô=Ø×ÑœyÓ)ñ 	Kð �L‰L×$Ñ$ [×%7Ñ%7Ó%9¸1¼f¿k¹kÔJ÷	Kð 	�‰×#Ñ# K×$6Ñ$6Ó$8Ô9Ø×ÑÕ÷	Kð 	Kús   Á:CÃCc                 óÊ   ‡ ‡‡— dgŠdgŠˆˆˆ fd„}‰ j                   j                  |«       ‰ j                  «        ‰ j                  ‰d   «       ‰ j	                  ‰d   «       y)z:Calling start() twice should raise an error, not deadlock.Fc                  óŽ   •— 	 ‰j                   j                  «        d‰d<   ‰j                  «        y # t        $ r d‰ d<   Y Œ!w xY wr�   )r0   r7   rg   r6   )Úgot_exceptionÚreturned_from_startr   s   €€€r$   r   z+TestIOLoop.test_reentrant.<locals>.callbackL  sI   ø€ ð(Ø—‘×"Ñ"Ô$Ø)-Ð# AÑ&ð �I‰I�Køô ò (Ø#'�˜aÓ ð(ús   ƒ3 ³AÁAr   N)r0   r%   rG   rI   ÚassertFalse)r   r   rÝ   rÞ   s   ` @@r$   Útest_reentrantzTestIOLoop.test_reentrantG  sY   ú€ à$˜gÐØ˜ˆö	ð 	�‰×!Ñ! (Ô+Ø�	‰	ŒØ�‰˜ aÑ(Ô)Ø×ÑÐ,¨QÑ/Õ0r&   c                 óð   — | j                   j                  d„ «       | j                   j                  | j                  «       t        t        d«      5  | j                  «        ddd«       y# 1 sw Y   yxY w)z-Uncaught exceptions get logged by the IOLoop.c                  ó   — ddz  S ©Nr   r   r)   r)   r&   r$   r*   z3TestIOLoop.test_exception_logging.<locals>.<lambda>[  ó
   € ¨!¨a©%€ r&   úException in callbackN)r0   r%   r6   r   r   rG   r?   s    r$   Útest_exception_loggingz!TestIOLoop.test_exception_loggingY  sS   € à�‰×!Ñ!¡-Ô0Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7Ó8ñ 	Ø�I‰IŒK÷	÷ 	ñ 	ús   ÁA,Á,A5c                 óÖ   ‡ — t         j                  ˆ fd„«       }‰ j                  j                  |«       t	        t
        d«      5  ‰ j                  «        ddd«       y# 1 sw Y   yxY w)z:The IOLoop examines exceptions from Futures and logs them.c                  óZ   •— ‰ j                   j                  ‰ j                  «       ddz   y rã   r˜   r?   s   €r$   r   z:TestIOLoop.test_exception_logging_future.<locals>.callbackc  s    ø€ à�L‰L×%Ñ% d§i¡iÔ0Ø�‹Er&   rå   N)r   Ú	coroutiner0   r%   r   r   rG   ©r   r   s   ` r$   Útest_exception_logging_futurez(TestIOLoop.test_exception_logging_future`  sX   ø€ ô 
�‰ó	ó 
ð	ð 	�‰×!Ñ! (Ô+Ü”wÐ 7Ó8ñ 	Ø�I‰IŒK÷	÷ 	ñ 	ús   ÁAÁA(c                 ó°   ‡ — ˆ fd„}‰ j                   j                  |«       t        t        d«      5  ‰ j	                  «        ddd«       y# 1 sw Y   yxY w)z=The IOLoop examines exceptions from awaitables and logs them.c               “   óŒ   •K  — ‰ j                   j                  ‰ j                   j                  ‰ j                  «       ddz   y ­wrã   r˜   r?   s   €r$   r   z?TestIOLoop.test_exception_logging_native_coro.<locals>.callbacko  s2   øè ø€ ð �L‰L×%Ñ% d§l¡l×&?Ñ&?ÀÇÁÔKØ�‹Eùs   ƒAArå   N)r0   r%   r   r   rG   rê   s   ` r$   Ú"test_exception_logging_native_coroz-TestIOLoop.test_exception_logging_native_corol  sE   ø€ ô	ð 	�‰×!Ñ! (Ô+Ü”wÐ 7Ó8ñ 	Ø�I‰IŒK÷	÷ 	ñ 	ús   ²AÁAc                 óÜ  — | j                   j                  d„ «       | j                   j                  | j                  «       t        t        d«      5  | j                  «        d d d «       | j                   j                  d„ «       | j                   j                  | j                  «       t        t        d«      5  | j                  «        d d d «       y # 1 sw Y   ŒtxY w# 1 sw Y   y xY w)Nc                  ó   — ddz  S rã   r)   r)   r&   r$   r*   z0TestIOLoop.test_spawn_callback.<locals>.<lambda>|  rä   r&   rå   c                  ó   — ddz  S rã   r)   r)   r&   r$   r*   z0TestIOLoop.test_spawn_callback.<locals>.<lambda>‚  s
   € ¨A°©E€ r&   )r0   r%   r6   r   r   rG   Úspawn_callbackr?   s    r$   Útest_spawn_callbackzTestIOLoop.test_spawn_callbacky  s­   € ð 	�‰×!Ñ!¡-Ô0Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7Ó8ñ 	Ø�I‰IŒK÷	ð 	�‰×#Ñ#¡MÔ2Ø�‰×!Ñ! $§)¡)Ô,Ü”wÐ 7Ó8ñ 	Ø�I‰IŒK÷	ð 	÷	ð 	ú÷	ð 	ús   ÁCÂ<C"ÃCÃ"C+c                 ót  ‡ ‡‡‡— t        j                  «       \  ŠŠ	 ‰j                  d«       ‰j                  d«       g Šˆˆˆ ˆfd„}‰ j                  j	                  ‰|‰ j                  j
                  «       ‰ j                  j	                  ‰|‰ j                  j
                  «       ‰ j                  j                  d‰ j                  «       ‰ j                  «        ‰ j                  ‰dg«       ‰j                  «        ‰j                  «        y # ‰j                  «        ‰j                  «        w xY w)Ns   abcc                 ó¼   •— ‰j                  | j                  d«      «       | ‰u r‰j                  j                  ‰«       y ‰j                  j                  ‰«       y )Ni   )r¨   Úrecvr0   rh   )r_   r`   Úchunksr�   r   rŽ   s     €€€€r$   Úhandle_readz@TestIOLoop.test_remove_handler_from_handler.<locals>.handle_read’  sB   ø€ Ø—‘˜bŸg™g d›mÔ,Ø˜‘<Ø—L‘L×/Ñ/°Õ7à—L‘L×/Ñ/°Õ7r&   rR   )rˆ   r‰   rŒ   r0   rc   re   rª   r6   rG   r†   ri   )r   rø   r÷   r�   rŽ   s   ` @@@r$   Ú test_remove_handler_from_handlerz+TestIOLoop.test_remove_handler_from_handler‡  sß   û€ ô  ×*Ñ*Ó,‰ˆ�ð	Ø�K‰K˜ÔØ�K‰K˜Ôð ˆF÷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 Ä"D7c           	   #   ó¬   K  — d„ }t        j                  t        d«      D �cg c]  }| j                  j	                  d |«      ‘Œ  c}«      –— y c c}w ­w)Nc                  ó\   — t        d«      D ]  } t        d¬«      }|j                  «        Œ  y )Nr/   Frt   )r�   r	   ri   )r‚   r9   s     r$   rÙ   z*TestIOLoop.test_init_close_race.<locals>.f¬  s(   € Ü˜2“Yò �Ü¨5Ô1�Ø—
‘
•ñr&   rE   )r   Úmultir�   r0   Úrun_in_executor)r   rÙ   r‚   s      r$   Útest_init_close_racezTestIOLoop.test_init_close_race¤  s?   è ø€ ò	ô
 �i‰iÌÈaËÖQÀ1˜Ÿ™×5Ñ5°d¸AÕ>ÒQÓRÓRùÒQùs   ‚ A¢#AÁAc                 óô   — t        j                  «       }t        |d¬«      }|j                  |u sJ ‚| j	                  t
        «      5  t        |d¬«       d d d «       |j                  «        y # 1 sw Y   ŒxY w)NF)Úasyncio_loopru   )ÚasyncioÚnew_event_loopr	   r   rf   ÚRuntimeErrorri   )r   r   r9   s      r$   Útest_explicit_asyncio_loopz%TestIOLoop.test_explicit_asyncio_loop³  sl   € Ü×-Ñ-Ó/ˆÜ <¸eÔDˆØ× Ñ  LÑ0Ð0Ð0Ø×Ñœ|Ó,ñ 	Bä ¸5ÕA÷	Bð 	�
‰
�÷	Bð 	Bús   ÁA.Á.A7N)!rÁ   rÂ   rÃ   r:   rJ   rX   r[   rm   ro   rr   rw   rƒ   r   r�   r”   rš   r£   r­   r±   r´   r·   rÉ   rÖ   rÚ   rà   ræ   rë   rî   ró   rù   r   rþ   r  r)   r&   r$   r   r   (   sÆ   „ ò(ò&%ò$òòò&òò
ò4ð& ñó ðò*,òò/ò.8ò,ò,ò
,ò
/ò@ò2ò1ò$ò
òòð ñó ðð8 ØñSó ó ðSór&   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestIOLoopCurrentc                 ób   — t        | t        «       «       d | _        t        j                  «        y r(   )r   r   r0   r	   Úclear_currentr?   s    r$   ÚsetUpzTestIOLoopCurrent.setUpÀ  s#   € Ü" 4Ô);Ó)=Ô>ØˆŒÜ×ÑÕr&   c                 óR   — | j                   �| j                   j                  «        y y r(   ©r0   ri   r?   s    r$   ÚtearDownzTestIOLoopCurrent.tearDownÅ  s!   € Ø�<‰<Ð#Ø�L‰L×ÑÕ ð $r&   c                 óœ  ‡ — t        d¬«      ‰ _        ‰ j                  t        j                  d¬«      «       t	        d«      D ]‡  }ˆ fd„}‰ j                  j                  |«       ‰ j                  j                  «        ‰ j                  ‰ j                  ‰ j                  «       ‰ j                  t        j                  d¬«      «       Œ‰ y )NFrt   )Úinstancer¦   c                  óˆ   •— t        j                  «       ‰ _        ‰ j                  €J ‚‰ j                  j	                  «        y r(   )r	   ÚcurrentÚcurrent_io_loopr0   r6   r?   s   €r$   rÙ   z-TestIOLoopCurrent.test_non_current.<locals>.fÑ  s2   ø€ Ü'-§~¡~Ó'7�Ô$Ø—|‘|Ð/Ð/Ð/Ø—‘×!Ñ!Õ#r&   )	r	   r0   ÚassertIsNoner  r�   r%   r7   rÔ   r  )r   r‚   rÙ   s   `  r$   Útest_non_currentz"TestIOLoopCurrent.test_non_currentÉ  s“   ø€ Ü¨5Ô1ˆŒà×Ñœ&Ÿ.™.°%Ô8Ô9ô �q“ò 	>ˆAô$ð
 �L‰L×%Ñ% aÔ(Ø�L‰L×ÑÔ Ø�M‰M˜$×.Ñ.°·±Ô=à×ÑœfŸn™n°eÔ<Õ=ñ	>r&   c                 ó‚   — t        d¬«      | _        | j                  | j                  t        j                  «       «       y )NTrt   )r	   r0   rÔ   r  r?   s    r$   Útest_force_currentz$TestIOLoopCurrent.test_force_currentÜ  s'   € Ü¨4Ô0ˆŒØ�‰�d—l‘l¤F§N¡NÓ$4Õ5r&   N)rÁ   rÂ   rÃ   r	  r  r  r  r)   r&   r$   r  r  ¿  s   „ òò
!ò>ó&6r&   r  c                   ó.   ‡ — e Zd Zˆ fd„Zed„ «       Zˆ xZS )ÚTestIOLoopCurrentAsyncc                 óJ   •— t         ‰| �  «        t        | t        «       «       y r(   )Úsuperr	  r   r   )r   Ú	__class__s    €r$   r	  zTestIOLoopCurrentAsync.setUpâ  s   ø€ Ü‰‰ŒÜ" 4Ô);Ó)=Õ>r&   c              #   óŽ   K  — t        d«      5 }|j                  t        j                  «      –— d d d «       y # 1 sw Y   y xY w­wr   )r   Úsubmitr	   r  )r   Úes     r$   Útest_clear_without_currentz1TestIOLoopCurrentAsync.test_clear_without_currentæ  s;   è ø€ ô
   Ó"ð 	1 aØ—(‘(œ6×/Ñ/Ó0Ò0÷	1÷ 	1ñ 	1üs   ‚AŽ"9°	A¹A¾A)rÁ   rÂ   rÃ   r	  r   r  Ú__classcell__)r  s   @r$   r  r  á  s   ø„ ô?ð ñ1ó ô1r&   r  c                   óB   — e Zd Zd„ Zed„ «       Zed„ «       Zed„ «       Zy)ÚTestIOLoopFuturesc                 óX  ‡ — t        j                  d«      5 }d„ }‰ j                  j                  |j	                  |«      ˆ fd„«       ‰ j                  «       }‰ j                  |j                  «       «       ‰ j                  |j                  «       «       d d d «       y # 1 sw Y   y xY w)Nr   c                   ó   — y r(   r)   r)   r&   r$   Údummyz8TestIOLoopFutures.test_add_future_threads.<locals>.dummyó  s   € Ør&   c                 ó&   •— ‰j                  | «      S r(   ©r6   )Úfuturer   s    €r$   r*   z;TestIOLoopFutures.test_add_future_threads.<locals>.<lambda>÷  s   ø€ °4·9±9¸VÓ3D€ r&   )
r   r   r0   Ú
add_futurer  rG   rI   Údoner  Úresult)r   Úpoolr$  r'  s   `   r$   Útest_add_future_threadsz)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              #   ó&  K  — t        j                  «       }t        j                  «       }d„ }t        j                  «       j	                  d |||«      t        j                  «       j	                  d |||«      g–—}| j                  ||g|«       y ­w)Nc                 óF   — | j                  «        |j                  «        | S r(   ©r|   rG   ©Ú
self_eventÚother_events     r$   Ú	sync_funcz=TestIOLoopFutures.test_run_in_executor_gen.<locals>.sync_func  s    € Ø�N‰NÔØ×ÑÔð Ðr&   )rS   r€   r	   r  rý   r†   )r   Úevent1Úevent2r3  Úress        r$   Útest_run_in_executor_genz*TestIOLoopFutures.test_run_in_executor_gený  s~   è ø€ ä—‘Ó"ˆÜ—‘Ó"ˆò	ô �N‰NÓ×,Ñ,¨T°9¸fÀfÓMÜ�N‰NÓ×,Ñ,¨T°9¸fÀfÓMð
ñ 
ˆð
 	×Ñ˜& &Ð)¨3Õ/ùs   ‚BBc              #   ó¾   ‡K  — t        j                  «       }t        j                  «       }d„ Šˆfd„} |||«       |||«      g–—}| j                  ||g|«       y ­w)Nc                 óF   — | j                  «        |j                  «        | S r(   r/  r0  s     r$   r3  z@TestIOLoopFutures.test_run_in_executor_native.<locals>.sync_func  s   € Ø�N‰NÔØ×ÑÔØÐr&   c              “   ól   •K  — t        j                  «       j                  d ‰| |«      ƒ d {  –—† S 7 Œ­wr(   )r	   r  rý   )r1  r2  r3  s     €r$   Úasync_wrapperzDTestIOLoopFutures.test_run_in_executor_native.<locals>.async_wrapper   s4   øè ø€ ÜŸ™Ó)×9Ñ9Ø�i ¨[ó÷ ð ð ús   ƒ*4­2®4)rS   r€   r†   )r   r4  r5  r;  r6  r3  s        @r$   Útest_run_in_executor_nativez-TestIOLoopFutures.test_run_in_executor_native  s[   øè ø€ ä—‘Ó"ˆÜ—‘Ó"ˆò	ô	ñ
 # 6¨6Ó2±MÀ&È&Ó4QÐRÑRˆà×Ñ˜& &Ð)¨3Õ/ùs   ƒAAc              #   óh  ‡‡K  — dgŠ G ˆfd„dt         j                  «      }t        j                  «       Šˆfd„} |d«      }t	        j
                  «       }|j                  |«       |j                  d |«      –— | j                  d‰d   «       | j                  ‰j                  «       «       y ­w)Nr   c                   ó"   •‡ — e Zd Zˆ ˆfd„Zˆ xZS )ú?TestIOLoopFutures.test_set_default_executor.<locals>.MyExecutorc                 ó>   •— ‰dxx   dz  cc<   t        ‰| �  |g|¢­Ž S )Nr   r   )r  r  )r   Úfuncr    r  Úcounts      €€r$   r  zFTestIOLoopFutures.test_set_default_executor.<locals>.MyExecutor.submit.  s$   ø€ Ø�a“˜A‘“Ü‘w‘~ dÐ2¨TÒ2Ð2r&   )rÁ   rÂ   rÃ   r  r  )r  rB  s   @€r$   Ú
MyExecutorr?  -  s   ù„ ÷3ñ 3r&   rC  c                  ó&   •— ‰ j                  «        y r(   )r|   )Úevents   €r$   r3  z>TestIOLoopFutures.test_set_default_executor.<locals>.sync_func4  s   ø€ Ø�I‰I�Kr&   r   )r   r   rS   r€   r	   r  Úset_default_executorrý   r†   rI   Úis_set)r   rC  r3  Úexecutorr9   rB  rE  s        @@r$   Útest_set_default_executorz+TestIOLoopFutures.test_set_default_executor)  s‘   ùè ø€ à�ˆö	3œ×3Ñ3ô 	3ô
 —‘Ó!ˆô	ñ ˜a“=ˆÜ�~‰~ÓˆØ×!Ñ! (Ô+Ø×"Ñ" 4¨Ó3Ò3Ø×Ñ˜˜E !™HÔ%Ø�‰˜Ÿ™›Õ'ùs   „B.B2N)rÁ   rÂ   rÃ   r,  r   r7  r<  rI  r)   r&   r$   r!  r!  ï  sC   „ ò/ð ñ0ó ð0ð* ñ0ó ð0ð* ñ(ó ñ(r&   r!  c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚTestIOLoopRunSyncc                 ó&   — t        d¬«      | _        y )NFrt   )r	   r0   r?   s    r$   r	  zTestIOLoopRunSync.setUp@  s   € Ü¨5Ô1ˆ�r&   c                 ó8   — | j                   j                  «        y r(   r  r?   s    r$   r  zTestIOLoopRunSync.tearDownC  s   € Ø�‰×ÑÕr&   c                 ó¤   — | j                  t        j                  «      5  | j                  j	                  d„ «       d d d «       y # 1 sw Y   y xY w)Nc                   ó   — y©Né*   r)   r)   r&   r$   r*   z4TestIOLoopRunSync.test_sync_result.<locals>.<lambda>H  ra   r&   )rf   r   ÚBadYieldErrorr0   rÈ   r?   s    r$   Útest_sync_resultz"TestIOLoopRunSync.test_sync_resultF  s=   € Ø×Ñœs×0Ñ0Ó1ñ 	.Ø�L‰L×!Ñ!¡*Ô-÷	.÷ 	.ñ 	.ús    AÁAc                 ó�   — | j                  t        «      5  | j                  j                  d„ «       d d d «       y # 1 sw Y   y xY w)Nc                  ó   — ddz  S rã   r)   r)   r&   r$   r*   z7TestIOLoopRunSync.test_sync_exception.<locals>.<lambda>L  rä   r&   )rf   ÚZeroDivisionErrorr0   rÈ   r?   s    r$   Útest_sync_exceptionz%TestIOLoopRunSync.test_sync_exceptionJ  s8   € Ø×ÑÔ0Ó1ñ 	1Ø�L‰L×!Ñ!¡-Ô0÷	1÷ 	1ñ 	1ús	   –<¼Ac                 ó†   — t         j                  d„ «       }| j                  | j                  j	                  |«      d«       y )Nc               3   óX   K  — t         j                  –— t        j                  d«      ‚­wrP  )r   ÚmomentÚReturnr)   r&   r$   rÙ   z.TestIOLoopRunSync.test_async_result.<locals>.fO  s   è ø€ ä—*‘*ÒÜ—*‘*˜R“.Ð ùs   ‚(*rQ  )r   ré   r†   r0   rÈ   ©r   rÙ   s     r$   Útest_async_resultz#TestIOLoopRunSync.test_async_resultN  s9   € Ü	�‰ñ	!ó 
ð	!ð 	×Ñ˜Ÿ™×.Ñ.¨qÓ1°2Õ6r&   c                 óº   — t         j                  d„ «       }| j                  t        «      5  | j                  j                  |«       d d d «       y # 1 sw Y   y xY w)Nc               3   ó:   K  — t         j                  –— ddz   y ­wrã   ©r   rZ  r)   r&   r$   rÙ   z1TestIOLoopRunSync.test_async_exception.<locals>.fW  s   è ø€ ä—*‘*ÒØ�‹Eùó   ‚)r   ré   rf   rV  r0   rÈ   r\  s     r$   Útest_async_exceptionz&TestIOLoopRunSync.test_async_exceptionV  sP   € Ü	�‰ñ	ó 
ð	ð ×ÑÔ0Ó1ñ 	%Ø�L‰L×!Ñ! !Ô$÷	%÷ 	%ñ 	%ús   ¬AÁAc                 óF   ‡ — ˆ fd„}‰ j                   j                  |«       y )Nc                  ób   •— ‰ j                  t        j                  «       ‰ j                  «       y r(   )rÔ   r	   r  r0   r?   s   €r$   rÙ   z)TestIOLoopRunSync.test_current.<locals>.f`  s   ø€ Ø�M‰Mœ&Ÿ.™.Ó*¨D¯L©LÕ9r&   )r0   rÈ   r\  s   ` r$   Útest_currentzTestIOLoopRunSync.test_current_  s   ø€ ô	:ð 	�‰×Ñ˜aÕ r&   c                 óŠ   — t         j                  d„ «       }| j                  t        | j                  j
                  |d¬«       y )Nc               3   ó:   K  — t        j                  d«      –— y ­wr   )r   rN   r)   r&   r$   rÙ   z)TestIOLoopRunSync.test_timeout.<locals>.ff  s   è ø€ ä—)‘)˜A“,Óùra  rM   )r™   )r   ré   rf   r
   r0   rÈ   r\  s     r$   Útest_timeoutzTestIOLoopRunSync.test_timeoute  s;   € Ü	�‰ñ	ó 
ð	ð 	×Ñœ,¨¯©×(=Ñ(=¸qÈ$ÐÕOr&   c                 ór   ‡— t         j                  d„ «       Šˆfd„}| j                  j                  |«       y )Nc               3   ó0   K  — t         j                  –— y ­wr(   r`  r)   r&   r$   Úf1z3TestIOLoopRunSync.test_native_coroutine.<locals>.f1m  s   è ø€ ä—*‘*Óùs   ‚c               “   ó0   •K  —  ‰ «       ƒ d {  –—†  y 7 Œ­wr(   r)   )rk  s   €r$   Úf2z3TestIOLoopRunSync.test_native_coroutine.<locals>.f2q  s   øè ø€ Ù“$�JŠJús   ƒŽ�)r   ré   r0   rÈ   )r   rm  rk  s     @r$   Útest_native_coroutinez'TestIOLoopRunSync.test_native_coroutinel  s2   ø€ Ü	�‰ñ	ó 
ð	ô	ð 	�‰×Ñ˜bÕ!r&   c                 óÆ   — d„ }| j                  t        «      5 }| j                  j                  |«       d d d «       dt	        j
                  «      v sJ ‚y # 1 sw Y   Œ#xY w)Nc               “   óÌ   K  — t        j                  d«      ƒ d {  –—†  t        j                  «       j	                  «        t        j                  d«      ƒ d {  –—†  y 7 ŒD7 Œ­w)NrR   r/   )r  rN   r	   r  r6   r)   r&   r$   rÙ   z1TestIOLoopRunSync.test_stop_no_timeout.<locals>.fw  sF   è ø€ Ü—-‘- Ó$×$Ð$Ü�N‰NÓ×!Ñ!Ô#Ü—-‘- Ó#×#Ñ#ð %øà#ús!   ‚A$›A œ>A$ÁA"ÁA$Á"A$zEvent loop stopped)rf   r  r0   rÈ   ÚstrÚ	exception)r   rÙ   Úcms      r$   Útest_stop_no_timeoutz&TestIOLoopRunSync.test_stop_no_timeoutv  sW   € ò	$ð
 ×Ñœ|Ó,ð 	%°Ø�L‰L×!Ñ! !Ô$÷	%à#¤s¨2¯<©<Ó'8Ñ8Ð8Ñ8÷	%ð 	%ús   ™AÁA N)rÁ   rÂ   rÃ   r	  r  rS  rW  r]  rb  re  rh  rn  rt  r)   r&   r$   rK  rK  ?  s5   „ ò2òò.ò1ò7ò%ò!òPò"ó9r&   rK  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestPeriodicCallbackMathc                 ó    — g }d}||_         |D ]=  }|j                  |«       |j                  |j                   «       |j                   |z   }Œ? |S )a9  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_callsz'TestPeriodicCallbackMath.simulate_calls‚  sZ   € ð ˆØˆØˆÔØò 	'ˆAØ�O‰O˜CÔ Ø�L‰L˜×)Ñ)Ô*Ø×"Ñ" QÑ&‰Cð	'ð ˆr&   c                  ó   — y r(   r)   r?   s    r$   r$  zTestPeriodicCallbackMath.dummy“  s   € Ør&   c                 ó€   — t        | j                  d«      }| j                  | j                  |dgdz  «      g d¢«       y )Né'  r   é   ©éò  éü  é  i  é  ©r   r$  r†   r}  ©r   rz  s     r$   Ú
test_basicz#TestPeriodicCallbackMath.test_basic–  s9   € Ü˜dŸj™j¨%Ó0ˆØ×ÑØ×Ñ  Q C¨!¡GÓ,Ò.Lõ	
r&   c                 ó„   — g d¢}g d¢}t        | j                  d«      }| j                  | j                  ||«      |«       y )N)é	   r‹  r/   é   é   r�  é#   rŽ  r   r   r   )rƒ  r„  r…  r†  i.  iL  ij  i’  iº  iÄ  iÎ  r€  r‡  )r   Úcall_durationsÚexpectedrz  s       r$   Útest_overrunz%TestPeriodicCallbackMath.test_overrunœ  s@   € ò Aˆò
ˆô ˜dŸj™j¨%Ó0ˆØ×Ñ˜×,Ñ,¨R°Ó@À(ÕKr&   c                 óÈ   — t        | j                  d«      }| j                  | j                  |g d¢«      g d¢«       | j                  | j                  |g d¢«      g d¢«       y )Nr€  )éþÿÿÿéÿÿÿÿéýÿÿÿr“  r   r‚  )iœÿÿÿr   r   )rƒ  r„  r…  r‡  rˆ  s     r$   Útest_clock_backwardsz-TestPeriodicCallbackMath.test_clock_backwards±  sV   € Ü˜dŸj™j¨%Ó0ˆð
 	×ÑØ×Ñ Ò$7Ó8Ò:Xô	
ð 	×Ñ˜×,Ñ,¨R²Ó>Ò@RÕSr&   c                 ó  ‡— g d¢Šg d¢}dgt        ‰«      z  }t        | j                  dd¬«      }ˆfd„}t        j                  d|«      5  | j                  | j                  ||«      |«       d d d «       y # 1 sw Y   y xY w)	N)ç      à?r   r   g      è?)rƒ  g     ô�@r…  g     E�@r   r€  r˜  )Újitterc                  ó&   •— ‰ j                  d«      S )Nr   )Úpop)Úrandom_timess   €r$   Úmock_randomz9TestPeriodicCallbackMath.test_jitter.<locals>.mock_randomÈ  s   ø€ Ø×#Ñ# AÓ&Ð&r&   zrandom.random)Úlenr   r$  r   Úpatchr†   r}  )r   r�  r�  rz  r�  rœ  s        @r$   Útest_jitterz$TestPeriodicCallbackMath.test_jitterÂ  s{   ø€ Ú(ˆÚ0ˆØ˜œs <Ó0Ñ0ˆÜ˜dŸj™j¨%¸Ô<ˆô	'ô �Z‰Z˜¨Ó5ñ 	PØ×Ñ˜T×0Ñ0°°^ÓDÀhÔO÷	P÷ 	Pñ 	Pús   Á#A8Á8Bc                 ó„   — t        d„ t        j                  dd¬«      «      }d}| j                  |j                  |«       y )Nc                   ó   — y r(   r)   r)   r&   r$   r*   z9TestPeriodicCallbackMath.test_timedelta.<locals>.<lambda>Ï  ra   r&   r   é   )Úminutesr¥   i8D )r   r4   r5   r†   Úcallback_time)r   rz  Úexpected_callback_times      r$   Útest_timedeltaz'TestPeriodicCallbackMath.test_timedeltaÎ  s9   € Ü™l¬H×,>Ñ,>ÀqÐRTÔ,UÓVˆØ!&ÐØ×Ñ˜×)Ñ)Ð+AÕBr&   N)
rÁ   rÂ   rÃ   r}  r$  r‰  r‘  r–  r   r§  r)   r&   r$   rv  rv  �  s)   „ òò"ò
òLò*Tò"
PóCr&   rv  c                   ó"   — e Zd Zd„ Zdd„Zdd„Zy)ÚTestPeriodicCallbackAsyncc                 ó¶   ‡ ‡— dŠdˆˆ fd„}t        |d«      }|j                  «        ‰ j                  «        |j                  «        ‰ j	                  ‰d«       y )Nr   c                  ó<   •— ‰ dz  Š ‰ dk(  r‰j                  «        y y )Nr   r¦   r&  )rB  r   s   €€r$   r   z?TestPeriodicCallbackAsync.test_periodic_plain.<locals>.callbackØ  s!   ø€ à�Q‰JˆEØ˜ŠzØ—	‘	•ð r&   r/   r¦   ©ÚreturnN)r   r7   rG   r6   r†   )r   r   rz  rB  s   `  @r$   Útest_periodic_plainz-TestPeriodicCallbackAsync.test_periodic_plainÕ  sF   ù€ Øˆö	ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ
�‰Œ	Ø×Ñ˜ Õ"r&   Nc                 óô   ‡ ‡‡— ddgŠt         j                  dˆˆˆ fd„«       }t        |d«      Š‰j                  «        ‰ j	                  «        ‰ j                  ‰d   d«       ‰ j                  ‰d   d«       y )Nr   c               3   óì   •K  — ‰ dxx   dz  cc<   t        j                  d«      –— ‰ dxx   dz  cc<   ‰ d   dk(  r6‰j                  «        ‰j                  j	                  ‰j                  «       y y ­w©Nr   r   gš™™™™™™?r¦   ©r   rN   r6   r0   r%   ©Úcountsrz  r   s   €€€r$   r   z>TestPeriodicCallbackAsync.test_periodic_coro.<locals>.callbackç  s_   øè ø€ à�1‹I˜‰N‹IÜ—)‘)˜EÓ"Ò"Ø�1‹I˜‰N‹IØ�a‰y˜AŠ~Ø—‘”	Ø—‘×)Ñ)¨$¯)©)Õ4ð ùs   ƒA1A4r/   r¦   r   )r­  z%Generator[Future[None], object, None])r   ré   r   r7   rG   r†   ©r   r   r´  rz  s   ` @@r$   Útest_periodic_coroz,TestPeriodicCallbackAsync.test_periodic_coroä  sj   ú€ Ø�Q�ˆä	�‰ö	5ó 
ð	5ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ×Ñ˜ ™ AÔ&Ø×Ñ˜ ™ AÕ&r&   c                 óÎ   ‡ ‡‡— ddgŠdˆˆˆ fd„}t        |d«      Š‰j                  «        ‰ j                  «        ‰ j                  ‰d   d«       ‰ j                  ‰d   d«       y )Nr   c               “   óü   •K  — ‰ dxx   dz  cc<   t        j                  d«      ƒ d {  –—†  ‰ dxx   dz  cc<   ‰ d   dk(  r6‰j                  «        ‰j                  j	                  ‰j                  «       y y 7 ŒP­wr±  r²  r³  s   €€€r$   r   z?TestPeriodicCallbackAsync.test_periodic_async.<locals>.callbackù  sg   øè ø€ Ø�1‹I˜‰N‹IÜ—)‘)˜EÓ"×"Ð"Ø�1‹I˜‰N‹IØ�a‰y˜AŠ~Ø—‘”	Ø—‘×)Ñ)¨$¯)©)Õ4ð ð #ús   ƒ&A<©A:ªAA<r/   r¦   r   r¬  )r   r7   rG   r†   rµ  s   ` @@r$   Útest_periodic_asyncz-TestPeriodicCallbackAsync.test_periodic_asyncö  sY   ú€ Ø�Q�ˆ÷	5ô ˜h¨Ó+ˆØ
�‰Œ
Ø�	‰	ŒØ×Ñ˜ ™ AÔ&Ø×Ñ˜ ™ AÕ&r&   r¬  )rÁ   rÂ   rÃ   r®  r¶  r¹  r)   r&   r$   r©  r©  Ô  s   „ ò#ó'ô$'r&   r©  c                   ój   — e Zd Zd„ Zd„ Zd„ Z ej                  ej                  dk\  d«      d„ «       Z
y)ÚTestIOLoopConfigurationc                 ó¾   — ddgt        |«      z   }t        j                  ddj                  |«      g}t	        t        j                  |«      «      j                  «       S )Nz!from tornado.ioloop import IOLoopz*classname = lambda x: x.__class__.__name__z-cz; )ÚlistÚsysÚ
executablerU   r   Ú
subprocessÚcheck_outputÚstrip)r   Ú
statementsÚ	stmt_listr    s       r$   Ú
run_pythonz"TestIOLoopConfiguration.run_python	  sX   € à/Ø8ð
ô �Óñˆ	ô —‘  d§i¡i°	Ó&:Ð;ˆÜœ*×1Ñ1°$Ó7Ó8×>Ñ>Ó@Ð@r&   c                 ó�   — | j                  d«      }| j                  |d«       | j                  d«      }| j                  |d«       y )Nú"print(classname(IOLoop.current()))ÚAsyncIOMainLoopzprint(classname(IOLoop()))ÚAsyncIOLoop©rÅ  r†   ©r   Úclss     r$   Útest_defaultz$TestIOLoopConfiguration.test_default  sA   € à�o‰oÐBÓCˆØ×Ñ˜Ð/Ô0Ø�o‰oÐ:Ó;ˆØ×Ñ˜˜mÕ,r&   c                 óL   — | j                  dd«      }| j                  |d«       y )Nz8IOLoop.configure("tornado.platform.asyncio.AsyncIOLoop")rÇ  rÈ  rÊ  rË  s     r$   Útest_asyncioz$TestIOLoopConfiguration.test_asyncio  s)   € Ø�o‰oØFØ0ó
ˆð 	×Ñ˜Ð/Õ0r&   )r¦   é   z*implicit event loop creation not availablec                 óN   — | j                  ddd«      }| j                  |d«       y )Nz4from tornado.platform.asyncio import AsyncIOMainLoopzAsyncIOMainLoop().install()rÇ  rÈ  rÊ  rË  s     r$   Útest_asyncio_mainz)TestIOLoopConfiguration.test_asyncio_main  s.   € ð �o‰oØBØ)Ø0ó
ˆð
 	×Ñ˜Ð/Õ0r&   N)rÁ   rÂ   rÃ   rÅ  rÍ  rÏ  ÚunittestÚskipIfr¾  Úversion_inforÒ  r)   r&   r$   r»  r»    sB   „ òAò-ò1ð €X‡_�_Ø×Ñ˜GÑ#Ð%Qóñ1óñ1r&   r»  Ú__main__)5r  Úconcurrent.futuresr   Ú
concurrentr   Úcollections.abcr   rÒ   r4   rŠ   rˆ   rÀ  r¾  rS   rB   r1   rÓ  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   ÚTestCaser  r  r!  rK  rv  r©  r»  rÁ   Úmainr)   r&   r$   ú<module>rå     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ÒØ€H‡M�M…Oð r&   