+
    ‚V@is.  ã                   ó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HtHtHt ^ RIHt ^ RIHtHt  ! R	 R
]4      t ! R R]P6                  4      t ! R R]P6                  4      t ! R R]P6                  4      t ! R R]4      tR# )é    N)ÚThreadPoolExecutor)Úgen)ÚIOLoop)ÚAsyncIOLoopÚto_asyncio_futureÚAddThreadSelectorEventLoop)ÚAsyncTestCaseÚgen_testÚsetup_with_context_managerÚAsyncHTTPTestCase)Úignore_deprecation)ÚApplicationÚRequestHandlerc                   ób   a € ] tR t^'t o ]R 4       tR t]R 4       t]R 4       t	R t
R tRtV tR# )	ÚAsyncIOLoopTestc                ó.   € V P                   P                  # ©N)Úio_loopÚasyncio_loop©Úselfs   &Ú;/usr/lib/python3/dist-packages/tornado/test/asyncio_test.pyr   ÚAsyncIOLoopTest.asyncio_loop(   s   € à�|‰|×(Ñ(Ð(ó    c                ót   a € V 3R  lpS P                   P                  V! 4       4       S P                  4        R# )c               “   ól   <"  € \         P                  ! 4       P                  S P                  4       R # 5ir   )ÚasyncioÚget_event_loopÚ	call_soonÚstopr   s   €r   Úadd_callbackÚ;AsyncIOLoopTest.test_asyncio_callback.<locals>.add_callback.   s!   øé € Ü×"Ò"Ó$×.Ñ.¨t¯y©yÖ9ùs   ƒ14N)r   Úrun_until_completeÚwait)r   r!   s   f r   Útest_asyncio_callbackÚ%AsyncIOLoopTest.test_asyncio_callback,   s)   ø€ õ	:ð 	×Ñ×,Ñ,©\«^Ô<Ø�	‰	Žr   c              #  óª   "  € \         P                  ! \         P                  ! 4       P                  R R 4      4      x €pV P	                  V^*4       R # 5i)Nc                  ó   € ^*# ©é*   © r+   r   r   Ú<lambda>Ú5AsyncIOLoopTest.test_asyncio_future.<locals>.<lambda>9   s   € Á2r   )r   Úensure_futurer   Úrun_in_executorÚassertEqual)r   Úxs   & r   Útest_asyncio_futureÚ#AsyncIOLoopTest.test_asyncio_future4   sG   é € ô ×'Ò'Ü×"Ò"Ó$×4Ñ4°T¹:ÓFó
ñ 
ˆð 	×Ñ˜˜BÖùs   ‚AAc              #  óp   "  € \         P                  R  4       pV! 4       x €pV P                  V^*4       R# 5i)c               3   ór   "  € \         P                  ! 4       p V P                  R R 4       R j  x€L
 pV#  L5i)Nc                  ó   € ^*# r)   r+   r+   r   r   r,   ÚDAsyncIOLoopTest.test_asyncio_yield_from.<locals>.f.<locals>.<lambda>B   s   € ÁBr   )r   r   r/   )Ú
event_loopr1   s     r   ÚfÚ2AsyncIOLoopTest.test_asyncio_yield_from.<locals>.f?   s3   é € ä ×/Ò/Ó1ˆJØ%×5Ñ5°d¹JÓG×GˆAØˆHñ Hùs   ‚,7®5¯7N)r   Ú	coroutiner0   )r   r9   Úresults   &  r   Útest_asyncio_yield_fromÚ'AsyncIOLoopTest.test_asyncio_yield_from=   s6   é € ä	�‰ñ	ó 
ð	ñ
 “s‘ˆØ×Ñ˜ Ö$ùs   ‚46c                ó|  aa€ \         P                  R  4       oV3R loV3R lpV3R lpV P                  V P                  P	                  S4      ^*4       V P                  V P                  P	                  V4      ^*4       V P                  V P                  P	                  V4      ^*4       V P                  V P
                  P                  S! 4       4      ^*4       V P                  V P
                  P                  V! 4       4      ^*4       V P                  V P
                  P                  V! 4       4      ^*4       R# )c               3   óZ   "  € \         P                  x € \         P                  ! ^*4      h5ir)   )r   ÚmomentÚReturnr+   r   r   Útornado_coroutineÚ?AsyncIOLoopTest.test_asyncio_adapter.<locals>.tornado_coroutineM   s   é € ä—*‘*ÒÜ—*’*˜R“.Ð ùs   ‚)+c               “   ó.   <"  € S ! 4       G R j  x€L
 #  L5ir   r+   ©rC   s   €r   Ú native_coroutine_without_adapterÚNAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_without_adapterR   s   øé € Ù*Ó,×,Ð,Ñ,ùs   ƒŽ�c               “   ó@   <"  € \        S ! 4       4      G R j  x€L
 #  L5ir   ©r   rF   s   €r   Únative_coroutine_with_adapterÚKAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_with_adapterU   s   øé € Ü*Ñ+<Ó+>Ó?×?Ð?Ñ?ùó   ƒ—˜c               “   ó@   <"  € \        S ! 4       4      G R j  x€L
 #  L5ir   rJ   )rG   s   €r   Únative_coroutine_with_adapter2ÚLAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_with_adapter2Y   s   øé € Ü*Ñ+KÓ+MÓN×NÐNÑNùrM   N)r   r;   r0   r   Úrun_syncr   r#   )r   rK   rO   rG   rC   s   &  @@r   Útest_asyncio_adapterÚ$AsyncIOLoopTest.test_asyncio_adapterH   s  ù€ ô
 
