
    #/hM                        S SK r S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SKJr  S SKJrJrJrJr  S SKJrJr  S SKJrJrJr  S SKJr   S SKrS SKr\R>                  (       a  S S	KJ r J!r!   " S
 S\5      r" " S S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r( " S S\5      r) " S S\5      r* " S S\5      r+ " S S\5      r,\b  \RZ                  " S 5      r.\	R^                  " \SL S!5       " S" S#\5      5       r0\1S$:X  a  \	Rd                  " 5         gg! \ a    Sr Nf = f)%    N)futures)Future)app_log)AsyncHTTPTestCaseAsyncTestCase	ExpectLoggen_test)skipOnTravisskipNotCPython)ApplicationRequestHandler	HTTPError)gen)ListOptionalc                      \ rS rSr\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r	S r
S rS rS	 rS
 rS rS rS rS rS rS r\\S 5       5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rS rS r S r!S r"S r#S r$Sr%g )!GenBasicTest   c              #   ~   #    [        U5       H  n[        R                  v   M     [        R                  " U5      e7f)z0Returns arg after a number of IOLoop iterations.)ranger   momentReturn)self
iterationsargis       7/usr/lib/python3/dist-packages/tornado/test/gen_test.pydelayGenBasicTest.delay   s.      z"A** #jjos   ;=c              #   2   #    [         R                  v   U$ 7fNr   r   r   results     r   async_futureGenBasicTest.async_future&   s     jj   c              #   2   #    [         R                  v   Ue7fr!   r"   )r   es     r   async_exceptionGenBasicTest.async_exception+   s     jjr'   c              #   `   #    [         R                  v   [         R                  " US-   5      e7fN   r   r   r   r   xs     r   add_one_asyncGenBasicTest.add_one_async0   s"     jjjjQs   ,.c                 f    [         R                  S 5       nU R                  R                  U5        g )Nc                      g r!    r6       r   f%GenBasicTest.test_no_yield.<locals>.f6   s    r7   r   	coroutineio_looprun_syncr   r8   s     r   test_no_yieldGenBasicTest.test_no_yield5   s,    		 
	 	a r7   c                     [         R                  S 5       nU R                  [        U R                  R
                  U5        g )Nc                      SS-    g Nr.   r   r6   r6   r7   r   r8   -GenBasicTest.test_exception_phase1.<locals>.f=   	    Er7   r   r;   assertRaisesZeroDivisionErrorr<   r=   r>   s     r   test_exception_phase1"GenBasicTest.test_exception_phase1<   s7    		 
	 	+T\\-B-BAFr7   c                     [         R                  S 5       nU R                  [        U R                  R
                  U5        g )Nc               3   :   #    [         R                  v   SS-    g 7frC   r"   r6   r7   r   r8   -GenBasicTest.test_exception_phase2.<locals>.fD        **E   rF   r>   s     r   test_exception_phase2"GenBasicTest.test_exception_phase2C   s7    		 
	 	+T\\-B-BAFr7   c                     [         R                  S 5       nU R                  [         R                  U R                  R
                  U5        g )Nc               3      #    Sv   g 7fN*   r6   r6   r7   r   r8   (GenBasicTest.test_bogus_yield.<locals>.fL   s
     H   r   r;   rG   BadYieldErrorr<   r=   r>   s     r   test_bogus_yieldGenBasicTest.test_bogus_yieldK   s<    		 
	 	#++T\\-B-BAFr7   c                     [         R                  S 5       nU R                  [         R                  U R                  R
                  U5        g )Nc               3      #    Sv   g 7fNr.      r6   r6   r7   r   r8   .GenBasicTest.test_bogus_yield_tuple.<locals>.fS   s
     LrW   rX   r>   s     r   test_bogus_yield_tuple#GenBasicTest.test_bogus_yield_tupleR   s<    		 
	 	#++T\\-B-BAFr7   c                     [         R                  S 5       nU R                  R                  U5        U R                  R                  U5        g )Nc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r8   "GenBasicTest.test_reuse.<locals>.fZ        **   r:   r>   s     r   
test_reuseGenBasicTest.test_reuseY   s>    		 
	 	a a r7   c                 f    [         R                  S 5       nU R                  R                  U5        g )Nc               3      #    S v   g 7fr!   r6   r6   r7   r   r8   !GenBasicTest.test_none.<locals>.fb   s
     JrW   r:   r>   s     r   	test_noneGenBasicTest.test_nonea   s,    		 
	 	a r7   c                 n   ^  [         R                  U 4S j5       nT R                  R                  U5        g )Nc               3   ~   >#    TR                  S5      TR                  S5      /v n TR                  U SS/5        g 7f)Nr.   r`      )r2   assertEqualresultsr   s    r   r8   "GenBasicTest.test_multi.<locals>.fi   s=     !//2D4F4Fq4IJJGWq!f-s   :=r:   r>   s   ` r   
test_multiGenBasicTest.test_multih   s-    		. 
	. 	a r7   c                 n   ^  [         R                  U 4S j5       nT R                  R                  U5        g )Nc               3      >#    [        TR                  S5      TR                  S5      S9v n TR                  U [        SSS95        g 7f)Nr.   r`   foobarrr   )dictr2   rs   rt   s    r   r8   'GenBasicTest.test_multi_dict.<locals>.fq   sC      T%7%7%:@R@RST@UVVGWdqa&89s   AA	r:   r>   s   ` r   test_multi_dictGenBasicTest.test_multi_dictp   s-    		: 
	: 	a r7   c                 n   ^  [         R                  U 4S j5       nT R                  R                  U5        g )Nc               3      >#    [         R                  " TR                  SS5      TR                  SS5      /5      v n TR                  U SS/5        g 7f)Nrr   v1r.   v2)r   multi_futurer   rs   	responsesr   s    r   r8   *GenBasicTest.test_multi_delayed.<locals>.fy   sQ      "..At$djjD&9: I Yt5s   AAr:   r>   s   ` r   test_multi_delayedGenBasicTest.test_multi_delayedx   s-    		6 
	6 	a r7   c                 n   ^  [         R                  U 4S j5       nT R                  R                  U5        g )Nc            	   3      >#    [         R                  " [        TR                  SS5      TR                  SS5      S95      v n TR	                  U [        SSS95        g 7f)Nrr   r   r.   r   r{   )r   r   r~   r   rs   r   s    r   r8   /GenBasicTest.test_multi_dict_delayed.<locals>.f   sV      "..At,$**Q2EF I Y4(@As   AAr:   r>   s   ` r   test_multi_dict_delayed$GenBasicTest.test_multi_dict_delayed   s/    		B 
	B 	a r7   c              #      #    [         R                   " 5       n[        S5       Vs/ s H  n[        R                  PM     snv   [         R                   " 5       nU R	                  X1-
  S5        g s  snf 7f)Ni  g      ?)timer   r   r   
