
    [4%e-                        d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZ 	 d dlZn# e$ r dZY nw xY wd dlZej        rd d	lm Z m!Z!  G d
 de          Z" G d de          Z# G d de          Z$ G d de          Z% G d de          Z& G d de          Z' G d de          Z( G d de          Z) G d de          Z* G d de          Z+ G d de          Z,e ej-        d           Z. e	j/        edu d!           G d" d#e                      Z0e1d$k    r e	j2                     dS dS )%    N)futures)Future)app_log)AsyncHTTPTestCaseAsyncTestCase	ExpectLoggen_test)skipOnTravisskipNotCPython)ApplicationRequestHandler	HTTPError)gen)ListOptionalc                      e Zd Zej        d             Zej        d             Zej        d             Zej        d             Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zeed                         Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zd Zd Zd Z d Z!d Z"d Z#dS )GenBasicTestc              #   n   K   t          |          D ]}t          j        V  t          j        |          )z0Returns arg after a number of IOLoop iterations.)ranger   momentReturn)self
iterationsargis       5lib/python3.11/site-packages/tornado/test/gen_test.pydelayzGenBasicTest.delay   s>       z"" 	 	A*joo    c              #   &   K   t           j        V  |S Nr   r   r   results     r   async_futurezGenBasicTest.async_future&   s      jr   c              #   &   K   t           j        V  |r    r!   )r   es     r   async_exceptionzGenBasicTest.async_exception+   s      jr   c              #   P   K   t           j        V  t          j        |dz             N   r   r   r   r   xs     r   add_one_asynczGenBasicTest.add_one_async0   s(      jjQr   c                 d    t           j        d             }| j                            |           d S )Nc                      d S r     r1   r   r   fz%GenBasicTest.test_no_yield.<locals>.f6   s    Dr   r   	coroutineio_looprun_syncr   r2   s     r   test_no_yieldzGenBasicTest.test_no_yield5   s;    		 	 
	 	a     r   c                 |    t           j        d             }|                     t          | j        j        |           d S )Nc                      ddz   d S Nr*   r   r1   r1   r   r   r2   z-GenBasicTest.test_exception_phase1.<locals>.f=       EEEEr   r   r4   assertRaisesZeroDivisionErrorr5   r6   r7   s     r   test_exception_phase1z"GenBasicTest.test_exception_phase1<   sC    		 	 
	 	+T\-BAFFFFFr   c                 |    t           j        d             }|                     t          | j        j        |           d S )Nc               3   0   K   t           j        V  ddz   d S r;   r!   r1   r   r   r2   z-GenBasicTest.test_exception_phase2.<locals>.fD   !      *EEEEr   r=   r7   s     r   test_exception_phase2z"GenBasicTest.test_exception_phase2C   sC    		 	 
	 	+T\-BAFFFFFr   c                     t           j        d             }|                     t           j        | j        j        |           d S )Nc               3      K   dV  d S N*   r1   r1   r   r   r2   z(GenBasicTest.test_bogus_yield.<locals>.fL   s      HHHHHr   r   r4   r>   BadYieldErrorr5   r6   r7   s     r   test_bogus_yieldzGenBasicTest.test_bogus_yieldK   sE    		 	 
	 	#+T\-BAFFFFFr   c                     t           j        d             }|                     t           j        | j        j        |           d S )Nc               3      K   dV  d S Nr*      r1   r1   r   r   r2   z.GenBasicTest.test_bogus_yield_tuple.<locals>.fS   s      LLLLLr   rI   r7   s     r   test_bogus_yield_tuplez#GenBasicTest.test_bogus_yield_tupleR   sE    		 	 
	 	#+T\-BAFFFFFr   c                     t           j        d             }| j                            |           | j                            |           d S )Nc               3   &   K   t           j        V  d S r    r!   r1   r   r   r2   z"GenBasicTest.test_reuse.<locals>.fZ         *r   r3   r7   s     r   
test_reusezGenBasicTest.test_reuseY   sQ    		 	 
	 	a   a     r   c                 d    t           j        d             }| j                            |           d S )Nc               3      K   d V  d S r    r1   r1   r   r   r2   z!GenBasicTest.test_none.<locals>.fb   s      JJJJJr   r3   r7   s     r   	test_nonezGenBasicTest.test_nonea   s;    		 	 
	 	a     r   c                 j     t           j         fd            } j                            |           d S )Nc               3      K                        d                               d          gV }                     | ddg           d S )Nr*   rP      )r.   assertEqualresultsr   s    r   r2   z"GenBasicTest.test_multi.<locals>.fi   sS      !//22D4F4Fq4I4IJJJGWq!f-----r   r3   r7   s   ` r   
test_multizGenBasicTest.test_multih   sF    		. 	. 	. 	. 
	. 	a     r   c                 j     t           j         fd            } j                            |           d S )Nc               3      K   t                              d                              d                    V }                     | t          dd                     d S )Nr*   rP   foobarr[   )dictr.   r\   r]   s    r   r2   z'GenBasicTest.test_multi_dict.<locals>.fq   se       T%7%7%:%:@R@RST@U@UVVVVVGWdqa&8&8&899999r   r3   r7   s   ` r   test_multi_dictzGenBasicTest.test_multi_dictp   sF    		: 	: 	: 	: 
	: 	a     r   c                 j     t           j         fd            } j                            |           d S )Nc               3      K   t          j                            dd                              dd          g          V }                     | ddg           d S )Nr[   v1r*   v2)r   multi_futurer   r\   	responsesr   s    r   r2   z*GenBasicTest.test_multi_delayed.<locals>.fy   sk       ".At$$djjD&9&9:   I Yt55555r   r3   r7   s   ` r   test_multi_delayedzGenBasicTest.test_multi_delayedx   sF    		6 	6 	6 	6 
	6 	a     r   c                 j     t           j         fd            } j                            |           d S )Nc            	   3      K   t          j        t                              dd                              dd                              V }                     | t          dd                     d S )Nr[   ri   r*   rj   rb   )r   rk   re   r   r\   rl   s    r   r2   z/GenBasicTest.test_multi_dict_delayed.<locals>.f   s|       ".At,,$**Q2E2EFFF   I Y4(@(@(@AAAAAr   r3   r7   s   ` r   test_multi_dict_delayedz$GenBasicTest.test_multi_dict_delayed   sK    		B 	B 	B 	B 
	B 	a     r   c              #      K   t          j                     }d t          d          D             V  t          j                     }|                     ||z
  d           d S )Nc                 &    g | ]}t           j        S r1   r!   ).0r   s     r   