�‰ñ	!ó 
ð	!õ	-õ	@õ	Oð 	×Ñ˜Ÿ™×.Ñ.Ð/OÓPÐRTÔUØ×Ñ˜Ÿ™×.Ñ.Ð/LÓMÈrÔRØ×Ñ˜Ÿ™×.Ñ.Ð/MÓNÐPRÔSð 	×ÑØ×Ñ×0Ñ0Ñ1QÓ1SÓTØô	
ð 	×ÑØ×Ñ×0Ñ0Ñ1NÓ1PÓQØô	
ð 	×ÑØ×Ñ×0Ñ0Ñ1OÓ1QÓRØö	
r   c                ó‚   € \        \        P                  ! 4       4      pVP                  4        VP                  4        R # r   )r   r   r   Úclose©r   Úloops   & r   Ú test_add_thread_close_idempotentÚ0AsyncIOLoopTest.test_add_thread_close_idempotentp   s'   € Ü)¬'×*@Ò*@Ó*BÓCˆØ�
‰
ŒØ�
‰
Žr   r+   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úpropertyr   r%   r
   r2   r=   rR   rX   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   '   sT   ø‡ € Øñ)ó ð)òð ñ ó ð ð ñ%ó ð%ò&
÷Pð r   r   c                   ó8   a € ] tR t^vt o R tR tR tR tRtV t	R# )ÚLeakTestc                ó:   € \        R R7      P                  4        R# )F©Úmake_currentN)r   rU   r   s   &r   ÚsetUpÚLeakTest.setUpw   s   € ä Ô'×-Ñ-Ö/r   c                ó’   €  \         P                  ! 4       P                  4       pVP                  4        R #   \         d     R # i ; ir   )r   Úget_event_loop_policyr   rU   Ú	ExceptionrV   s   & r   ÚtearDownÚLeakTest.tearDown{   s=   € ð	Ü×0Ò0Ó2×AÑAÓCˆDð
 �J‰JŽLøô	 ô 	âð	ús   ‚#7 ·AÁAc                óž  € \        \        P                  4      p\        ^