assertLess)r   startr   ends       r   test_multi_performance#GenBasicTest.test_multi_performance   sO      		#(;/;aszz;//iikS) 0s   #A3A.4A3c              #      #    / v nU R                  [        U[        5      5        0 v nU R                  [        U[        5      5        g 7fr!   )
assertTrue
isinstancelistr~   )r   r1   ys      r   test_multi_emptyGenBasicTest.test_multi_empty   s;      H
1d+,H
1d+,s   AA
c              #   V   #    U R                  S5      v nU R                  US5        g 7fr-   r%   rs   r#   s     r   test_futureGenBasicTest.test_future   s(     ((++#   ')c              #   |   #    U R                  S5      U R                  S5      /v nU R                  USS/5        g 7f)Nr.   r`   r   r   ru   s     r   test_multi_futureGenBasicTest.test_multi_future   s<     **1-t/@/@/CDD1a&)   :<c              #      #    U R                  S5      nU R                  S5      XR                  S5      U/v nU R                  U/ SQ5        g 7f)Nr`   r.   rr   )r.   r`   rr   r`   r   )r   r8   ru   s      r   test_multi_future_duplicate(GenBasicTest.test_multi_future_duplicate   sL      a **1-q2C2CA2FJJ,/s   AAc              #      #    [        U R                  S5      U R                  S5      S9v nU R                  U[        SSS95        g 7f)Nr.   r`   r{   )r~   r%   rs   r   s     r   test_multi_dict_future#GenBasicTest.test_multi_dict_future   sA     !2!21!54;L;LQ;OPP$1!"45   AAc           
   #   x  #    [        [        S5         U R                  [        5       n[        R
                  " U R                  [        S5      5      U R                  [        S5      5      /5      v   S S S 5        S S S 5        U R                  [        WR                  5      S5        U R                  [        5         [        R
                  " U R                  [        S5      5      U R                  S5      /5      v   S S S 5        U R                  [        5         [        R
                  " U R                  [        S5      5      U R                  [        S5      5      /[        S9v   S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f7fNz!Multiple exceptions in yield listzerror 1zerror 2r`   )quiet_exceptions)r   r   rG   RuntimeErrorr   Multir*   rs   str	exceptionr%   r   cms     r   test_multi_exceptions"GenBasicTest.test_multi_exceptions   sI    w CD""<0Bii,,\)-DE,,\)-DE  1 E 	R\\*I6 |,))%%l9&=>@Q@QRS@TU  - |,))((i)@A((i)@A ".  -,! 10 ED -, -,sg   F:FAE44F<AF:>AF F:AF)+	F:4
F	>F
FF:
F&"F:)
F73F:c           	   #   $  #    [        [        S5         U R                  [        5       nU R	                  [        S5      5      U R	                  [        S5      5      /v   S S S 5        S S S 5        U R                  [        WR                  5      S5        U R                  [        5         U R	                  [        S5      5      U R                  S5      /v   S S S 5        U R                  [        5         [        R                  " U R	                  [        S5      5      U R	                  [        S5      5      /[        S9v   S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f7fr   )r   r   rG   r   r*   rs   r   r   r%   r   r   r   s     r   test_multi_future_exceptions)GenBasicTest.test_multi_future_exceptions   s1    w CD""<0B((i)@A((i)@A  1 E 	R\\*I6 |,''Y(?@$BSBSTUBVWW - |,""((i)@A((i)@A ".  -, 10 ED -, -,se   FE7E E(AF*.E.F5AE?	F
E	E
E+'F.
E<8F?
F	Fc                 f    [         R                  S 5       nU R                  R                  U5        g )Nc                  ,    [         R                  " 5       er!   r   r   r6   r7   r   r8   .GenBasicTest.test_sync_raise_return.<locals>.f   s    **,r7   r:   r>   s     r   test_sync_raise_return#GenBasicTest.test_sync_raise_return   s,    		 
	 	a r7   c                 f    [         R                  S 5       nU R                  R                  U5        g )Nc               3   X   #    [         R                  v   [         R                  " 5       e7fr!   r/   r6   r7   r   r8   /GenBasicTest.test_async_raise_return.<locals>.f   s     ****,s   (*r:   r>   s     r   test_async_raise_return$GenBasicTest.test_async_raise_return   s,    		 
	 	a r7   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc                  .    [         R                  " S5      erT   r   r6   r7   r   r8   4GenBasicTest.test_sync_raise_return_value.<locals>.f       **R. r7   rU   r   r;   rs   r<   r=   r>   s     r   test_sync_raise_return_value)GenBasicTest.test_sync_raise_return_value   s9    		! 
	! 	T\\22156r7   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc                  .    [         R                  " S5      er^   r   r6   r7   r   r8   :GenBasicTest.test_sync_raise_return_value_tuple.<locals>.f  s    **V$$r7   r_   r   r>   s     r   "test_sync_raise_return_value_tuple/GenBasicTest.test_sync_raise_return_value_tuple  s9    		% 
	% 	!6!6q!9:r7   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc               3   Z   #    [         R                  v   [         R                  " S5      e7frT   r/   r6   r7   r   r8   5GenBasicTest.test_async_raise_return_value.<locals>.f
       ****R.    )+rU   r   r>   s     r   test_async_raise_return_value*GenBasicTest.test_async_raise_return_value	  s9    		! 
	! 	T\\22156r7   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc               3   Z   #    [         R                  v   [         R                  " S5      e7fr^   r/   r6   r7   r   r8   ;GenBasicTest.test_async_raise_return_value_tuple.<locals>.f  s     ****V$$r   r_   r   r>   s     r   #test_async_raise_return_value_tuple0GenBasicTest.test_async_raise_return_value_tuple  s9    		% 
	% 	!6!6q!9:r7   r6   N)&__name__
__module____qualname____firstlineno__r   r;   r   r%   r*   r2   r?   rI   rP   rZ   rb   ri   rn   rw   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r6   r7   r   r   r      sa   ]]  	]]  	]]  	]]   !GGGG!!!!	!	! *  * - - $ $ * * 0 0 6 6  6  .!!7;7;r7   r   c                     ^  \ rS rSrU 4S jrU 4S jrS rS r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\\R:                  " S\R>                  s=:  =(       a    S:  Os  S5      S 5       5       r S r!\S 5       r"Sr#U =r$$ )GenCoroutineTesti  c                 0   > SU l         [        TU ]	  5         g )NF)finishedsupersetUpr   	__class__s    r   r   GenCoroutineTest.setUp  s     r7   c                 H   > [         TU ]  5         U R                  (       d   eg r!   )r   tearDownr   r   s    r   r   GenCoroutineTest.tearDown"  s    }}}r7   c                    SU l         S n[        R                  " U5      nU R                  UR                  UR                  5        U R                  UR
                  UR
                  5        U R                  UR                  U5        g )NTc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r8   +GenCoroutineTest.test_attributes.<locals>.f)       **rh   )r   r   r;   rs   r   r   assertIs__wrapped__r   r8   coros      r   test_attributes GenCoroutineTest.test_attributes&  sb    	 }}Q

