
    ^h!                        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  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  \RX                  " S 5      r-\	R\                  " \SL S!5       " S" S#\5      5       r/\0S$:X  a  \	Rb                  " 5         gg! \ a    Sr Nf = f)%    N)futures)Future)app_log)AsyncHTTPTestCaseAsyncTestCase	ExpectLoggen_test)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       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       O/home/james-whalen/.local/lib/python3.13/site-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     r5       r   f%GenBasicTest.test_no_yield.<locals>.f6   s    r6   r   	coroutineio_looprun_syncr   r7   s     r   test_no_yieldGenBasicTest.test_no_yield5   s,    		 
	 	a r6   c                     [         R                  S 5       nU R                  [        U R                  R
                  U5        g )Nc                      SS-    g Nr-   r   r5   r5   r6   r   r7   -GenBasicTest.test_exception_phase1.<locals>.f=   	    Er6   r   r:   assertRaisesZeroDivisionErrorr;   r<   r=   s     r   test_exception_phase1"GenBasicTest.test_exception_phase1<   s7    		 
	 	+T\\-B-BAFr6   c                     [         R                  S 5       nU R                  [        U R                  R
                  U5        g )Nc               3   :   #    [         R                  v   SS-    g 7frB   r!   r5   r6   r   r7   -GenBasicTest.test_exception_phase2.<locals>.fD        **E   rE   r=   s     r   test_exception_phase2"GenBasicTest.test_exception_phase2C   s7    		 
	 	+T\\-B-BAFr6   c                     [         R                  S 5       nU R                  [         R                  U R                  R
                  U5        g )Nc               3      #    Sv   g 7fN*   r5   r5   r6   r   r7   (GenBasicTest.test_bogus_yield.<locals>.fL   s
     H   r   r:   rF   BadYieldErrorr;   r<   r=   s     r   test_bogus_yieldGenBasicTest.test_bogus_yieldK   s<    		 
	 	#++T\\-B-BAFr6   c                     [         R                  S 5       nU R                  [         R                  U R                  R
                  U5        g )Nc               3      #    Sv   g 7fNr-      r5   r5   r6   r   r7   .GenBasicTest.test_bogus_yield_tuple.<locals>.fS   s
     LrV   rW   r=   s     r   test_bogus_yield_tuple#GenBasicTest.test_bogus_yield_tupleR   s<    		 
	 	#++T\\-B-BAFr6   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!   r5   r6   r   r7   "GenBasicTest.test_reuse.<locals>.fZ        **   r9   r=   s     r   
test_reuseGenBasicTest.test_reuseY   s>    		 
	 	a a r6   c                 f    [         R                  S 5       nU R                  R                  U5        g )Nc               3      #    S v   g 7fr    r5   r5   r6   r   r7   !GenBasicTest.test_none.<locals>.fb   s
     JrV   r9   r=   s     r   	test_noneGenBasicTest.test_nonea   s,    		 
	 	a r6   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_      )r1   assertEqualresultsr   s    r   r7   "GenBasicTest.test_multi.<locals>.fi   s=     !//2D4F4Fq4IJJGWq!f-s   :=r9   r=   s   ` r   
test_multiGenBasicTest.test_multih   s-    		. 
	. 	a r6   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barrq   )dictr1   rr   rs   s    r   r7   'GenBasicTest.test_multi_dict.<locals>.fq   sC      T%7%7%:@R@RST@UVVGWdqa&89s   AA	r9   r=   s   ` r   test_multi_dictGenBasicTest.test_multi_dictp   s-    		: 
	: 	a r6   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)Nrq   v1r-   v2)r   multi_futurer   rr   	responsesr   s    r   r7   *GenBasicTest.test_multi_delayed.<locals>.fy   sQ      "..At$djjD&9: I Yt5s   AAr9   r=   s   ` r   test_multi_delayedGenBasicTest.test_multi_delayedx   s-    		6 
	6 	a r6   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)Nrq   r   r-   r   rz   )r   r   r}   r   rr   r   s    r   r7   /GenBasicTest.test_multi_dict_delayed.<locals>.f   sV      "..At,$**Q2EF I Y4(@As   AAr9   r=   s   ` r   test_multi_dict_delayed$GenBasicTest.test_multi_dict_delayed   s/    		B 
	B 	a r6   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   r0   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$   rr   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   rt   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-   rq   )r-   r_   rq   r_   r   )r   r7   rt   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_   rz   )r}   r$   rr   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   rF   RuntimeErrorr   Multir)   rr   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   rF   r   r)   rr   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   r5   r6   r   r7   .GenBasicTest.test_sync_raise_return.<locals>.f   s    **,r6   r9   r=   s     r   test_sync_raise_return#GenBasicTest.test_sync_raise_return   s,    		 
	 	a r6   c                 f    [         R                  S 5       nU R                  R                  U5        g )Nc               3   X   #    [         R                  v   [         R                  " 5       e7fr    r.   r5   r6   r   r7   /GenBasicTest.test_async_raise_return.<locals>.f   s     ****,s   (*r9   r=   s     r   test_async_raise_return$GenBasicTest.test_async_raise_return   s,    		 
	 	a r6   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc                  .    [         R                  " S5      erS   r   r5   r6   r   r7   4GenBasicTest.test_sync_raise_return_value.<locals>.f       **R. r6   rT   r   r:   rr   r;   r<   r=   s     r   test_sync_raise_return_value)GenBasicTest.test_sync_raise_return_value   s9    		! 
	! 	T\\22156r6   c                     [         R                  S 5       nU R                  SU R                  R	                  U5      5        g )Nc                  .    [         R                  " S5      er]   r   r5   r6   r   r7   :GenBasicTest.test_sync_raise_return_value_tuple.<locals>.f  s    **V$$r6   r^   r   r=   s     r   "test_sync_raise_return_value_tuple/GenBasicTest.test_sync_raise_return_value_tuple  s9    		% 
	% 	!6!6q!9:r6   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rS   r.   r5   r6   r   r7   5GenBasicTest.test_async_raise_return_value.<locals>.f	       ****R.    )+rT   r   r=   s     r   test_async_raise_return_value*GenBasicTest.test_async_raise_return_value  s9    		! 
	! 	T\\22156r6   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.   r5   r6   r   r7   ;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:r6   r5   N)%__name__