<listcomp>z7GenBasicTest.test_multi_performance.<locals>.<listcomp>   s    ///asz///r   i  g      ?)timer   
assertLess)r   startends      r   test_multi_performancez#GenBasicTest.test_multi_performance   s\       	//5;;//////ikkeS)))))r   c              #      K   g V }|                      t          |t                               i V }|                      t          |t                               d S r    )
assertTrue
isinstancelistre   )r   r-   ys      r   test_multi_emptyzGenBasicTest.test_multi_empty   sX       HH
1d++,,,HH
1d++,,,,,r   c              #   d   K   |                      d          V }|                     |d           d S r)   r$   r\   r"   s     r   test_futurezGenBasicTest.test_future   s;      ((++++#####r   c              #      K   |                      d          |                      d          gV }|                     |ddg           d S )Nr*   rP   r   r   r^   s     r   test_multi_futurezGenBasicTest.test_multi_future   sR      **1--t/@/@/C/CDDD1a&)))))r   c              #      K   |                      d          }|                      d          ||                      d          |gV }|                     |g d           d S )NrP   r*   r[   )r*   rP   r[   rP   r   )r   r2   r^   s      r   test_multi_future_duplicatez(GenBasicTest.test_multi_future_duplicate   sk       a  **1--q$2C2CA2F2FJJJ,,,/////r   c              #      K   t          |                     d          |                     d                    V }|                     |t          dd                     d S )Nr*   rP   rb   )re   r$   r\   r   s     r   test_multi_dict_futurez#GenBasicTest.test_multi_dict_future   sc      !2!21!5!54;L;LQ;O;OPPPPP$1!"4"4"455555r   c           
   #     K   t          t          d          5  |                     t                    5 }t	          j        |                     t          d                    |                     t          d                    g          V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          |j	                  d           |                     t                    5  t	          j        |                     t          d                    | 
                    d          g          V  d d d            n# 1 swxY w Y   |                     t                    5  t	          j        |                     t          d                    |                     t          d                    gt                    V  d d d            d S # 1 swxY w Y   d S Nz!Multiple exceptions in yield listzerror 1zerror 2rP   )quiet_exceptions)r   r   r>   RuntimeErrorr   Multir'   r\   str	exceptionr$   r   cms     r   test_multi_exceptionsz"GenBasicTest.test_multi_exceptions   s     w CDD 	 	""<00 Bi,,\)-D-DEE,,\)-D-DEE                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**I666 |,, 	 	)%%l9&=&=>>@Q@QRS@T@TU    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 |,, 	 	)((i)@)@AA((i)@)@AA ".     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s[   B/ABB/B	B/B	 B//B36B3<AEEE9A G&&G*-G*c           	   #     K   t          t          d          5  |                     t                    5 }|                     t          d                    |                     t          d                    gV  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          |j                  d           |                     t                    5  |                     t          d                    |                     d          gV  d d d            n# 1 swxY w Y   |                     t                    5  t          j
        |                     t          d                    |                     t          d                    gt                    V  d d d            d S # 1 swxY w Y   d S r   )r   r   r>   r   r'   r\   r   r   r$   r   rk   r   s     r   test_multi_future_exceptionsz)GenBasicTest.test_multi_future_exceptions   s     w CDD 	 	""<00 B((i)@)@AA((i)@)@AA                 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**I666 |,, 	X 	X''Y(?(?@@$BSBSTUBVBVWWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X |,, 	 	"((i)@)@AA((i)@)@AA ".     	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   BAB:BB
	
BB
	BB!$B!*:D00D47D4A GG	Gc                 d    t           j        d             }| j                            |           d S )Nc                  (    t          j                    r    r   r   r1   r   r   r2   z.GenBasicTest.test_sync_raise_return.<locals>.f   s    *,,r   r3   r7   s     r   test_sync_raise_returnz#GenBasicTest.test_sync_raise_return   s;    		 	 
	 	a     r   c                 d    t           j        d             }| j                            |           d S )Nc               3   H   K   t           j        V  t          j                    r    r+   r1   r   r   r2   z/GenBasicTest.test_async_raise_return.<locals>.f   s       **,,r   r3   r7   s     r   test_async_raise_returnz$GenBasicTest.test_async_raise_return   s;    		 	 
	 	a     r   c                     t           j        d             }|                     d| j                            |                     d S )Nc                  *    t          j        d          rG   r   r1   r   r   r2   z4GenBasicTest.test_sync_raise_return_value.<locals>.f       *R.. r   rH   r   r4   r\   r5   r6   r7   s     r   test_sync_raise_return_valuez)GenBasicTest.test_sync_raise_return_value   sK    		! 	! 
	! 	T\2215566666r   c                     t           j        d             }|                     d| j                            |                     d S )Nc                  *    t          j        d          rN   r   r1   r   r   r2   z:GenBasicTest.test_sync_raise_return_value_tuple.<locals>.f  s    *V$$$r   rO   r   r7   s     r   "test_sync_raise_return_value_tuplez/GenBasicTest.test_sync_raise_return_value_tuple  sK    		% 	% 
	% 	!6!6q!9!9:::::r   c                     t           j        d             }|                     d| j                            |                     d S )Nc               3   J   K   t           j        V  t          j        d          rG   r+   r1   r   r   r2   z5GenBasicTest.test_async_raise_return_value.<locals>.f
  "      **R.. r   rH   r   r7   s     r   test_async_raise_return_valuez*GenBasicTest.test_async_raise_return_value	  sK    		! 	! 
	! 	T\2215566666r   c                     t           j        d             }|                     d| j                            |                     d S )Nc               3   J   K   t           j        V  t          j        d          rN   r+   r1   r   r   r2   z;GenBasicTest.test_async_raise_return_value_tuple.<locals>.f  s$      **V$$$r   rO   r   r7   s     r   #test_async_raise_return_value_tuplez0GenBasicTest.test_async_raise_return_value_tuple  sK    		% 	% 
	% 	!6!6q!9!9:::::r   N)$__name__