3!,,7d&&*r7   c                 ,   SU l         S n[        R                  " U5      nU R                  [        R                  " U5      5        U R                  [        R                  " U5      5        U R                  [        R                  " U" 5       5      5        g )NTc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r8   6GenCoroutineTest.test_is_coroutine_function.<locals>.f4  r   rh   )r   r   r;   assertFalseis_coroutine_functionr   r   s      r   test_is_coroutine_function+GenCoroutineTest.test_is_coroutine_function1  si    	 }}Q2215611$782246:;r7   c              #   |   #    [         R                  S 5       nU" 5       v nU R                  US5        SU l        g 7f)Nc                  .    [         R                  " S5      erT   r   r6   r7   r   r8   0GenCoroutineTest.test_sync_gen_return.<locals>.f>  r   r7   rU   Tr   r;   rs   r   r   r8   r$   s      r   test_sync_gen_return%GenCoroutineTest.test_sync_gen_return<  s=     		! 
	! s$r   c              #   |   #    [         R                  S 5       nU" 5       v nU R                  US5        SU l        g 7f)Nc               3   Z   #    [         R                  v   [         R                  " S5      e7frT   r/   r6   r7   r   r8   1GenCoroutineTest.test_async_gen_return.<locals>.fH  r   r   rU   Tr  r  s      r   test_async_gen_return&GenCoroutineTest.test_async_gen_returnF  s=     		! 
	! s$r   c              #   |   #    [         R                  S 5       nU" 5       v nU R                  US5        SU l        g 7f)Nc                      grT   r6   r6   r7   r   r8   ,GenCoroutineTest.test_sync_return.<locals>.fS  s    r7   rU   Tr  r  s      r   test_sync_return!GenCoroutineTest.test_sync_returnQ  s=     		 
	 s$r   c              #   |   #    [         R                  S 5       nU" 5       v nU R                  US5        SU l        g 7f)Nc               3   0   #    [         R                  v   g7frT   r"   r6   r7   r   r8   -GenCoroutineTest.test_async_return.<locals>.f]  s     **rh   rU   Tr  r  s      r   test_async_return"GenCoroutineTest.test_async_return[  s=     		 
	 s$r   c              #      ^ #    [         R                  U 4S j5       nU" 5       v nT R                  US5        ST l        g 7f)Nc               3      >#     g7frT   )r   Taskr<   add_callbackr   s   r   r8   3GenCoroutineTest.test_async_early_return.<locals>.fk  s     s   rU   Tr  r  s   `  r   test_async_early_return(GenCoroutineTest.test_async_early_returnf  s@     
 
	6 
	6
 s$s   =A c              #      ^#    [         R                  S 5       mU4S jnU" 5       v nU R                  US5        SU l        g 7f)Nc               3   Z   #    [         R                  v   [         R                  " S5      e7frT   r/   r6   r7   r   f1-GenCoroutineTest.test_async_await.<locals>.f1w  r   r   c                  2   >#    T" 5       I S h  vN n U $  N7fr!   r6   )r$   r#  s    r   f2-GenCoroutineTest.test_async_await.<locals>.f2  s     4ZFM  s   rU   Tr  r   r&  r$   r#  s      @r   test_async_await!GenCoroutineTest.test_async_awaitu  sC     		! 
	!	 t$s   A Ac              #   V   #    S nU" 5       v nU R                  US5        SU l        g 7f)Nc                  L   #    SS K n U R                  " S5      I S h  vN   g N7f)Nr   rU   )asynciosleep)r-  s    r   r8   3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.f  s"     --""" #s   $"$rU   T)rs   r   r  s      r   test_asyncio_sleep_zero(GenCoroutineTest.test_asyncio_sleep_zero  s,     	 s$r   c              #      ^#    [         R                  S 5       mU4S jn[         R                  S 5       nU" 5       U" 5       /v nU R                  USS/5        SU l        g 7f)Nc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r#  GGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1  rg   rh   c                  0   >#    T " 5       I S h  vN   g N7frT   r6   r#  s   r   r&  GGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f2  s     $JJ s   c               3   Z   #    [         R                  v   [         R                  " S5      e7f)N+   r/   r6   r7   r   f3GGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3  r   r   rU   r9  Tr  )r   r&  r:  ru   r#  s       @r   *test_async_await_mixed_multi_native_future;GenCoroutineTest.test_async_await_mixed_multi_native_future  sf     		 
		 
	! 
	! rt$2r(+s   AA"c              #      #    S n[         R                  " [        R                  " SS9U" 5       5      v nU R	                  US5        SU l        g 7f)Nc                     #    g7frT   r6   r6   r7   r   r#  4GenCoroutineTest.test_async_with_timeout.<locals>.f1  s     s   r.   )hoursrU   T)r   with_timeoutdatetime	timedeltars   r   )r   r#  r$   s      r   test_async_with_timeout(GenCoroutineTest.test_async_with_timeout  sE     	 ''(:(:(CRTJJ$   AAc              #   |   #    [         R                  S 5       nU" 5       v nU R                  US 5        SU l        g 7f)Nc                      g r!   r6   r6   r7   r   r8   5GenCoroutineTest.test_sync_return_no_value.<locals>.f  s    r7   Tr  r  s      r   test_sync_return_no_value*GenCoroutineTest.test_sync_return_no_value  s=     		 
	 s&r   c              #   |   #    [         R                  S 5       nU" 5       v nU R                  US 5        SU l        g 7f)Nc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r8   6GenCoroutineTest.test_async_return_no_value.<locals>.f  s     **rh   Tr  r  s      r   test_async_return_no_value+GenCoroutineTest.test_async_return_no_value  s?      
	 
	 s&r   c              #      #    [         R                  S 5       nU" 5       nU R                  [        5         Uv   S S S 5        SU l        g ! , (       d  f       N= f7f)Nc                      SS-    g rC   r6   r6   r7   r   r8   +GenCoroutineTest.test_sync_raise.<locals>.f  rE   r7   Tr   r;   rG   rH   r   r   r8   futures      r   test_sync_raise GenCoroutineTest.test_sync_raise  sL     		 
	 01L 2 21   3AA
A

AAc              #      #    [         R                  S 5       nU" 5       nU R                  [        5         Uv   S S S 5        SU l        g ! , (       d  f       N= f7f)Nc               3   :   #    [         R                  v   SS-    g 7frC   r"   r6   r7   r   r8   ,GenCoroutineTest.test_async_raise.<locals>.f  rN   rO   TrU  rV  s      r   test_async_raise!GenCoroutineTest.test_async_raise  sL     		 
	 01L 2 21rZ  c              #      ^#    [         R                  S 5       m[         R                  U4S j5       nU" 5       nU R                  [        5         Uv   S S S 5        SU l        g ! , (       d  f       N= f7f)Nc                      SS-    g rC   r6   r6   r7   r   r#  >GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f1  rE   r7   c               3   R   >#     T " 5       v   g ! [          a    [        5       ef = f7fr!   )rH   KeyErrorr6  s   r   r&  >GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f2  s(     !d
$ !j !s   '	 '$'T)r   r;   rG   rd  r   )r   r&  rW  r#  s      @r   !test_replace_yieldpoint_exception2GenCoroutineTest.test_replace_yieldpoint_exception  sf      
	 
	 
	! 
	! x(L ) )(s   AA5A$A5$
A2.A5c              #      ^#    [         R                  S 5       m[         R                  U4S j5       nU" 5       v nU R                  US5        SU l        g 7f)Nc                      SS-    g rC   r6   r6   r7   r   r#  >GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f1  rE   r7   c               3   j   >#     T " 5       v   g ! [          a    [        R                  " S5      ef = f7frT   )rH   r   r   r6  s   r   r&  >GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2  s.     %d
$ %jjn$%s   3	 3!03rU   Tr  r(  s      @r   !test_swallow_yieldpoint_exception2GenCoroutineTest.test_swallow_yieldpoint_exception  sX      
	 
	 
	% 
	% t$s   AAc              #   "  ^#    / m[         R                  U4S j5       n[        5       nUR                  S 5        U" SU5      U" SU5      /v   U R	                  SR                  T5      S5        / mU" S[         R                  5      U" S[         R                  5      /v   U R	                  SR                  T5      S5        SU l        / mU" S[         R                  5      U" SU5      /v   U R	                  SR                  T5      S5        g 7f)	Nc              3   \   >#    [        S5       H  nTR                  U 5        Uv   M     g 7f)N   )r   append)name	yieldabler   callss      r   r8   'GenCoroutineTest.test_moment.<locals>.f  s%     1XT" s   ),ab 
aaaaabbbbb
abababababT
abbbbbaaaa)r   r;   r   
set_resultrs   joinr   r   )r   r8   	immediateru  s      @r   test_momentGenCoroutineTest.test_moment  s     		  
	  H	T"i !C"3446 cjj!1S#**#5666cjj!1S)#4556s   DDc              #   J   #    [         R                  " S5      v   SU l        g 7f)N{Gz?T)r   r.  r   r  s    r   
test_sleepGenCoroutineTest.test_sleep#  s     iios   !#c              #     ^#     " S S[         5      m[        R                  U4S j5       n U" S5      v    U" S5      v   SU l        g ! T a@  nU R                  [	        U5      S5        U R                  UR                  5         S nANTS nAff = f! T a@  nU R                  [	        U5      S5        U R                  UR                  5         S nANS nAff = f7f)	Nc                       \ rS rSrSrg)IGenCoroutineTest.test_py3_leak_exception_context.<locals>.LeakedExceptioni*  r6   Nr   r   r   r   r   r6   r7   r   LeakedExceptionr  *  s    r7   r  c                    > T" U 5      er!   r6   )	iterationr  s    r   inner?GenCoroutineTest.test_py3_leak_exception_context.<locals>.inner-  s    !),,r7   r.   1r`   2T)	Exceptionr   r;   rs   r   assertIsNone__context__r   )r   r  r)   r  s      @r   test_py3_leak_exception_context0GenCoroutineTest.test_py3_leak_exception_context(  s     	i 	 
	- 
	-	-(N
	-(N
   	-SVS)amm,,	-  	-SVS)amm,,	-sQ   )C
A
 
B C
B6BCBCC6CCCCrr   )rr      z#asyncio.Future has reference cyclesc                    ^ ^ [         R                  U 4S j5       m[         R                  U4S j5       nT R                  R                  USS9  T R	                  T R                  5       S 5        ST l        g )Nc               3      >#     " S S[         5      n U " 5       n[        R                  " U5      Tl        S n[        R
                  " U5      " 5       v   [        S5      e7f)Nc                       \ rS rSrSrg)GGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.FooiH  r6   Nr  r6   r7   r   Foor  H  s    r7   r  c                      g r!   r6   r6   r7   r   dummyIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyN      r7   z