__module____qualname____firstlineno__r   r:   r   r$   r)   r1   r>   rH   rO   rY   ra   rh   rm   rv   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r5   r6   r   r   r      sY   ]]  	]]  	]]  	]]   !GGGG!!!!	!	! * * - - $ $ * * 0 0 6 6  6  .!!7;7;r6   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\S 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     r6   c                 H   > [         TU ]  5         U R                  (       d   eg r    )r   tearDownr   r   s    r   r   GenCoroutineTest.tearDown!  s    }}}r6   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!   r5   r6   r   r7   +GenCoroutineTest.test_attributes.<locals>.f(       **rg   )r   r   r:   rr   r   r   assertIs__wrapped__r   r7   coros      r   test_attributes GenCoroutineTest.test_attributes%  sb    	 }}Q

3!,,7d&&*r6   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!   r5   r6   r   r7   6GenCoroutineTest.test_is_coroutine_function.<locals>.f3  r   rg   )r   r   r:   assertFalseis_coroutine_functionr   r   s      r   test_is_coroutine_function+GenCoroutineTest.test_is_coroutine_function0  si    	 }}Q2215611$782246:;r6   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rS   r   r5   r6   r   r7   0GenCoroutineTest.test_sync_gen_return.<locals>.f=  r   r6   rT   Tr   r:   rr   r   r   r7   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rS   r.   r5   r6   r   r7   1GenCoroutineTest.test_async_gen_return.<locals>.fG  r   r   rT   Tr  r  s      r   test_async_gen_return&GenCoroutineTest.test_async_gen_returnE  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rS   r5   r5   r6   r   r7   ,GenCoroutineTest.test_sync_return.<locals>.fR  s    r6   rT   Tr  r  s      r   test_sync_return!GenCoroutineTest.test_sync_returnP  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rS   r!   r5   r6   r   r7   -GenCoroutineTest.test_async_return.<locals>.f\  s     **rg   rT   Tr  r  s      r   test_async_return"GenCoroutineTest.test_async_returnZ  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rS   )r   Taskr;   add_callbackr   s   r   r7   3GenCoroutineTest.test_async_early_return.<locals>.fj  s     s   rT   Tr  r  s   `  r   test_async_early_return(GenCoroutineTest.test_async_early_returne  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rS   r.   r5   r6   r   f1-GenCoroutineTest.test_async_await.<locals>.f1v  r   r   c                  2   >#    T" 5       I S h  vN n U $  N7fr    r5   )r#   r"  s    r   f2-GenCoroutineTest.test_async_await.<locals>.f2~  s     4ZFM  s   rT   Tr  r   r%  r#   r"  s      @r   test_async_await!GenCoroutineTest.test_async_awaitt  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   rT   )asynciosleep)r,  s    r   r7   3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.f  s"     --""" #s   $"$rT   T)rr   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!   r5   r6   r   r"  GGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1  rf   rg   c                  0   >#    T " 5       I S h  vN   g N7frS   r5   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.   r5   r6   r   f3GGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3  r   r   rT   r8  Tr  )r   r%  r9  rt   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rS   r5   r5   r6   r   r"  4GenCoroutineTest.test_async_with_timeout.<locals>.f1  s     s   r-   )hoursrT   T)r   with_timeoutdatetime	timedeltarr   r   )r   r"  r#   s      r   test_async_with_timeout(GenCoroutineTest.test_async_with_timeout  sE     	 ''(:(:(CRTJJ$   AAc              #   z   #    [         R                  S 5       nU" 5       v nU R                  U5        SU l        g 7f)Nc                      g r    r5   r5   r6   r   r7   5GenCoroutineTest.test_sync_return_no_value.<locals>.f  s    r6   Tr   r:   assertIsNoner   r  s      r   test_sync_return_no_value*GenCoroutineTest.test_sync_return_no_value  s;     		 
	 s&!   9;c              #   z   #    [         R                  S 5       nU" 5       v nU R                  U5        SU l        g 7f)Nc               3   0   #    [         R                  v   g 7fr    r!   r5   r6   r   r7   6GenCoroutineTest.test_async_return_no_value.<locals>.f  s     **rg   TrJ  r  s      r   test_async_return_no_value+GenCoroutineTest.test_async_return_no_value  s;     		 
	 s&!rN  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 rB   r5   r5   r6   r   r7   +GenCoroutineTest.test_sync_raise.<locals>.f  rD   r6   Tr   r:   rF   rG   r   r   r7   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rB   r!   r5   r6   r   r7   ,GenCoroutineTest.test_async_raise.<locals>.f  rM   rN   TrW  rX  s      r   test_async_raise!GenCoroutineTest.test_async_raise  sL     		 
	 01L 2 21r\  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 rB   r5   r5   r6   r   r"  >GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f1  rD   r6   c               3   R   >#     T " 5       v   g ! [          a    [        5       ef = f7fr    )rG   KeyErrorr5  s   r   r%  >GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f2  s(     !d
$ !j !s   '	 '$'T)r   r:   rF   rf  r   )r   r%  rY  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 rB   r5   r5   r6   r   r"  >GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f1  rD   r6   c               3   j   >#     T " 5       v   g ! [          a    [        R                  " S5      ef = f7frS   )rG   r   r   r5  s   r   r%  >GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2  s.     %d
$ %jjn$%s   3	 3!03rT   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   r7   'GenCoroutineTest.test_moment.<locals>.f
  s%     1XT" s   ),ab 
aaaaabbbbb
abababababT
abbbbbaaaa)r   r:   r   
set_resultrr   joinr   r   )r   r7   	immediaterw  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(  r5   Nr   r   r   r   r   r5   r6   r   LeakedExceptionr  (  s    r6   r  c                    > T" U 5      er    r5   )	iterationr  s    r   inner?GenCoroutineTest.test_py3_leak_exception_context.<locals>.inner+  s    !),,r6   r-   1r_   2T)	Exceptionr   r:   rr   r   rK  __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c                    ^ ^ [         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       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>.FooiC  r5   Nr  r5   r6   r   Foor  C  s    r6   r  c                      g r    r5   r5   r6   r   dummyIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyI      r6   z
Some error)weakrefref	local_refr   r:   
ValueError)r  	local_varr  r   s      r   r  :GenCoroutineTest.test_coroutine_refcounting.<locals>.innerA  sM       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>.inner2O  s#     g s   	 
rq   )timeoutT)r   r:   r;   r<   rK  r  r   )r   r  r  s   ` @r   test_coroutine_refcounting+GenCoroutineTest.test_coroutine_refcounting=  sh     
	+ 
	+ 
	 
	 	fa0$..*+r6   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!   r5   r6   r   r7   :GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fb  r   rg   zcreated at %s:%drq   )r   r,  get_event_loop
addCleanup	set_debug	get_debugr   r:   assertIsInstancer   __file____code__co_firstlinenoreprassertIn)r   asyncio_loopr7   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'r6   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.   r5   r6   r   r7   /GenCoroutineTest.test_asyncio_gather.<locals>.fq  s     ****Q-r   r-   T)r   r:   r,  gatherrr   r   )r   r7   rets      r   test_asyncio_gather$GenCoroutineTest.test_asyncio_gatherm  sQ      
	  
	  NN13,,q!f%s   AA)r   r  )!r   r   r   r   r   r   r   r   r	   r  r  r  r  r  r(  r/  r;  rD  rL  rR  rZ  r`  rh  ro  r  r  r  r
   r  r  r  r   __classcell__)r   s   @r   r   r     s   	+	<            "    $         	 	  &  $ 7 74    ,  :($ 
 