__module____qualname__r   r4   r   r$   r'   r.   r8   r@   rD   rK   rQ   rU   rX   r_   rf   rn   rq   r
   r	   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   r   r      ss       ]  ] 	]  ] 	]  ] 	]    ] ! ! !G G GG G GG G GG G G! ! !! ! !! ! !! ! !	! 	! 	!	! 	! 	! * * X \* - - X- $ $ X$ * * X* 0 0 X0 6 6 X6   X6   X.! ! !! ! !7 7 7; ; ;7 7 7; ; ; ; ;r   r   c                   F    e Zd Z fdZ fdZd Zd Zed             Zed             Z	ed             Z
ed             Zed	             Zed
             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Ze ej        dej        cxk     odk     nc d          d                         Zd Z ed             Z! xZ"S )GenCoroutineTestc                 V    d| _         t                                                       d S )NF)finishedsupersetUpr   	__class__s    r   r   zGenCoroutineTest.setUp  s!     r   c                 Z    t                                                       | j        sJ d S r    )r   tearDownr   r   s    r   r   zGenCoroutineTest.tearDown"  s-    }r   c                     d| _         d }t          j        |          }|                     |j        |j                   |                     |j        |j                   |                     |j        |           d S )NTc               3   &   K   t           j        V  d S r    r!   r1   r   r   r2   z+GenCoroutineTest.test_attributes.<locals>.f)        *r   )r   r   r4   r\   r   r   assertIs__wrapped__r   r2   coros      r   test_attributesz GenCoroutineTest.test_attributes&  sz    	 	 	 }Q
333!,777d&*****r   c                 <   d| _         d }t          j        |          }|                     t          j        |                     |                     t          j        |                     |                     t          j         |                                 d S )NTc               3   &   K   t           j        V  d S r    r!   r1   r   r   r2   z6GenCoroutineTest.test_is_coroutine_function.<locals>.f4  r   r   )r   r   r4   assertFalseis_coroutine_functionr|   r   s      r   test_is_coroutine_functionz+GenCoroutineTest.test_is_coroutine_function1  s    	 	 	 }Q21556661$7788824466::;;;;;r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc                  *    t          j        d          rG   r   r1   r   r   r2   z0GenCoroutineTest.test_sync_gen_return.<locals>.f>  r   r   rH   Tr   r4   r\   r   r   r2   r#   s      r   test_sync_gen_returnz%GenCoroutineTest.test_sync_gen_return<  sS      		! 	! 
	! qss$$$r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc               3   J   K   t           j        V  t          j        d          rG   r+   r1   r   r   r2   z1GenCoroutineTest.test_async_gen_return.<locals>.fH  r   r   rH   Tr   r   s      r   test_async_gen_returnz&GenCoroutineTest.test_async_gen_returnF  sS      		! 	! 
	! qss$$$r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc                      dS rG   r1   r1   r   r   r2   z,GenCoroutineTest.test_sync_return.<locals>.fS  s    2r   rH   Tr   r   s      r   test_sync_returnz!GenCoroutineTest.test_sync_returnQ  sS      		 	 
	 qss$$$r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc               3   &   K   t           j        V  dS rG   r!   r1   r   r   r2   z-GenCoroutineTest.test_async_return.<locals>.f]  s      *2r   rH   Tr   r   s      r   test_async_returnz"GenCoroutineTest.test_async_return[  sS      		 	 
	 qss$$$r   c              #       K   t           j         fd            } |            V }                     |d           d _        d S )Nc               3      K   	 dS )NTrH   )r   Taskr5   add_callbackr   s   r   r2   z3GenCoroutineTest.test_async_early_return.<locals>.fk  s      rr   rH   Tr   r   s   `  r   test_async_early_returnz(GenCoroutineTest.test_async_early_returnf  s`      
 
	6 	6 	6 	6 
	6
 qss$$$r   c              #      K   t           j        d             fd} |            V }|                     |d           d| _        d S )Nc               3   J   K   t           j        V  t          j        d          rG   r+   r1   r   r   f1z-GenCoroutineTest.test_async_await.<locals>.f1w  r   r   c                  ,   K                 d {V } | S r    r1   )r#   r   s    r   f2z-GenCoroutineTest.test_async_await.<locals>.f2  s#      244ZZZZZZFMr   rH   Tr   r   r   r#   r   s      @r   test_async_awaitz!GenCoroutineTest.test_async_awaitu  sm      		! 	! 
	!	 	 	 	 	 rtt$$$r   c              #   b   K   d } |            V }|                      |d           d| _        d S )Nc                  >   K   dd l }  | j        d           d {V  dS )Nr   rH   )asynciosleep)r   s    r   r2   z3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.f  s8      NNN'-"""""""""2r   rH   T)r\   r   r   s      r   test_asyncio_sleep_zeroz(GenCoroutineTest.test_asyncio_sleep_zero  sG      	 	 	 qss$$$r   c              #      K   t           j        d             fd}t           j        d             } |             |            gV }|                     |ddg           d| _        d S )Nc               3   &   K   t           j        V  d S r    r!   r1   r   r   r   zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1  rT   r   c                  ,   K                  d {V  dS rG   r1   r   s   r   r   zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f2  s#      "$$JJJJJJJ2r   c               3   J   K   t           j        V  t          j        d          )N+   r+   r1   r   r   f3zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3  r   r   rH   r   Tr   )r   r   r   r^   r   s       @r   *test_async_await_mixed_multi_native_futurez;GenCoroutineTest.test_async_await_mixed_multi_native_future  s      		 	 
		 	 	 	 	 
	! 	! 
	! rrtt$$2r(+++r   c              #      K   d }t          j        t          j        d           |                      V }|                     |d           d| _        d S )Nc                  
   K   dS rG   r1   r1   r   r   r   z4GenCoroutineTest.test_async_with_timeout.<locals>.f1  s      2r   r*   )hoursrH   T)r   with_timeoutdatetime	timedeltar\   r   )r   r   r#   s      r   test_async_with_timeoutz(GenCoroutineTest.test_async_with_timeout  sd      	 	 	 '(:(C(C(CRRTTJJJJ$$$r   c              #      K   t           j        d             } |            V }|                     |d            d| _        d S )Nc                      d S r    r1   r1   r   r   r2   z5GenCoroutineTest.test_sync_return_no_value.<locals>.f  s    Fr   Tr   r   s      r   test_sync_return_no_valuez*GenCoroutineTest.test_sync_return_no_value  sS      		 	 
	 qss&&&r   c              #      K   t           j        d             } |            V }|                     |d            d| _        d S )Nc               3   &   K   t           j        V  d S r    r!   r1   r   r   r2   z6GenCoroutineTest.test_async_return_no_value.<locals>.f  s      *Fr   Tr   r   s      r   test_async_return_no_valuez+GenCoroutineTest.test_async_return_no_value  sU       
	 	 
	 qss&&&r   c              #      K   t           j        d             } |            }|                     t                    5  |V  d d d            n# 1 swxY w Y   d| _        d S )Nc                      ddz   d S r;   r1   r1   r   r   r2   z+GenCoroutineTest.test_sync_raise.<locals>.f  r<   r   Tr   r4   r>   r?   r   r   r2   futures      r   test_sync_raisez GenCoroutineTest.test_sync_raise  s      		 	 
	 011 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   AAAc              #      K   t           j        d             } |            }|                     t                    5  |V  d d d            n# 1 swxY w Y   d| _        d S )Nc               3   0   K   t           j        V  ddz   d S r;   r!   r1   r   r   r2   z,GenCoroutineTest.test_async_raise.<locals>.f  rC   r   Tr   r   s      r   test_async_raisez!GenCoroutineTest.test_async_raise  s      		 	 
	 011 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c              #      K   t           j        d             t           j        fd            } |            }|                     t                    5  |V  d d d            n# 1 swxY w Y   d| _        d S )Nc                      ddz   d S r;   r1   r1   r   r   r   z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f1  r<   r   c               3   ^   K   	               V  d S # t           $ r t                      w xY wr    )r?   KeyErrorr   s   r   r   z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f2  sD      !bdd