Some error)objectweakrefref	local_refr   r;   
ValueError)r  	local_varr  r   s      r   r  :GenCoroutineTest.test_coroutine_refcounting.<locals>.innerF  sO     f  I$[[3DN --&((\**s   AA c               3   B   >#     T " 5       v   g ! [          a     g f = f7fr!   )r  )r  s   r   inner2;GenCoroutineTest.test_coroutine_refcounting.<locals>.inner2T  s#     g s   	 
rr   )timeoutT)r   r;   r<   r=   r   r  r   )r   r  r  s   ` @r   test_coroutine_refcounting+GenCoroutineTest.test_coroutine_refcounting?  sh     
	+ 
	+ 
	 
	 	fa0dnn&-r7   c                    SU l         [        R                  " 5       nU R                  UR                  UR                  5       5        UR	                  S5        S n[        R                  " U5      " 5       nU R                  U[        R                  5        S[        UR                  R                  S-   4-  n[        U5      nU R                  XE5        g )NTc               3   0   #    [         R                  v   g 7fr!   r"   r6   r7   r   r8   :GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fg  r   rh   zcreated at %s:%drr   )r   r-  get_event_loop
addCleanup	set_debug	get_debugr   r;   assertIsInstancer   __file____code__co_firstlinenoreprassertIn)r   asyncio_loopr8   r   expectedactuals         r   test_asyncio_future_debug_info/GenCoroutineTest.test_asyncio_future_debug_info`  s    --/..0F0F0HIt$	 }}Q!dGNN3 &1::3L3Lq3P(QQdh'r7   c              #      #    [         R                  S 5       n[        R                  " U" 5       U" 5       5      v nU R	                  USS/5        SU l        g 7f)Nc               3   Z   #    [         R                  v   [         R                  " S5      e7fr-   r/   r6   r7   r   r8   /GenCoroutineTest.test_asyncio_gather.<locals>.fv  s     ****Q-r   r.   T)r   r;   r-  gatherrs   r   )r   r8   rets      r   test_asyncio_gather$GenCoroutineTest.test_asyncio_gatherr  sQ      
	  
	  NN13,,q!f%s   AA)r   r  )%r   r   r   r   r   r   r   r  r	   r  r  r  r  r  r)  r0  r<  rE  rK  rP  rX  r^  rf  rm  r  r  r  r   unittestskipIfsysversion_infor  r  r  r   __classcell__)r   s   @r   r   r     s   	+	<            "    $     	 	   	 	  &  $ 7 74    , __s((&(*O :($ 
 