r6   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-r5   Nr   r   r   r   r   r:   r  r   r5   r6   r   r  r  {  s    ]] r6   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  r5   Nr  r5   r6   r   r  r    s    ]] r6   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   rt  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  r{  )r  rt  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   r5   r6   r   r  r    s0    ]]   
 	]]) )r6   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r6   r5   Nr  r5   r6   r   r  r    s    ]] r6   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r5   N)r   r   r   r   r  r   r5   r6   r   r  r    s    r6   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$&<=	
 	
r6   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr     123fetchrr   bodyr   responses     r   test_coroutine_sequence_handler*GenWebTest.test_coroutine_sequence_handler  s%    ::34/r6   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%    ::>?/r6   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/r6   c                 ^    U R                  S5      nU R                  UR                  S5        g )Nr  r  )r  rr   coder  s     r    test_async_prepare_error_handler+GenWebTest.test_async_prepare_error_handler  s%    ::45,r6   c                     U R                  S5      nU R                  UR                  S5        U R                  UR                  S5        g )Nr     s   ok)r  rr   r  r  r  s     r   test_native_coroutine_handler(GenWebTest.test_native_coroutine_handler  s9    ::12,.r6   r5   N)r   r   r   r   r  r  r  r  r  r	  r   r5   r6   r   r  r    s     
000-/r6   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)rF   r   TimeoutErrorrA  rB  rC  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  rY  s   r   <lambda>?WithTimeoutTest.test_completes_before_timeout.<locals>.<lambda>  s    V5F5Fv5Nr6     r  )r   r;   add_timeoutrB  rC  r   rA  rr   )r   r#   rY  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_exceptionrG   r  s   r   r  ;WithTimeoutTest.test_fails_before_timeout.<locals>.<lambda>  s    F(():)<=r6   r  )	r   r;   r  rB  rC  rF   rG   r   rA  )r   rY  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   rA  rB  rC  rr   )r   rY  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   ThreadPoolExecutorrF   r   r  rA  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    r5   r5   r6   r   r  ?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummy  r  r6   r  r  )r   r(  r)  r#   r   rA  rB  rC  )r   r+  r  r7   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-  r5   r6   r   r  ?WithTimeoutTest.test_normal_concurrent_future.<locals>.<lambda>  s    