4       F^  p\        P
                  ! 4       ;_uu_ 4        \        P                  ! R\        4       \        4       pVP                  4        RRR4       K`  	  \        \        P                  4      V,
          pV P                  V^ 4       R#   + '       g   i     K§  ; i)é
   ÚignoreN)Úlenr   Ú_ioloop_for_asyncioÚrangeÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningr   rU   r0   ©r   Ú
orig_countÚirW   Ú	new_counts   &    r   Útest_ioloop_close_leakÚLeakTest.test_ioloop_close_leak„   s‹   € Üœ×3Ñ3Ó4ˆ
Ü�r–ˆAä×(Ò(×*Õ*Ü×%Ò% hÔ0BÔCÜ"“}�Ø—
‘
”÷ +Ñ*ñ ô œ×2Ñ2Ó3°jÕ@ˆ	Ø×Ñ˜ AÖ&÷ +×*Ð*ús   Á6B;Â;Cc                óž  € \        \        P                  4      p\        ^
4       Fr  p\        P
                  ! 4       pVP                  \        P                  4       VP                  VP                  4       VP                  4        VP                  4        Kt  	  \        \        P                  4      V,
          pV P                  V^4       R# ©rp   N)rr   r   rs   rt   r   Únew_event_loopr   Úcurrentr    Úrun_foreverrU   r0   ry   s   &    r   Útest_asyncio_close_leakÚ LeakTest.test_asyncio_close_leak�   sŒ   € Üœ×3Ñ3Ó4ˆ
Ü�r–ˆAä×)Ò)Ó+ˆDØ�N‰Nœ6Ÿ>™>Ô*Ø�N‰N˜4Ÿ9™9Ô%Ø×ÑÔØ�J‰JŽLñ ô œ×2Ñ2Ó3°jÕ@ˆ	ð 	×Ñ˜ AÖ&r   r+   N)
rZ   r[   r\   r]   rh   rm   r}   r„   r_   r`   ra   s   @r   rd   rd   v   s   ø‡ € ò0òò	'÷'ð 'r   rd   c                   óD   a € ] tR t^žt o R tR tR tR tR tR t	Rt
V tR# )	ÚSelectorThreadLeakTestc                ó‚   € \         P                  ! V P                  4       4       \        P                  ! 4       V n        R # r   )r   ÚrunÚdummy_tornado_coroutineÚ	threadingÚactive_countÚorig_thread_countr   s   &r   rh   ÚSelectorThreadLeakTest.setUp    s*   € ô 	�Š�D×0Ñ0Ó2Ô3Ü!*×!7Ò!7Ó!9ˆÖr   c                ó`  € \         P                   ! 4       ^,           p\         P                   ! 4       V8  dR   \        \        P                  ! 4       4      p\	        V4      V P
                  8:  d   M\         P                  ! R4       Kk  V P                  \	        X4      V P
                  V4       R# )é   gš™™™™™¹?N)ÚtimeÚlistr‹   Ú	enumeraterr   r�   ÚsleepÚassertLessEqual)r   ÚdeadlineÚthreadss   &  r   Úassert_no_thread_leakÚ,SelectorThreadLeakTest.assert_no_thread_leak¦   sp   € ô —9’9“; •?ˆÜ�iŠi‹k˜HÔ$Üœ9×.Ò.Ó0Ó1ˆGÜ�7‹|˜t×5Ñ5Ô5ØÜ�JŠJ�sŽOØ×ÑœS ›\¨4×+AÑ+AÀ7ÖKr   c              ƒ  ó8   "  € \         P                  ! 4        R # 5ir   )r   r‚   r   s   &r   rŠ   Ú.SelectorThreadLeakTest.dummy_tornado_coroutine´   s   é € ä�ŠÖùs   ‚c                ó’   € \        ^
4       F'  p\        P                  ! V P                  4       4       K)  	  V P	                  4        R# r€   )rt   r   r‰   rŠ   r˜   )r   r{   s   & r   Útest_asyncio_runÚ'SelectorThreadLeakTest.test_asyncio_run¸   s3   € Ü�r–ˆAä�KŠK˜×4Ñ4Ó6Ö7ñ ð 	×"Ñ"Ö$r   c                ó  € \        ^
4       Ff  p\        P                  ! 4       pVP                  V P	                  4       4       VP                  VP                  4       4       VP                  4        Kh  	  V P                  4        R# r€   )rt   r   r�   r#   rŠ   Úshutdown_asyncgensrU   r˜   ©r   r{   rW   s   &  r   Útest_asyncio_manualÚ*SelectorThreadLeakTest.test_asyncio_manual¾   sc   € Ü�r–ˆAÜ×)Ò)Ó+ˆDØ×#Ñ# D×$@Ñ$@Ó$BÔCà×#Ñ# D×$;Ñ$;Ó$=Ô>Ø�J‰JŽLñ ð 	×"Ñ"Ö$r   c                ó¸   € \        ^
4       F:  p\        RR7      pVP                  V P                  4       VP	                  4        K<  	  V P                  4        R# )rp   Frf   N)rt   r   rQ   rŠ   rU   r˜   r¡   s   &  r   Útest_tornadoÚ#SelectorThreadLeakTest.test_tornadoÇ   sE   € Ü�r–ˆAô  uÔ-ˆDØ�M‰M˜$×6Ñ6Ô7Ø�J‰JŽLñ ð 	×"Ñ"Ö$r   )r�   N)rZ   r[   r\   r]   rh   r˜   rŠ   r�   r¢   r¥   r_   r`   ra   s   @r   r‡   r‡   ž   s)   ø‡ € ò:òLòò%ò%÷%ð %r   r‡   c                   ó>   a € ] tR t^Ñt o R tR tR tR tR tRt	V t
R# )ÚAnyThreadEventLoopPolicyTestc                óÔ   € \        V \        4       4       \        P                  P                  P
                  V n        \        P                  ! 4       V n        \        ^4      V n	        R# )r�   N)