r7   r   c                   8    \ rS rSr\R
                  S 5       rSrg)GenCoroutineSequenceHandleri  c              #      #    [         R                  v   U R                  S5        [         R                  v   U R                  S5        [         R                  v   U R                  S5        g 7fNr  r  3)r   r   writefinishr  s    r   getGenCoroutineSequenceHandler.get  sE     jj

3jj

3jjC   A+A-r6   Nr   r   r   r   r   r;   r  r   r6   r7   r   r  r    s    ]] r7   r  c                   8    \ rS rSr\R
                  S 5       rSrg)%GenCoroutineUnfinishedSequenceHandleri  c              #      #    [         R                  v   U R                  S5        [         R                  v   U R                  S5        [         R                  v   U R                  S5        g 7fr  )r   r   r  r  s    r   r  )GenCoroutineUnfinishedSequenceHandler.get  sD     jj

3jj

3jj

3r  r6   Nr  r6   r7   r   r  r    s    ]] r7   r  c                   \    \ rS rSr\R
                  S 5       r\R
                  S 5       rSrg)UndecoratedCoroutinesHandleri  c              #   t   #    / U l         [        R                  v   U R                   R                  S5        g 7f)Nr  )chunksr   r   rr  r  s    r   prepare$UndecoratedCoroutinesHandler.prepare  s(     jj3s   68c              #     #    U R                   R                  S5        [        R                  v   U R                   R                  S5        [        R                  v   U R	                  SR                  U R                   5      5        g 7f)Nr  r  ry  )r  rr  r   r   r  r~  r  s    r   r   UndecoratedCoroutinesHandler.get  sV     3jj3jj

2774;;'(s   BB)r  N	r   r   r   r   r   r;   r  r  r   r6   r7   r   r  r    s0    ]]   
 	]]) )r7   r  c                   >    \ rS rSr\R
                  S 5       rS rSrg)AsyncPrepareErrorHandleri  c              #   D   #    [         R                  v   [        S5      e7f)N  )r   r   r   r  s    r   r   AsyncPrepareErrorHandler.prepare  s     jjns    c                 &    U R                  S5        g )Nok)r  r  s    r   r  AsyncPrepareErrorHandler.get  s    Dr7   r6   Nr  r6   r7   r   r  r    s    ]] r7   r  c                       \ rS rSrS rSrg)NativeCoroutineHandleri  c                 n   #    [         R                  " S5      I S h  vN   U R                  S5        g  N7f)Nr   r  )r-  r.  r  r  s    r   r  NativeCoroutineHandler.get  s(     mmA

4 	s   535r6   N)r   r   r   r   r  r   r6   r7   r   r  r    s    r7   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)