$ ! ! !jj !s    ,T)r   r4   r>   r	  r   )r   r   r   r   s      @r   !test_replace_yieldpoint_exceptionz2GenCoroutineTest.test_replace_yieldpoint_exception  s       
	 	 
	 
	! 	! 	! 	! 
	! x(( 	 	LLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A%%A),A)c              #      K   t           j        d             t           j        fd            } |            V }|                     |d           d| _        d S )Nc                      ddz   d S r;   r1   r1   r   r   r   z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f1  r<   r   c               3   j   K   	               V  d S # t           $ r t          j        d          w xY wrG   )r?   r   r   r   s   r   r   z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2  sH      %bdd




$ % % %jnn$%s    2rH   Tr   r   s      @r   !test_swallow_yieldpoint_exceptionz2GenCoroutineTest.test_swallow_yieldpoint_exception  s}       
	 	 
	 
	% 	% 	% 	% 
	% rtt$$$r   c              #   h  K   g t           j        fd            }t                      }|                    d             |d|           |d|          gV  |                     d                              d           g  |dt           j                   |dt           j                  gV  |                     d                              d           d| _        g  |dt           j                   |d|          gV  |                     d                              d           d S )	Nc              3   b   K   t          d          D ]}                    |            |V  d S )N   )r   append)name	yieldabler   callss      r   r2   z'GenCoroutineTest.test_moment.<locals>.f  sC      1XX    T"""   r   ab 