r   r   ÚtornadoÚplatformr   ÚAnyThreadEventLoopPolicyrk   Úorig_policyr   Úexecutorr   s   &r   rh   Ú"AnyThreadEventLoopPolicyTest.setUpÒ   sN   € Ü" 4Ô);Ó)=Ô>ô ×Ñ×$Ñ$×=Ñ=ð 	Ô%ô #×8Ò8Ó:ˆÔÜ*¨1Ó-ˆŽr   c                óz   € \         P                  ! V P                  4       V P                  P	                  4        R # r   )r   Úset_event_loop_policyr­   r®   Úshutdownr   s   &r   rm   Ú%AnyThreadEventLoopPolicyTest.tearDownÜ   s&   € Ü×%Ò% d×&6Ñ&6Ô7Ø�‰×ÑÖ r   c                ó^   € R  pV P                   P                  V4      pVP                  4       # )c                 óP   € \         P                  ! 4       p V P                  4        V # )zçGet the event loop. Close it if one is returned.

Returns the (closed) event loop. This is a silly thing
to do and leaves the thread in a broken state, but it's
enough for this test. Closing the loop avoids resource
leak warnings.
©r   r   rU   )rW   s    r   Úget_and_close_event_loopÚWAnyThreadEventLoopPolicyTest.get_event_loop_on_thread.<locals>.get_and_close_event_loopá   s    € ô ×)Ò)Ó+ˆDØ�J‰JŒLØˆKr   )r®   Úsubmitr<   )r   r·   Úfutures   &  r   Úget_event_loop_on_threadÚ5AnyThreadEventLoopPolicyTest.get_event_loop_on_threadà   s*   € ò
	ð —‘×%Ñ%Ð&>Ó?ˆØ�}‰}‹Ðr   c                ó„  € \         P                  ! 4       ;_uu_ 4        \         P                  ! R \        4       V P	                  \
        V P                  P                  \        P                  4      P                  4       \        P                  ! V P                  4       4       V P                  V P                  P                  \        P                  4      P                  4       \        P                  4       V P                  P                  R 4      P                  4        RRR4       R#   + '       g   i     R# ; i)rq   c                  óH   € \         P                  ! 4       P                  4       # r   r¶   r+   r   r   r,   ÚDAnyThreadEventLoopPolicyTest.test_asyncio_accessor.<locals>.<lambda>   ó   € ¬×)?Ò)?Ó)A×)GÑ)GÔ)Ir   N)ru   rv   rw   rx   ÚassertRaisesÚRuntimeErrorr®   r¹   r   r   r<   r±   r¬   ÚassertIsInstanceÚAbstractEventLoopr   s   &r   Útest_asyncio_accessorÚ2AnyThreadEventLoopPolicyTest.test_asyncio_accessorð   sÐ   € Ü×$Ò$×&Õ&Ü×!Ò! (Ô,>Ô?ð ×ÑÜ˜dŸm™m×2Ñ2´7×3IÑ3IÓJ×QÑQôô ×)Ò)¨$×*GÑ*GÓ*IÔJØ×!Ñ!Ø—‘×$Ñ$¤W×%;Ñ%;Ó<×CÑCÓEÜ×)Ñ)ôð �M‰M× Ñ Ñ!IÓJ×QÑQÔS÷ '×&×&Ò&ús   žDD.Ä.D?	c                óÌ  € \         P                  ! 4       ;_uu_ 4        \         P                  ! R \        4       V P	                  V P
                  P                  \        P                  4      P                  4       \        4       V P
                  P                  R 4      P                  4        \        P                  ! V P                  4       4       V P	                  V P
                  P                  \        P                  4      P                  4       \        4       V P
                  P                  R 4      P                  4        RRR4       R#   + '       g   i     R# ; i)rq   c                  óH   € \         P                  ! 4       P                  4       # r   r¶   r+   r   r   r,   ÚDAnyThreadEventLoopPolicyTest.test_tornado_accessor.<locals>.<lambda>
  rÀ   r   c                  óH   € \         P                  ! 4       P                  4       # r   r¶   r+   r   r   r,   rÉ     rÀ   r   N)ru   rv   rw   rx   rÃ   r®   r¹   r   r‚   r<   r   r±   r¬   r   s   &r   Útest_tornado_accessorÚ2AnyThreadEventLoopPolicyTest.test_tornado_accessor  sÞ   € ô ×$Ò$×&Õ&Ü×!Ò! (Ô,>Ô?Ø×!Ñ! $§-¡-×"6Ñ"6´v·~±~Ó"F×"MÑ"MÓ"OÔQWÔXð �M‰M× Ñ Ñ!IÓJ×QÑQÔSä×)Ò)¨$×*GÑ*GÓ*IÔJØ×!Ñ! $§-¡-×"6Ñ"6´v·~±~Ó"F×"MÑ"MÓ"OÔQWÔXØ�M‰M× Ñ Ñ!IÓJ×QÑQÔS÷ '×&×&Ò&ús   žD*EÅE#	)r¬   r®   r­   N)rZ   r[   r\   r]   rh   rm   r»   rÅ   rË   r_   r`   ra   s   @r   r¨   r¨   Ñ   s&   ø‡ € ò.ò!òò T÷$Tð Tr   r¨   c                   óŠ   a € ] tR tRt o RtRt]P                  ! RRR7      t]P                  ]4       V 3R lR lt