GenWebTesti  c                 ^    [        S[        4S[        4S[        4S[        4S[
        4/5      $ )N/coroutine_sequence/coroutine_unfinished_sequence/undecorated_coroutine/async_prepare_error/native_coroutine)r   r  r  r  r  r  r  s    r   get_appGenWebTest.get_app  sE    &(CD49 *+GH')AB$&<=	
 	
r7   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr     123fetchrs   bodyr   responses     r   test_coroutine_sequence_handler*GenWebTest.test_coroutine_sequence_handler  s%    ::34/r7   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr  r  r  r  s     r   *test_coroutine_unfinished_sequence_handler5GenWebTest.test_coroutine_unfinished_sequence_handler  s%    ::>?/r7   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr  r  r  r  s     r   test_undecorated_coroutines&GenWebTest.test_undecorated_coroutines  s%    ::67/r7   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr  r  )r  rs   coder  s     r    test_async_prepare_error_handler+GenWebTest.test_async_prepare_error_handler  s%    ::45,r7   c                     U R                  S5      nU R                  UR                  S5        U R                  UR                  S5        g )Nr     s   ok)r  rs   r
  r  r  s     r   test_native_coroutine_handler(GenWebTest.test_native_coroutine_handler  s9    ::12,.r7   r6   N)r   r   r   r   r  r  r  r  r  r  r   r6   r7   r   r  r    s     
000-/r7   r  c                       \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       rS	rg
)WithTimeoutTesti  c              #      #    U R                  [        R                  5         [        R                  " [        R
                  " SS9[        5       5      v   S S S 5        g ! , (       d  f       g = f7f)N皙?seconds)rG   r   TimeoutErrorrB  rC  rD  r   r  s    r   test_timeoutWithTimeoutTest.test_timeout  sD     s//0""8#5#5c#BFHMM 100s    A04A	A0
A-)A0c              #      ^#    [        5       mU R                  R                  [        R                  " SS9U4S j5        [
        R                  " [        R                  " SS9T5      v nU R                  US5        g 7f)Nr  r  c                  &   > T R                  S5      $ )Nasdf)r}  rW  s   r   <lambda>?WithTimeoutTest.test_completes_before_timeout.<locals>.<lambda>  s    V5F5Fv5Nr7     r  )r   r<   add_timeoutrC  rD  r   rB  rs   )r   r$   rW  s     @r   test_completes_before_timeout-WithTimeoutTest.test_completes_before_timeout  sb       s+-N	
 ''(:(:4(H&QQ(s   A;A>c              #   :  ^#    [        5       mU R                  R                  [        R                  " SS9U4S j5        U R                  [        5         [        R                  " [        R                  " SS9T5      v   S S S 5        g ! , (       d  f       g = f7f)Nr  r  c                  6   > T R                  [        5       5      $ r!   )set_exceptionrH   r  s   r   r  ;WithTimeoutTest.test_fails_before_timeout.<locals>.<lambda>  s    F(():)<=r7   r   )	r   r<   r!  rC  rD  rG   rH   r   rB  )r   rW  s    @r   test_fails_before_timeout)WithTimeoutTest.test_fails_before_timeout  sj       s+=	
 01""8#5#5d#CVLL 211s   AB,B
	B

BBc              #      #    [        5       nUR                  S5        [        R                  " [        R
                  " SS9U5      v nU R                  US5        g 7f)Nr  r   r  )r   r}  r   rB  rC  rD  rs   )r   rW  r$   s      r   test_already_resolved%WithTimeoutTest.test_already_resolved  sJ     &!''(:(:4(H&QQ(s   AAc           	   #   |  #    [         R                  " S5       nU R                  [        R                  5         [        R
                  " U R                  R                  5       UR                  [        R                  S5      5      v   S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nr.   r  )
r   ThreadPoolExecutorrG   r   r  rB  r<   r   submitr.  r   executors     r   test_timeout_concurrent_future.WithTimeoutTest.test_timeout_concurrent_future  s{      ''*h""3#3#34&&LL%%'S)I  5 +*44 +*s4   B< B+AB	B+	B<
B(	$B++
B95B<c              #   
  #    [         R                  " S5       nS nUR                  U5      nUR                  5         [        R
                  " [        R                  " SS9U5      v   S S S 5        g ! , (       d  f       g = f7f)Nr.   c                      g r!   r6   r6   r7   r   r  ?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummy  r  r7   r   r  )r   r.  r/  r$   r   rB  rC  rD  )r   r1  r  r8   s       r    test_completed_concurrent_future0WithTimeoutTest.test_completed_concurrent_future  s^      ''*h &AHHJ""8#5#5d#CQGG +**s   BAA2)	B2
B <Bc              #      #    [         R                  " S5       n[        R                  " [        R
                  " SS9UR                  S 5      5      v   S S S 5        g ! , (       d  f       g = f7f)Nr.   r   r  c                  .    [         R                  " S5      $ )Nr  )r   r.  r6   r7   r   r  ?WithTimeoutTest.test_normal_concurrent_future.<locals>.<lambda>  s    

4(8r7   )r   r.  r   rB  rC  rD  r/  r0  s     r   test_normal_concurrent_future-WithTimeoutTest.test_normal_concurrent_future  sP      ''*h""""40 89  +**s   A/<A	A/
A,(A/r6   N)r   r   r   r   r	   r  r"  r(  r+  r2  r7  r<  r   r6   r7   r   r  r    s    N N ) ) M M ) )   
H 
H  r7   r  c                   j    \ rS rSr\S 5       r\S 5       rS r\S 5       r\S 5       r	\S 5       r
Srg	)
WaitIteratorTesti  c                    [         R                  " 5       nU R                  UR                  5       S5        U R	                  [
        5         [         R                  " [        5       [        5       S9nS S S 5        U R                  UR                  S S5        U R                  UR                  S S5        g ! , (       d  f       NI= f)Nzempty generator iterated)r}   bad nil current indexbad nil current future)
r   WaitIteratorr   donerG   r  r   rs   current_indexcurrent_future)r   gs     r   test_empty_iterator$WaitIteratorTest.test_empty_iterator  s    "<=z*  vx8A + 	$0GH))41IJ	 +*s   &B44
Cc              #   (  #    [        5       n[        5       n[        5       nUR                  S5        UR                  S5        UR                  S5        [        R                  " XU5      nSnUR	                  5       (       Gd!  UR                  5       v nUS:X  aK  U R                  UR                  S5        U R                  UR                  U5        U R                  US5        OUS:X  aK  U R                  UR                  S5        U R                  UR                  U5        U R                  US5        OPUS:X  aJ  U R                  UR                  S5        U R                  UR                  U5        U R                  US5        US-  nUR	                  5       (       d  GM!  U R                  UR                  S S5        U R                  UR                  S S5        [        R                  " XS	9nUR	                  5       (       d  UR                  5       v nUR                  S
:X  a,  U R                  UR                  U:H  =(       a    US:H  S5        OfUR                  S:X  a,  U R                  UR                  U:H  =(       a    US:H  S5        O*U R                  SR                  UR                  5      5        US-  nUR	                  5       (       d  M  U R                  UR                  S S5        U R                  UR                  S S5        g 7f)N   rU   T   r   r.   r`   rA  rB  )r#  r&  r#  z"WaitIterator dict status incorrectr&  zgot bad WaitIterator index {})r   r}  r   rC  rD  nextrs   rE  r   rF  r   failformat)	r   r#  r&  r:  rG  r   rdgdrs	            r   test_already_done"WaitIteratorTest.test_already_done)  sp    XXX
b
b
bRR(&&((ffhA Av  !4a..3  B'a  !4a..3  B'a  !4a..3  B'FA! &&(($ 	$0GH))41IJ+''))wwyB4'%%+8b8 !!T)%%+8b8
 		9@@AQAQRSFA ''))" 	))41HI**D2JKs   FL$D1L;Lc                 >   US:X  a  US   R                  S5        OQUS:X  a  US   R                  [        5       5        O.US:X  a(  US   R                  S5        US   R                  S	5        US:  a+  U R                  R	                  U R
                  US-   U5        g g )
Nrr   r`   rK  rq  r      r.   rU   rL  )r}  r&  rH   r<   r  finish_coroutines)r   r  r   s      r   rW  "WaitIteratorTest.finish_coroutines_  s    >AJ!!"%!^AJ$$%6%89!^AJ!!"%AJ!!"%q=LL%%d&<&<i!mWU r7   c              #     #    [        5       [        5       [        5       [        5       /nU R                  SU5        [        R                  " U6 nSnUR	                  5       (       d   UR                  5       v nUS:X  a1  U R                  USS5        U R                  UR                  SS5        OmUS:X  a1  U R                  USS5        U R                  UR                  SS5        O6US:X  a0  U R                  US	S5        U R                  UR                  SS5        US-  nUR	                  5       (       d  M  g g ! [         a#    U R                  UR                  US   S
5         NJf = f7f)Nr   rK  iterator value incorrectr`   wrong indexrU   r.   rr   rL  zexception future invalid)r   rW  r   rC  rD  rM  rs   rE  rH   r   rF  )r   r   rG  r   rP  s        r   test_iteratorWaitIteratorTest.test_iteratork  s3    8VXvx:q'*g&&&((H&&(N 6$$Q,FG$$Q__aG!V$$Q,FG$$Q__aG!V$$Q,FG$$Q__aGFA &&(( % Xa..
<VWXs1   A#E*&D: 8B>E*8E*:*E'$E*&E''E*c              #      ^ ^#    [        5       [        5       [        5       [        5       /mT R                  ST5        ST l        UU 4S jnU" 5       v   T R                  T R                  5        g 7f)Nr   Fc                  B  >#    Sn [         R                  " T6 n U  S h  vN nU S:X  a1  TR                  USS5        TR                  UR                  SS5        O[	        S5      eU S-  n MR   NM
 O! [
         a    U S-  n  Of = fU  S h  vN  nU S:X  a1  TR                  USS5        TR                  UR                  SS5        OEU S	:X  a1  TR                  US
S5        TR                  UR                  S	S5        O[	        SU -  5      eU S-  n M  
 STl        g 7f)Nr   rK  rZ  r`   r[  z!expected exception on iteration 1r.   rU   rr   rL  zdidn't expect iteration %dT)r   rC  rs   rE  r  rH   r   )r   rG  rP  r   r   s      r   r8   5WaitIteratorTest.test_iterator_async_await.<locals>.f  s'    A  '*A	  !Av((B0JK((!]K'(KLLFAq % Q 	 	a6$$Q,FG$$Q__aG!V$$Q,FG$$Q__aG#$@1$DEEQ  !DMsb   DA2 A0A.A0A
A2 .A00A2 1D2BDBD	DBDBD)r   rW  r   r   )r   r8   r   s   ` @r   test_iterator_async_await*WaitIteratorTest.test_iterator_async_await  sS     
 8VXvx:q'*	!2 c	&s   A,A0c              #      #    [         R                  " [        R                  " SS9[         R                  " [         R
                  " S5      5      R                  5       5      v   g 7f)Nr  r  r   )r   rB  rC  rD  rC  r.  rM  r  s    r   test_no_refWaitIteratorTest.test_no_ref  sF      s+S-=-=ciil-K-P-P-R
 	
s   A#A%)r   N)r   r   r   r   r	   rH  rS  rW  r\  ra  rd  r   r6   r7   r   r?  r?    sp    K K 3L 3Lj
V  2 "' "'H 
 
r7   r?  c                   <    \ rS rSrS r\S 5       rS rS rS r	Sr
g)	RunnerGCTesti  c                 f    [         R                  " 5       S:H  =(       a    [        R                  S:  $ )NPyPyr  )platformpython_implementationr  r  r  s    r   is_pypy3RunnerGCTest.is_pypy3  s'    --/69Uc>N>NQU>UUr7   c              #      ^ ^^#    S /mU4S jm[         R                  UU U4S j5       n[         R                  " [        R                  " SS9U" 5       5      v   g 7f)Nc                  d   > [         R                  " S5        T S   " 5       R                  S5        g )Nr`   r   {   )gccollectr}  )weakref_scopes   r   callback&RunnerGCTest.test_gc.<locals>.callback  s$    JJqM!))#.r7   c               3      >#    [        5       n [        R                  " U 5      TS'   TR                  R	                  T5        U v   g 7f)Nr   )r   r  r  r<   r  )futrt  r   rs  s    r   tester$RunnerGCTest.test_gc.<locals>.tester  s7     (C&{{3/M!LL%%h/Is   AAr.   r  )r   r;   rB  rC  rD  )r   rx  rt  rs  s   ` @@r   test_gcRunnerGCTest.test_gc  sT      	/ 
	 
	 q)H
 	
s   AAc                   ^^^ U R                  5       n/ m/ m[        R                  U4S j5       m[        R                  UU4S j5       nUR                  U5        UR	                  5         [
        R                  " 5         U R                  TS   " 5       S 5        U R                  [        T5      S5        U R                  5       (       d  U R                  TS   S 5        g g )Nc               3      >#      [         R                  " S5      v   T R                  S5        M+  ! T R                  S 5        f = f7fNTgMbP?r   r.  rr  r$   s   r   infinite_coro9RunnerGCTest.test_gc_infinite_coro.<locals>.infinite_coro  s<     $))D/)MM$' 
 d#s   A,1 AAc               3      >#    T" 5       n X l         TR                  [        R                  " U 5      5        [        R
                  " S5      v   g 7fNg?)	_refcyclerr  r  r  r   r.  )rw  r  wfuts    r   do_something8RunnerGCTest.test_gc_infinite_coro.<locals>.do_something  s5     /CMKKC()))C. s   AAr   r`   )get_new_ioloopr   r;   r=   closerq  rr  r   assertGreaterEquallenrl  )r   loopr  r  r$   r  s      @@@r   test_gc_infinite_coro"RunnerGCTest.test_gc_infinite_coro  s     ""$		$ 
	$ 
	! 
	! 	l#




d1gi&FQ/}}MM&*d+ r7   c                   ^^^^ SS K mS mU R                  5       n/ m/ m[        R                  UUUU4S j5       nUR	                  U5        [        SS5         UR                  5         [        R                  " 5         S S S 5        U R                  TS   " 5       S 5        U R                  [        T5      S5        U R                  5       (       d  U R                  TS   S 5        g g ! , (       d  f       No= f)Nr   c                    #      [         R                  " S5      I S h  vN   U R                  S5        M1   N! U R                  S 5        f = f7fr~  r  r  s    r   r  @RunnerGCTest.test_gc_infinite_async_await.<locals>.infinite_coro  sA     $))D/))MM$' ) d#s   A8 68 AAc               3      >#    TR                   " 5       R                  T" T5      5      n X l        TR                  [        R
                  " U 5      5        [        R                  " S5      v   g 7fr  )r  create_taskr  rr  r  r  r   r.  )rw  r-  r  r$   r  s    r   r  ?RunnerGCTest.test_gc_infinite_async_await.<locals>.do_something  sL     ((*66}V7LMCMKKC()))C. s   A+A.r-  z$Task was destroyed but it is pendingr`   r  )r-  r  r   r;   r=   r   r  rq  rr  r   r  r  rl  )r   r  r  r-  r  r$   r  s      @@@@r   test_gc_infinite_async_await)RunnerGCTest.test_gc_infinite_async_await  s    	$ ""$		! 
	! 	l#y"HIJJLJJL J 	d1gi&FQ/}}MM&*d+  JIs   &C((
C6c                     [         R                  S 5       nU R                  5       nUR                  U5      nU R	                  US S /5        g )Nc               3      #    [         R                  " [         R                  [         R                  /5      v n [         R                  " U 5      e7fr!   )r   multir   r   r  s    r   wait_a_moment5RunnerGCTest.test_multi_moment.<locals>.wait_a_moment  s2     99cjj#**%=>>F**V$$s   AA)r   r;   r  r=   rs   )r   r  r  r$   s       r   test_multi_momentRunnerGCTest.test_multi_moment  sL     
	% 
	% ""$}-$.r7   r6   N)r   r   r   r   rl  r	   rz  r  r  r  r   r6   r7   r   rg  rg    s-    V 
 
*",H",H
/r7   rg  ctx_varzcontextvars module not presentc                       \ rS rSrS r\R                  S 5       rS r\R                  S 5       r	S r
\S 5       r\S 5       r\S	 5       rS
rg)ContextVarsTesti(  c                 l   #    [         R                  U5        U R                  U5      I S h  vN   g  N7fr!   r  setr  r0   s     r   native_rootContextVarsTest.native_root*  s!     Ajjms   *424c              #   d   #    [         R                  U5        S v   U R                  U5      v   g 7fr!   r  r0   s     r   gen_rootContextVarsTest.gen_root.  s!     Ajjms   .0c                 T  ^ ^^#    T R                  [        R                  5       T5        T R                  T5      I S h  vN   T R                  [        R                  5       T5        [        R
                  " 5       mT R                  R                  S UU U4S j5      I S h  vN   T R                  [        R                  5       T5        [        R                  " 5       R                  S UU U4S j5      I S h  vN   T R                  [        R                  5       T5        g  N N N-7f)Nc                  <   > T R                  TR                  T5      $ r!   runthread_innerctxr   r1   s   r   r  'ContextVarsTest.inner.<locals>.<lambda>;  s    ARARTU9Vr7   c                  <   > T R                  TR                  T5      $ r!   r  r  s   r   r  r  @  s    #''$"3"3Q7r7   )
rs   r  r  	gen_innercontextvarscopy_contextr<   run_in_executorr-  r  )r   r1   r  s   ``@r   r  ContextVarsTest.inner4  s     *nnQ* &&(ll**41VWWW* $$&667
 	
 	
 	* 	 
 	X	
s5   9D(D"A"D(!D$"AD(8D&9*D($D(&D(c              #      #    U R                  [        R                  5       U5        S v   U R                  [        R                  5       U5        g 7fr!   rs   r  r  r0   s     r   r  ContextVarsTest.gen_innerD  s4     **rG  c                 L    U R                  [        R                  5       U5        g r!   r  r0   s     r   r  ContextVarsTest.thread_innerJ  s    *r7   c              #      #    U R                  S5      U R                  S5      U R                  S5      U R                  S5      /v   g 7f)Nr.   r`   rr      )r  r  r  s    r   test_propagateContextVarsTest.test_propagateM  sE     
 QQMM!MM!	
 	
r   c              #   h   #    [         R                  S5      nS v   [         R                  U5        g 7fr-   )r  r  reset)r   tokens     r   
test_resetContextVarsTest.test_resetX  s#     A 	es   02c              #   ^   ^ ^#    SmU U4S jn[         R                  T5        U" 5       v   g 7f)N
   c                  V   >#    T R                  [        R                  5       T5        g 7fr!   r  r0   s   r   native_async_functiongContextVarsTest.test_propagate_to_first_yield_with_native_async_function.<locals>.native_async_functiond  s     W[[]A.s   &))r  r  )r   r  r1   s   ` @r   8test_propagate_to_first_yield_with_native_async_functionHContextVarsTest.test_propagate_to_first_yield_with_native_async_function`  s&     	/ 	A#%%s   )-r6   N)r   r   r   r   r  r   r;   r  r  r  r  r	   r  r  r  r   r6   r7   r   r  r  (  s}     	]] 
+  	]]+ +
+ 
 
   & &r7   r  __main__)3r-  
concurrentr   rq  rC  rj  r  r   r  r  tornado.concurrentr   tornado.logr   tornado.testingr   r   r   r	   tornado.test.utilr
   r   tornado.webr   r   r   tornador   r  ImportErrortypingTYPE_CHECKINGr   r   r   r   r  r  r  r  r  r  r  r?  rg  
ContextVarr  r  r  r   mainr6   r7   r   <module>r     sY     	   
    %  Q Q : > >  	%y;= y;xc} cL. 	N 	)> ) ~ ^ "/" "/J=m =@U
} U
pl/= l/^ $$Y/G 
$&FG?&m ?& H?&D zMMO m"  Ks   E EE