4(8r6   )r   r(  r   rA  rB  rC  r)  r*  s     r   test_normal_concurrent_future-WithTimeoutTest.test_normal_concurrent_future  sP      ''*h""""40 89  +**s   A/<A	A/
A,(A/r5   N)r   r   r   r   r	   r  r  r"  r%  r,  r1  r6  r   r5   r6   r   r  r    s    N N ) ) M M ) )   
H 
H  r6   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5        U R                  UR                  S5        g ! , (       d  f       NG= f)Nzempty generator iterated)r|   bad nil current indexbad nil current future)
r   WaitIteratorr   donerF   r  r   rK  current_indexcurrent_future)r   gs     r   test_empty_iterator$WaitIteratorTest.test_empty_iterator  s    "<=z*  vx8A + 	!//+BC!**,DE	 +*s   &B22
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5        U R                  UR                  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        OZUR                  S:X  a,  U R                  UR                  U:H  =(       a    US:H  S5        OU R                  SUR                   35        US-  nUR	                  5       (       d  M  U R                  UR                  S5        U R                  UR                  S5        g 7f)N   rT   T   r   r-   r_   r;  r<  )r"  r%  r"  z"WaitIterator dict status incorrectr%  zgot bad WaitIterator index )r   r  r   r=  r>  nextrr   r?  r   r@  rK  r   fail)	r   r"  r%  r9  rA  r   rdgdrs	            r   test_already_done"WaitIteratorTest.test_already_done$  sc    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! &&(($ 	!//+BC!**,DE+''))wwyB4'%%+8b8 !!T)%%+8b8
 		78H8H7IJKFA ''))  	!//+BC!**,DEs   FL$D#L	9L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 )
Nrq   r_   rE  rs  r      r-   rT   rF  )r  r   rG   r;   r  finish_coroutines)r   r  r   s      r   rP  "WaitIteratorTest.finish_coroutinesY  s    >AJ!!"%!^AJ$$%6%89!^AJ!!"%AJ!!"%q=LL%%d&<&<i!mWU r6   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   rE  iterator value incorrectr_   wrong indexrT   r-   rq   rF  zexception future invalid)r   rP  r   r=  r>  rG  rr   r?  rG   r   r@  )r   r   rA  r   rI  s        r   test_iteratorWaitIteratorTest.test_iteratore  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   rE  rS  r_   rT  z!expected exception on iteration 1r-   rT   rq   rF  zdidn't expect iteration %dT)r   r=  rr   r?  r  rG   r   )r   rA  rI  r   r   s      r   r7   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   rP  r   r   )r   r7   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   rA  rB  rC  r=  r-  rG  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	   rB  rL  rP  rU  rZ  r]  r   r5   r6   r   r9  r9    sp    F F 2F 2Fh
V  2 "' "'H 
 
r6   r9  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PyPy)rq   )platformpython_implementationsysversion_infor  s    r   is_pypy3RunnerGCTest.is_pypy3  s'    --/69Uc>N>NQU>UUr6   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!))#.r6   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  )futro  r   rn  s    r   tester$RunnerGCTest.test_gc.<locals>.tester  s7     (C&{{3/M!LL%%h/Is   AA皙?r  )r   r:   rA  rB  rC  )r   rs  ro  rn  s   ` @@r   test_gcRunnerGCTest.test_gc  sN      	/ 
	 
	 x11#>IIs   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       5        U R                  [        T5      S5        U R                  5       (       d  U R                  T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-  rt  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Nru  )	_refcyclert  r  r  r   r-  )rr  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<   closerl  rm  rK  assertGreaterEquallenrg  )r   loopr  r}  r#   r  s      @@@r   test_gc_infinite_coro"RunnerGCTest.test_gc_infinite_coro  s     ""$		$ 
	$ 
	! 
	! 	l#




$q')$FQ/}}fRj) r6   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       5        U R                  [        T5      S5        U R                  5       (       d  U R                  TS   5        g g ! , (       d  f       Nm= 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rz  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  rt  r  r  r   r-  )rr  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  rl  rm  rK  r  r  rg  )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 	$q')$FQ/}}fRj)  JIs   &C&&
C4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<   rr   )r   r  r  r#   s       r   test_multi_momentRunnerGCTest.test_multi_moment  sL     
	% 
	% ""$}-$.r6   r5   N)r   r   r   r   rg  r	   rv  r  r  r  r   r5   r6   r   r`  r`    s/    V J J$"*H"*H
/r6   r`  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  r/   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  r/   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   r0   s   r   r  'ContextVarsTest.inner.<locals>.<lambda>2  s    ARARTU9Vr6   c                  <   > T R                  TR                  T5      $ r    r  r  s   r   r  r  7  s    #''$"3"3Q7r6   )
rr   r  r  	gen_innercontextvarscopy_contextr;   run_in_executorr,  r  )r   r0   r  s   ``@r   r  ContextVarsTest.inner+  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    rr   r  r  r/   s     r   r  ContextVarsTest.gen_inner;  s4     **rF  c                 L    U R                  [        R                  5       U5        g r    r  r/   s     r   r  ContextVarsTest.thread_innerA  s    *r6   c              #      #    U R                  S5      U R                  S5      U R                  S5      U R                  S5      /v   g 7f)Nr-   r_   rq      )r  r  r  s    r   test_propagateContextVarsTest.test_propagateD  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_resetO  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  r/   s   r   native_async_functiongContextVarsTest.test_propagate_to_first_yield_with_native_async_function.<locals>.native_async_function[  s     W[[]A.s   &))r  r  )r   r  r0   s   ` @r   8test_propagate_to_first_yield_with_native_async_functionHContextVarsTest.test_propagate_to_first_yield_with_native_async_functionW  s&     	/ 	A#%%s   )-r5   N)r   r   r   r   r  r   r:   r  r  r  r  r	   r  r  r  r   r5   r6   r   r  r    s}     	]] 
+  	]]+ +
+ 
 
   & &r6   r  __main__)2r,  
concurrentr   rl  rB  rc  re  r   r  unittesttornado.concurrentr   tornado.logr   tornado.testingr   r   r   r	   tornado.test.utilr
   tornado.webr   r   r   tornador   r  ImportErrortypingTYPE_CHECKINGr   r   r   r   r  r  r  r  r  r  r  r9  r`  
ContextVarr  skipIfr  r   mainr5   r6   r   <module>r     sY     	   
    %  Q Q , > >  	%x;= x;v_} _D. 	N 	)> ) ~ ^ "/" "/J=m =@T
} T
ni/= i/X $$Y/G 
$&FG?&m ?& H?&D zMMO ["  Ks   E EE