R	 tR
tV tR# )ÚSelectorThreadContextvarsTesti  ÚfooÚ/Útornado_test_ctxÚdefault)rÒ   c                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)r   )Úformatrb   s   "€r   Ú__annotate__Ú*SelectorThreadContextvarsTest.__annotate__  s   ø€ ÷ <ñ <™ñ <r   c                óp   a€ V P                   o ! V3R  lR\        4      p\        V P                  V3.4      # )c                   ó.   <a € ] tR tRt o V3R ltRtV tR# )Ú6SelectorThreadContextvarsTest.get_app.<locals>.Handleri  c              “  óN   <"  € V P                  SP                  4       4       R # 5ir   )ÚwriteÚget)r   rÑ   s   &€r   rÞ   Ú:SelectorThreadContextvarsTest.get_app.<locals>.Handler.get  s   øé € ð —
‘
Ð+×/Ñ/Ó1Ö2ùs   ƒ"%r+   N)rZ   r[   r\   r]   rÞ   r_   r`   )rb   rÑ   s   @€r   ÚHandlerrÛ     s   ù‡ € ÷
3ó 
3r   rà   )rÑ   r   r   Útest_endpoint)r   rà   rÑ   s   & @r   Úget_appÚ%SelectorThreadContextvarsTest.get_app  s6   ø€ Ø×0Ñ0Ð÷	3”nô 	3ô ˜T×/Ñ/°Ð9Ð:Ó;Ð;r   c                ó    € V P                  V P                  V P                  V P                  4      P                  P                  4       4       R # r   )r0   Ú	ctx_valueÚfetchrá   ÚbodyÚdecoder   s   &r   Útest_context_varsÚ/SelectorThreadContextvarsTest.test_context_vars)  s4   € Ø×Ñ˜Ÿ™¨¯©°D×4FÑ4FÓ)G×)LÑ)L×)SÑ)SÓ)UÖVr   r+   N)rZ   r[   r\   r]   rå   rá   ÚcontextvarsÚ
ContextVarrÑ   Úsetrâ   ré   r_   r`   ra   s   @r   rÎ   rÎ     sG   ø‡ € Ø€IØ€MØ"×-Ò-Ð.@È)ÔTÐØ×Ñ˜Ô#÷<ð <÷$Wð Wr   rÎ   ) r   rë   r‹   r‘   Úunittestru   Úconcurrent.futuresr   Útornado.platform.asynciorª   r   Útornado.ioloopr   r   r   r   Útornado.testingr	   r
   r   r   Útornado.test.utilr   Útornado.webr   r   r   ÚTestCaserd   r‡   r¨   rÎ   r+   r   r   Ú<module>rö      sš   ðó Û Û Û Û Û å 1Û Ý Ý !÷ñ ÷
ó õ 1ß 3ôL�mô Lô^%'ˆx× Ñ ô %'ôP0%˜X×.Ñ.ô 0%ôf=T 8×#4Ñ#4ô =Tô@WÐ$5ö Wr   