aaaaabbbbb
abababababT
abbbbbaaaa)r   r4   r   
set_resultr\   joinr   r   )r   r2   	immediater  s      @r   test_momentzGenCoroutineTest.test_moment  sJ     		  	  	  	  
	  HH	T"""qi  !!C"3"34444666 qcj!!11S#*#5#56666666qcj!!11S)#4#4555566666r   c              #   D   K   t          j        d          V  d| _        d S )N{Gz?T)r   r   r   r   s    r   
test_sleepzGenCoroutineTest.test_sleep#  s%      ioor   c              #     K    G d dt                     t          j        fd            }	  |d          V  nO# $ rG}|                     t	          |          d           |                     |j                   Y d }~nd }~ww xY w	  |d          V  nO# $ rG}|                     t	          |          d           |                     |j                   Y d }~nd }~ww xY wd| _        d S )	Nc                       e Zd ZdS )IGenCoroutineTest.test_py3_leak_exception_context.<locals>.LeakedExceptionNr   r   r   r1   r   r   LeakedExceptionr%  *  s        Dr   r'  c                      |           r    r1   )	iterationr'  s    r   innerz?GenCoroutineTest.test_py3_leak_exception_context.<locals>.inner-  s    !/),,,r   r*   1rP   2T)	Exceptionr   r4   r\   r   assertIsNone__context__r   )r   r*  r&   r'  s      @r   test_py3_leak_exception_contextz0GenCoroutineTest.test_py3_leak_exception_context(  sU     	 	 	 	 	i 	 	 	 
	- 	- 	- 	- 
	-	-%((NNNN 	- 	- 	-SVVS)))am,,,,,,,,	-	-%((NNNN 	- 	- 	-SVVS)))am,,,,,,,,	- s-   = B	=BB	B C' =C""C'r[   )r[      z#asyncio.Future has reference cyclesc                      t           j         fd            t           j        fd            } j                            |d                                                                 d            d _        d S )Nc               3      K    G d dt                     }  |             }t          j        |          _        d } t	          j        |                      V  t          d          )Nc                       e Zd ZdS )GGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.FooNr&  r1   r   r   Foor6  H  s        r   r7  c                      d S r    r1   r1   r   r   dummyzIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyN      r   z
Some error)objectweakrefref	local_refr   r4   
ValueError)r7  	local_varr9  r   s      r   r*  z:GenCoroutineTest.test_coroutine_refcounting.<locals>.innerF  s          f    I$[33DN   '#-&&(((((\***r   c               3   H   K   	               V  d S # t           $ r Y d S w xY wr    )r?  )r*  s   r   inner2z;GenCoroutineTest.test_coroutine_refcounting.<locals>.inner2T  sA      egg   s    
!!r[   )timeoutT)r   r4   r5   r6   r   r>  r   )r   rB  r*  s   ` @r   test_coroutine_refcountingz+GenCoroutineTest.test_coroutine_refcounting?  s     
	+ 	+ 	+ 	+ 
	+ 
	 	 	 	 
	 	fa000dnn&&---r   c                    d| _         t          j                    }|                     |j        |                                           |                    d           d } t          j        |                      }|                     |t          j	                   dt          |j        j        dz   fz  }t          |          }|                     ||           d S )NTc               3   &   K   t           j        V  d S r    r!   r1   r   r   r2   z:GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fg  r   r   zcreated at %s:%dr[   )r   r   get_event_loop
addCleanup	set_debug	get_debugr   r4   assertIsInstancer   __file____code__co_firstlinenoreprassertIn)r   asyncio_loopr2   r   expectedactuals         r   test_asyncio_future_debug_infoz/GenCoroutineTest.test_asyncio_future_debug_info`  s    -//.0F0F0H0HIIIt$$$	 	 	  s}Q!!dGN333 &1:3Lq3P(QQdh'''''r   c              #      K   t           j        d             }t          j         |             |                      V }|                     |ddg           d| _        d S )Nc               3   J   K   t           j        V  t          j        d          r)   r+   r1   r   r   r2   z/GenCoroutineTest.test_asyncio_gather.<locals>.fv  s"      **Q--r   r*   T)r   r4   r   gatherr\   r   )r   r2   rets      r   test_asyncio_gatherz$GenCoroutineTest.test_asyncio_gatherr  sm       
	  	  
	  N1133,,,,q!f%%%r   )#r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r"  r0  r   unittestskipIfsysversion_inforD  rT  rY  __classcell__)r   s   @r   r   r     s               	+ 	+ 	+	< 	< 	<   X   X   X   X   X   X"   X   X$   X   X 	 	 X	   X 	 	 X	   X&   X$ 7 7 X74   X   X, X_s((((&((((*O    ^:( ( ($ 
 
 X
 
 
 
 
r   r   c                   .    e Zd Zej        d             ZdS )GenCoroutineSequenceHandlerc              #      K   t           j        V  |                     d           t           j        V  |                     d           t           j        V  |                     d           d S Nr+  r,  3)r   r   writefinishr   s    r   getzGenCoroutineSequenceHandler.get  sf      j

3j

3jCr   Nr   r   r   r   r4   rf  r1   r   r   r`  r`    s/        ]  ]  r   r`  c                   .    e Zd Zej        d             ZdS )%GenCoroutineUnfinishedSequenceHandlerc              #      K   t           j        V  |                     d           t           j        V  |                     d           t           j        V  |                     d           d S rb  )r   r   rd  r   s    r   rf  z)GenCoroutineUnfinishedSequenceHandler.get  sa      j

3j

3j

3r   Nrg  r1   r   r   ri  ri    s/        ]  ]  r   ri  c                   N    e Zd Zej        d             Zej        d             ZdS )UndecoratedCoroutinesHandlerc              #   h   K   g | _         t          j        V  | j                             d           d S )Nr+  )chunksr   r   r  r   s    r   preparez$UndecoratedCoroutinesHandler.prepare  s7      j3r   c              #     K   | j                             d           t          j        V  | j                             d           t          j        V  |                     d                    | j                              d S )Nr,  rc  r  )rn  r  r   r   rd  r  r   s    r   rf  z UndecoratedCoroutinesHandler.get  st      3j3j

2774;''(((((r   Nr   r   r   r   r4   ro  rf  r1   r   r   rl  rl    sL        ]    ] 
 	]) ) ]) ) )r   rl  c                   4    e Zd Zej        d             Zd ZdS )AsyncPrepareErrorHandlerc              #   @   K   t           j        V  t          d          )N  )r   r   r   r   s    r   ro  z AsyncPrepareErrorHandler.prepare  s       jnnr   c                 0    |                      d           d S )Nok)re  r   s    r   rf  zAsyncPrepareErrorHandler.get  s    Dr   Nrq  r1   r   r   rs  rs    s>        ]  ]    r   rs  c                       e Zd Zd ZdS )NativeCoroutineHandlerc                 h   K   t          j        d           d {V  |                     d           d S )Nr   rw  )r   r   rd  r   s    r   rf  zNativeCoroutineHandler.get  s@      mA

4r   N)r   r   r   rf  r1   r   r   ry  ry    s#            r   ry  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
GenWebTestc                 p    t          dt          fdt          fdt          fdt          fdt
          fg          S )N/coroutine_sequence/coroutine_unfinished_sequence/undecorated_coroutine/async_prepare_error/native_coroutine)r   r`  ri  rl  rs  ry  r   s    r   get_appzGenWebTest.get_app  sJ    &(CD49 *+GH')AB$&<=	
 
 	
r   c                 f    |                      d          }|                     |j        d           d S )Nr~     123fetchr\   bodyr   responses     r   test_coroutine_sequence_handlerz*GenWebTest.test_coroutine_sequence_handler  s2    ::344/////r   c                 f    |                      d          }|                     |j        d           d S )Nr  r  r  r  s     r   *test_coroutine_unfinished_sequence_handlerz5GenWebTest.test_coroutine_unfinished_sequence_handler  s2    ::>??/////r   c                 f    |                      d          }|                     |j        d           d S )Nr  r  r  r  s     r   test_undecorated_coroutinesz&GenWebTest.test_undecorated_coroutines  s2    ::677/////r   c                 f    |                      d          }|                     |j        d           d S )Nr  ru  )r  r\   coder  s     r    test_async_prepare_error_handlerz+GenWebTest.test_async_prepare_error_handler  s2    ::455,,,,,r   c                     |                      d          }|                     |j        d           |                     |j        d           d S )Nr     s   ok)r  r\   r  r  r  s     r   test_native_coroutine_handlerz(GenWebTest.test_native_coroutine_handler  sJ    ::122,,,.....r   N)	r   r   r   r  r  r  r  r  r  r1   r   r   r|  r|    sn        
 
 
0 0 00 0 00 0 0- - -/ / / / /r   r|  c                       e Zd Zed             Zed             Zed             Zed             Zed             Zed             Z	ed             Z
dS )	WithTimeoutTestc              #      K   |                      t          j                  5  t          j        t	          j        d          t                                V  d d d            d S # 1 swxY w Y   d S )N皙?seconds)r>   r   TimeoutErrorr   r   r   r   r   s    r   test_timeoutzWithTimeoutTest.test_timeout  s      s/00 	N 	N"8#5c#B#B#BFHHMMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   7A&&A*-A*c              #   
  K   t                      | j                            t          j        d          fd           t          j        t          j        d                    V }|                     |d           d S )Nr  r  c                  .                          d          S )Nasdf)r  r   s   r   <lambda>z?WithTimeoutTest.test_completes_before_timeout.<locals>.<lambda>  s    V5F5Fv5N5N r     r  )r   r5   add_timeoutr   r   r   r   r\   )r   r#   r   s     @r   test_completes_before_timeoutz-WithTimeoutTest.test_completes_before_timeout  s        s+++-N-N-N-N	
 	
 	
 '(:4(H(H(H&QQQQ(((((r   c              #   D  K   t                      | j                            t          j        d          fd           |                     t                    5  t          j        t          j        d                    V  d d d            d S # 1 swxY w Y   d S )Nr  r  c                  F                          t                                S r    )set_exceptionr?   r  s   r   r  z;WithTimeoutTest.test_fails_before_timeout.<locals>.<lambda>  s    F(():)<)<== r   r  )	r   r5   r  r   r   r>   r?   r   r   )r   r   s    @r   test_fails_before_timeoutz)WithTimeoutTest.test_fails_before_timeout  s        s+++====	
 	
 	
 011 	M 	M"8#5d#C#C#CVLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Ms   +BBBc              #      K   t                      }|                    d           t          j        t	          j        d          |          V }|                     |d           d S )Nr  r  r  )r   r  r   r   r   r   r\   )r   r   r#   s      r   test_already_resolvedz%WithTimeoutTest.test_already_resolved  se      &!!!'(:4(H(H(H&QQQQ(((((r   c           	   #   j  K   t          j        d          5 }|                     t          j                  5  t          j        | j                                        |                    t          j	        d                    V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr*   r  )
r   ThreadPoolExecutorr>   r   r  r   r5   rv   submitr   r   executors     r   test_timeout_concurrent_futurez.WithTimeoutTest.test_timeout_concurrent_future  s(      '** 	h""3#344  &L%%''S)I)I                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5    B(ABB(B	B(B	B((B,/B,c              #     K   t          j        d          5 }d }|                    |          }|                                 t	          j        t          j        d          |          V  d d d            d S # 1 swxY w Y   d S )Nr*   c                      d S r    r1   r1   r   r   r9  z?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummy  r:  r   r  r  )r   r  r  r#   r   r   r   r   )r   r  r9  r2   s       r    test_completed_concurrent_futurez0WithTimeoutTest.test_completed_concurrent_future  s       '** 	Hh   &&AHHJJJ"8#5d#C#C#CQGGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   AA;;A?A?c              #      K   t          j        d          5 }t          j        t	          j        d          |                    d                     V  d d d            d S # 1 swxY w Y   d S )Nr*   r  r  c                  *    t          j        d          S )Nr!  )rv   r   r1   r   r   r  z?WithTimeoutTest.test_normal_concurrent_future.<locals>.<lambda>  s    
4(8(8 r   )r   r  r   r   r   r   r  r  s     r   test_normal_concurrent_futurez-WithTimeoutTest.test_normal_concurrent_future  s       '** 	h""4000 8 899    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?A##A'*A'N)r   r   r   r	   r  r  r  r  r  r  r  r1   r   r   r  r    s        N N XN ) ) X) M M XM ) ) X)   X 
H 
H X
H   X  r   r  c                       e Zd Zed             Zed             Zd Zed             Zed             Zed             Z	dS )WaitIteratorTestc                    t          j                    }|                     |                                d           |                     t
                    5  t          j        t                      t                                }d d d            n# 1 swxY w Y   |                     |j        d d           |                     |j	        d d           d S )Nzempty generator iterated)rd   bad nil current indexbad nil current future)
r   WaitIteratorr|   doner>   r?  r   r\   current_indexcurrent_future)r   gs     r   test_empty_iteratorz$WaitIteratorTest.test_empty_iterator  s    "<===z** 	9 	9 vxx888A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	$0GHHH)41IJJJJJs   /BBBc              #   6  K   t                      }t                      }t                      }|                    d           |                    d           |                    d           t          j        |||          }d}|                                s(|                                V }|dk    rM|                     |j        d           |                     |j	        |           |                     |d           n|dk    rM|                     |j        d           |                     |j	        |           |                     |d           nR|dk    rL|                     |j        d           |                     |j	        |           |                     |d           |dz  }|                                (|                     |j        d d           |                     |j	        d d           t          j        ||	          }|                                s|                                V }|j        d
k    r&| 
                    |j	        |k    o|dk    d           n^|j        dk    r&| 
                    |j	        |k    o|dk    d           n-|                     d                    |j                             |dz  }|                                |                     |j        d d           |                     |j	        d d           d S )N   rH   T   r   r*   rP   r  r  )r   r   r   z"WaitIterator dict status incorrectr   zgot bad WaitIterator index {})r   r  r   r  r  nextr\   r  r   r  r|   failformat)	r   r   r   r   r  r   rdgdrs	            r   test_already_donez"WaitIteratorTest.test_already_done)  s     XXXXXX
b
b
bRR((&&(( 	ffhhA Avv  !444a.333  B''''a  !444a.333  B''''a  !444a.333  B'''FA! &&(( 	$ 	$0GHHH)41IJJJ+++'')) 	wwyyB4''%+8b8    !T))%+8b8   
 		9@@AQRRSSSFA '')) 	" 	)41HIII*D2JKKKKKr   c                 v   |dk    r|d                              d           nj|dk    r(|d                             t                                 n<|dk    r6|d                              d           |d                              d	           |dk     r&| j                            | j        |dz   |           d S d S )
Nr[   rP   r  r  r      r*   rH   r  )r  r  r?   r5   r   finish_coroutines)r   r)  r   s      r   r  z"WaitIteratorTest.finish_coroutines_  s    >>AJ!!"%%%%!^^AJ$$%6%8%89999!^^AJ!!"%%%AJ!!"%%%q==L%%d&<i!mWUUUUU =r   c              #     K   t                      t                      t                      t                      g}|                     d|           t          j        | }d}|                                s	 |                                V }|dk    r4|                     |dd           |                     |j        dd           n|dk    r4|                     |dd           |                     |j        dd           nl|dk    r3|                     |d	d           |                     |j        dd           n2# t          $ r% | 	                    |j
        |d         d
           Y nw xY w|dz  }|                                d S d S )Nr   r  iterator value incorrectrP   wrong indexrH   r*   r[   r  zexception future invalid)r   r  r   r  r  r  r\   r  r?   r   r  )r   r   r  r   r  s        r   test_iteratorzWaitIteratorTest.test_iteratork  s     88VXXvxx:q'***g&&&(( 	H&&((NN 66$$Q,FGGG$$Q_aGGGG!VV$$Q,FGGG$$Q_aGGGG!VV$$Q,FGGG$$Q_aGGG % X X Xa.
<VWWWWWX FA &&(( 	 	 	 	 	s   5D9 9,E('E(c              #      K   t                      t                      t                      t                      g                     d           d _         fd} |            V                        j                   d S )Nr   Fc                  F  K   d} t          j         }	 |2 3 d {V }| dk    r4                    |dd                               |j        dd           nt	          d          | dz  } V6 n# t
          $ r | dz  } Y nw xY w|2 3 d {V }| dk    r4                    |dd                               |j        dd           nL| d	k    r4                    |d
d                               |j        d	d           nt	          d| z            | dz  } 6 d_        d S )Nr   r  r  rP   r  z!expected exception on iteration 1r*   rH   r[   r  zdidn't expect iteration %dT)r   r  r\   r  r-  r?   r   )r   r  r  r   r   s      r   r2   z5WaitIteratorTest.test_iterator_async_await.<locals>.f  s     A '*A	        !Avv((B0JKKK((!]KKKK'(KLLLFAA  !q %   Q 	 	 	 	 	 	 	a66$$Q,FGGG$$Q_aGGGG!VV$$Q,FGGG$$Q_aGGGG#$@1$DEEEQ  !DMMMs"   A/ A-AA/ /B BD)r   r  r   r|   )r   r2   r   s   ` @r   test_iterator_async_awaitz*WaitIteratorTest.test_iterator_async_await  s      
 88VXXvxx:q'***	! 	! 	! 	! 	! 	!2 acc			&&&&&r   c              #      K   t          j        t          j        d          t          j        t          j        d                                                              V  d S )Nr  r  r   )r   r   r   r   r  r   r  r   s    r   test_no_refzWaitIteratorTest.test_no_ref  sc       s+++S-=cill-K-K-P-P-R-R
 
 	
 	
 	
 	
 	
r   N)
r   r   r   r	   r  r  r  r  r  r  r1   r   r   r  r    s        K K XK 3L 3L X3Lj
V 
V 
V   X2 "' "' X"'H 
 
 X
 
 
r   r  c                   <    e Zd Zd Zed             Zd Zd Zd ZdS )RunnerGCTestc                 P    t          j                    dk    ot          j        dk    S )NPyPyr1  )platformpython_implementationr\  r]  r   s    r   is_pypy3zRunnerGCTest.is_pypy3  s$    -//69Uc>NQU>UUr   c              #       K   d gfdt           j         fd            }t          j        t          j        d           |                      V  d S )Nc                  v    t          j        d             d                                         d           d S )NrP   r   {   )gccollectr  )weakref_scopes   r   callbackz&RunnerGCTest.test_gc.<locals>.callback  s7    JqMMMM!))#.....r   c               3      K   t                      } t          j        |           d<   j                                       | V  d S )Nr   )r   r<  r=  r5   r   )futr  r   r  s    r   testerz$RunnerGCTest.test_gc.<locals>.tester  sG      ((C&{3//M!L%%h///IIIIIr   皙?r  )r   r4   r   r   r   )r   r  r  r  s   ` @@r   test_gczRunnerGCTest.test_gc  s       	/ 	/ 	/ 	/ 	/ 
	 	 	 	 	 	 
	 x1#>>>IIIIIIIr   c                    |                                  }g g t          j        fd            t          j        fd            }|                    |           |                                 t          j                     |                      d                     d            |                     t                    d           | 
                                s|                     d         d            d S d S )Nc               3      K   	 	 t          j        d          V                       d           ,#                      d            w xY wNTgMbP?r   r   r  r#   s   r   infinite_coroz9RunnerGCTest.test_gc_infinite_coro.<locals>.infinite_coro  sW      $()D//)))MM$'''(
 d####s	   -2 A	c               3      K                } | | _                             t          j        |                      t	          j        d          V  d S Nr  )	_refcycler  r<  r=  r   r   )r  r  wfuts    r   do_somethingz8RunnerGCTest.test_gc_infinite_coro.<locals>.do_something  sO      -//CCMKKC(())))C..     r   r   rP   )get_new_ioloopr   r4   r6   closer  r  r   assertGreaterEquallenr  )r   loopr  r  r#   r  s      @@@r   test_gc_infinite_coroz"RunnerGCTest.test_gc_infinite_coro  s    ""$$		$ 	$ 	$ 	$ 
	$ 
	! 	! 	! 	! 	! 
	! 	l###



gd1gii&&&FQ///}} 	,MM&*d+++++	, 	,r   c                 :   dd l d |                                 }g g t          j        fd            }|                    |           t          dd          5  |                                 t          j                     d d d            n# 1 swxY w Y   | 	                     d                     d            | 
                    t                    d           |                                 s| 	                    d         d            d S d S )Nr   c                    K   	 	 t          j        d           d {V  |                     d           0# |                     d            w xY wr  r  r  s    r   r  z@RunnerGCTest.test_gc_infinite_async_await.<locals>.infinite_coro  sb      $()D//)))))))MM$'''(
 d####s	   15 Ac               3      K    j                                                              } | | _                            t	          j        |                      t          j        d          V  d S r  )rG  create_taskr  r  r<  r=  r   r   )r  r   r  r#   r  s    r   r  z?RunnerGCTest.test_gc_infinite_async_await.<locals>.do_something  sl      ('(**66}}V7L7LMMCCMKKC(())))C..     r   r   z$Task was destroyed but it is pendingrP   r  )r   r  r   r4   r6   r   r  r  r  r   r  r  r  )r   r  r  r   r  r#   r  s      @@@@r   test_gc_infinite_async_awaitz)RunnerGCTest.test_gc_infinite_async_await  su   	$ 	$ 	$ ""$$		! 	! 	! 	! 	! 	! 	! 
	! 	l###y"HII 	 	JJLLLJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	gd1gii&&&FQ///}} 	,MM&*d+++++	, 	,s   #(BBBc                     t           j        d             }|                                 }|                    |          }|                     |d d g           d S )Nc               3      K   t          j        t           j        t           j        g          V } t          j        |           r    )r   multir   r   r  s    r   wait_a_momentz5RunnerGCTest.test_multi_moment.<locals>.wait_a_moment  s4      9cj#*%=>>>>F*V$$$r   )r   r4   r  r6   r\   )r   r  r  r#   s       r   test_multi_momentzRunnerGCTest.test_multi_moment  sc     
	% 	% 
	% ""$$}--$.....r   N)	r   r   r   r  r	   r  r  r  r  r1   r   r   r  r    ss        V V V J J XJ$", ", ",H", ", ",H
/ 
/ 
/ 
/ 
/r   r  ctx_varzcontextvars module not presentc                       e Zd Zd Zej        d             Zd Zej        d             Zd Z	e
d             Ze
d             Ze
d             Zd	S )
ContextVarsTestc                 t   K   t                               |           |                     |           d {V  d S r    r  setr*  r,   s     r   native_rootzContextVarsTest.native_root'  s=      Ajjmmr   c              #   t   K   t                               |           d V  |                     |          V  d S r    r  r,   s     r   gen_rootzContextVarsTest.gen_root+  s:      Ajjmmr   c                    K                         t                                                                                     d {V                        t                                                     t	          j                     j                            d  fd           d {V                        t                                                     t          j	                                        d  fd           d {V                        t                                                     d S )Nc                  :                          j                  S r    runthread_innerctxr   r-   s   r   r  z'ContextVarsTest.inner.<locals>.<lambda>8  s    ARTU9V9V r   c                  :                          j                  S r    r  r  s   r   r  z'ContextVarsTest.inner.<locals>.<lambda>=  s    #''$"3Q77 r   )
r\   r  rf  	gen_innercontextvarscopy_contextr5   run_in_executorr   rG  )r   r-   r  s   ``@r   r*  zContextVarsTest.inner1  sM     ***nnQ*** &((l**41V1V1V1V1V1VWWWWWWWWW*** $&&66777777
 
 	
 	
 	
 	
 	
 	
 	
 	*****r   c              #      K   |                      t                                          |           d V  |                      t                                          |           d S r    r\   r  rf  r,   s     r   r  zContextVarsTest.gen_innerA  sQ      ********r   c                 `    |                      t                                          |           d S r    r  r,   s     r   r  zContextVarsTest.thread_innerG  s&    *****r   c              #      K   |                      d          |                      d          |                     d          |                     d          gV  d S )Nr*   rP   r[      )r  r  r   s    r   test_propagatezContextVarsTest.test_propagateJ  sf      
 QQMM!MM!	
 	
 	
 	
 	
 	
r   c              #   z   K   t                               d          }d V  t                               |           d S r)   )r  r  reset)r   tokens     r   
test_resetzContextVarsTest.test_resetU  s8      A 	er   c              #   j    K   d fd}t                                           |            V  d S )N
   c                  f   K                         t                                                     d S r    r  r,   s   r   native_async_functionzgContextVarsTest.test_propagate_to_first_yield_with_native_async_function.<locals>.native_async_functiona  s+      W[[]]A.....r   )r  r  )r   r*  r-   s   ` @r   8test_propagate_to_first_yield_with_native_async_functionzHContextVarsTest.test_propagate_to_first_yield_with_native_async_function]  sW      	/ 	/ 	/ 	/ 	/ 	/ 	A##%%%%%%%r   N)r   r   r   r  r   r4   r  r*  r  r  r	   r"  r&  r+  r1   r   r   r
  r
  %  s           	]  ]
+ + +  	]+ + ]+
+ + + 
 
 X
   X & & X& & &r   r
  __main__)3r   
concurrentr   r  r   r  r\  rv   r<  rZ  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`  ri  rl  rs  ry  r|  r  r  r  
ContextVarr  r[  r
  r   mainr1   r   r   <module>r9     s          				   



    % % % % % %       Q Q Q Q Q Q Q Q Q Q Q Q : : : : : : : : > > > > > > > > > >         KKK 	 &%%%%%%%%y; y; y; y; y;= y; y; y;xc c c c c} c c cL    .   	 	 	 	 	N 	 	 	) ) ) ) )> ) ) )     ~       ^   "/ "/ "/ "/ "/" "/ "/ "/J= = = = =m = = =@U
 U
 U
 U
 U
} U
 U
 U
pi/ i/ i/ i/ i/= i/ i/ i/X $k$Y//G $&FGG?& ?& ?& ?& ?&m ?& ?& HG?&D zHMOOOOO s   A A'&A'