
    Mh!                        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 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                      Z/e0d$k    r e	j1                     dS dS )%    N)futures)Future)app_log)AsyncHTTPTestCaseAsyncTestCase	ExpectLoggen_test)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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       U/var/www/html/test/jupyter/venv/lib/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    r0   r   r   fz%GenBasicTest.test_no_yield.<locals>.f6   s    Dr   r   	coroutineio_looprun_syncr   r1   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   r0   r0   r   r   r1   z-GenBasicTest.test_exception_phase1.<locals>.f=       EEEEr   r   r3   assertRaisesZeroDivisionErrorr4   r5   r6   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    r0   r   r   r1   z-GenBasicTest.test_exception_phase2.<locals>.fD   !      *EEEEr   r<   r6   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*   r0   r0   r   r   r1   z(GenBasicTest.test_bogus_yield.<locals>.fL   s      HHHHHr   r   r3   r=   BadYieldErrorr4   r5   r6   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)      r0   r0   r   r   r1   z.GenBasicTest.test_bogus_yield_tuple.<locals>.fS   s      LLLLLr   rH   r6   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    r0   r   r   r1   z"GenBasicTest.test_reuse.<locals>.fZ         *r   r2   r6   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   r0   r0   r   r   r1   z!GenBasicTest.test_none.<locals>.fb   s      JJJJJr   r2   r6   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)   rO      )r-   assertEqualresultsr   s    r   r1   z"GenBasicTest.test_multi.<locals>.fi   sS      !//22D4F4Fq4I4IJJJGWq!f-----r   r2   r6   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)   rO   foobarrZ   )dictr-   r[   r\   s    r   r1   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   r2   r6   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 )NrZ   v1r)   v2)r   multi_futurer   r[   	responsesr   s    r   r1   z*GenBasicTest.test_multi_delayed.<locals>.fy   sk       ".At$$djjD&9&9:   I Yt55555r   r2   r6   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 )NrZ   rh   r)   ri   ra   )r   rj   rd   r   r[   rk   s    r   r1   z/GenBasicTest.test_multi_dict_delayed.<locals>.f   s|       ".At,,$**Q2E2EFFF   I Y4(@(@(@AAAAAr   r2   r6   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 r0   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listrd   )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)   rO   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 )NrO   r)   rZ   )r)   rO   rZ   rO   r   )r   r1   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)   rO   ra   )rd   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 2rO   )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   rj   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   r0   r   r   r1   z.GenBasicTest.test_sync_raise_return.<locals>.f   s    *,,r   r2   r6   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*   r0   r   r   r1   z/GenBasicTest.test_async_raise_return.<locals>.f   s       **,,r   r2   r6   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          rF   r   r0   r   r   r1   z4GenBasicTest.test_sync_raise_return_value.<locals>.f       *R.. r   rG   r   r3   r[   r4   r5   r6   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          rM   r   r0   r   r   r1   z:GenBasicTest.test_sync_raise_return_value_tuple.<locals>.f  s    *V$$$r   rN   r   r6   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          rF   r*   r0   r   r   r1   z5GenBasicTest.test_async_raise_return_value.<locals>.f	  "      **R.. r   rG   r   r6   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          rM   r*   r0   r   r   r1   z;GenBasicTest.test_async_raise_return_value_tuple.<locals>.f  s$      **V$$$r   rN   r   r6   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   r3   r   r#   r&   r-   r7   r?   rC   rJ   rP   rT   rW   r^   re   rm   rp   r	   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r   r   r   r      si       ]  ] 	]  ] 	]  ] 	]    ] ! ! !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                       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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    r0   r   r   r1   z+GenCoroutineTest.test_attributes.<locals>.f(        *r   )r   r   r3   r[   r   r   assertIs__wrapped__r   r1   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    r0   r   r   r1   z6GenCoroutineTest.test_is_coroutine_function.<locals>.f3  r   r   )r   r   r3   assertFalseis_coroutine_functionr{   r   s      r   test_is_coroutine_functionz+GenCoroutineTest.test_is_coroutine_function0  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          rF   r   r0   r   r   r1   z0GenCoroutineTest.test_sync_gen_return.<locals>.f=  r   r   rG   Tr   r3   r[   r   r   r1   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          rF   r*   r0   r   r   r1   z1GenCoroutineTest.test_async_gen_return.<locals>.fG  r   r   rG   Tr   r   s      r   test_async_gen_returnz&GenCoroutineTest.test_async_gen_returnE  sS      		! 	! 
	! qss$$$r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc                      dS rF   r0   r0   r   r   r1   z,GenCoroutineTest.test_sync_return.<locals>.fR  s    2r   rG   Tr   r   s      r   test_sync_returnz!GenCoroutineTest.test_sync_returnP  sS      		 	 
	 qss$$$r   c              #      K   t           j        d             } |            V }|                     |d           d| _        d S )Nc               3   &   K   t           j        V  dS rF   r    r0   r   r   r1   z-GenCoroutineTest.test_async_return.<locals>.f\  s      *2r   rG   Tr   r   s      r   test_async_returnz"GenCoroutineTest.test_async_returnZ  sS      		 	 
	 qss$$$r   c              #       K   t           j         fd            } |            V }                     |d           d _        d S )Nc               3      K   	 dS )NTrG   )r   Taskr4   add_callbackr   s   r   r1   z3GenCoroutineTest.test_async_early_return.<locals>.fj  s      rr   rG   Tr   r   s   `  r   test_async_early_returnz(GenCoroutineTest.test_async_early_returne  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          rF   r*   r0   r   r   f1z-GenCoroutineTest.test_async_await.<locals>.f1v  r   r   c                  ,   K                 d {V } | S r   r0   )r"   r   s    r   f2z-GenCoroutineTest.test_async_await.<locals>.f2~  s#      244ZZZZZZFMr   rG   Tr   r   r   r"   r   s      @r   test_async_awaitz!GenCoroutineTest.test_async_awaitt  sm      		! 	! 
	!	 	 	 	 	 rtt$$$r   c              #   b   K   d } |            V }|                      |d           d| _        d S )Nc                  >   K   dd l }  | j        d           d {V  dS )Nr   rG   )asynciosleep)r   s    r   r1   z3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.f  s8      NNN'-"""""""""2r   rG   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    r0   r   r   r   zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1  rS   r   c                  ,   K                  d {V  dS rF   r0   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*   r0   r   r   f3zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3  r   r   rG   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 rF   r0   r0   r   r   r   z4GenCoroutineTest.test_async_with_timeout.<locals>.f1  s      2r   r)   )hoursrG   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 S )Nc                      d S r   r0   r0   r   r   r1   z5GenCoroutineTest.test_sync_return_no_value.<locals>.f  s    Fr   Tr   r3   assertIsNoner   r   s      r   test_sync_return_no_valuez*GenCoroutineTest.test_sync_return_no_value  sQ      		 	 
	 qss&!!!r   c              #      K   t           j        d             } |            V }|                     |           d| _        d S )Nc               3   &   K   t           j        V  d S r   r    r0   r   r   r1   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  sQ      		 	 
	 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:   r0   r0   r   r   r1   z+GenCoroutineTest.test_sync_raise.<locals>.f  r;   r   Tr   r3   r=   r>   r   r   r1   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    r0   r   r   r1   z,GenCoroutineTest.test_async_raise.<locals>.f  rB   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:   r0   r0   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   r3   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:   r0   r0   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rF   )r>   r   r   r   s   r   r   z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2  sH      %bdd




$ % % %jnn$%s    2rG   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   r1   z'GenCoroutineTest.test_moment.<locals>.f
  sC      1XX    T"""   r   ab 
aaaaabbbbb
abababababT
abbbbbaaaa)r   r3   r   
set_resultr[   joinr   r   )r   r1   	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   r0   r   r   LeakedExceptionr&  (  s        Dr   r(  c                      |           r   r0   )	iterationr(  s    r   innerz?GenCoroutineTest.test_py3_leak_exception_context.<locals>.inner+  s    !/),,,r   r)   1rO   2T)	Exceptionr   r3   r[   r   r   __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'c                      t           j         fd            t           j        fd            } j                            |d                                                                            d _        d S )Nc               3      K    G d d          }  |             }t          j        |          _        d } t          j        |                      V  t          d          )Nc                       e Zd ZdS )GGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.FooNr'  r0   r   r   Foor4  C  s        r   r5  c                      d S r   r0   r0   r   r   dummyzIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyI      r   z
Some error)weakrefref	local_refr   r3   
ValueError)r5  	local_varr7  r   s      r   r+  z:GenCoroutineTest.test_coroutine_refcounting.<locals>.innerA  s              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>.inner2O  sA      egg   s    
!!rZ   )timeoutT)r   r3   r4   r5   r   r;  r   )r   r?  r+  s   ` @r   test_coroutine_refcountingz+GenCoroutineTest.test_coroutine_refcounting=  s     
	+ 	+ 	+ 	+ 
	+ 
	 	 	 	 
	 	fa000$..**+++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    r0   r   r   r1   z:GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fb  r   r   zcreated at %s:%drZ   )r   r   get_event_loop
addCleanup	set_debug	get_debugr   r3   assertIsInstancer   __file____code__co_firstlinenoreprassertIn)r   asyncio_loopr1   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*   r0   r   r   r1   z/GenCoroutineTest.test_asyncio_gather.<locals>.fq  s"      **Q--r   r)   T)r   r3   r   gatherr[   r   )r   r1   rets      r   test_asyncio_gatherz$GenCoroutineTest.test_asyncio_gatherm  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
   rA  rQ  rV  __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
 
 
 
 
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   r3   r_  r0   r   r   rY  rY  {  s/        ]  ]  r   rY  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 r[  )r   r   r]  r   s    r   r_  z)GenCoroutineUnfinishedSequenceHandler.get  sa      j

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

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

3r   Nr`  r0   r   r   rb  rb    s/        ]  ]  r   rb  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-  r\  r  )rg  r  r   r   r]  r  r   s    r   r_  z UndecoratedCoroutinesHandler.get  st      3j3j

2774;''(((((r   Nr   r   r   r   r3   rh  r_  r0   r   r   re  re    sL        ]    ] 
 	]) ) ]) ) )r   re  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   rh  z AsyncPrepareErrorHandler.prepare  s       jnnr   c                 0    |                      d           d S )Nok)r^  r   s    r   r_  zAsyncPrepareErrorHandler.get  s    Dr   Nrj  r0   r   r   rl  rl    s>        ]  ]    r   rl  c                       e Zd Zd ZdS )NativeCoroutineHandlerc                 h   K   t          j        d           d {V  |                     d           d S )Nr   rp  )r   r   r]  r   s    r   r_  zNativeCoroutineHandler.get  s@      mA

4r   N)r   r   r   r_  r0   r   r   rr  rr    s#            r   rr  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   rY  rb  re  rl  rr  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 )Nrw     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 )Nrx  r~  r  r  s     r   *test_coroutine_unfinished_sequence_handlerz5GenWebTest.test_coroutine_unfinished_sequence_handler  s2    ::>??/////r   c                 f    |                      d          }|                     |j        d           d S )Nry  r~  r  r  s     r   test_undecorated_coroutinesz&GenWebTest.test_undecorated_coroutines  s2    ::677/////r   c                 f    |                      d          }|                     |j        d           d S )Nrz  rn  )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  r0   r   r   ru  ru    sn        
 
 
0 0 00 0 00 0 0- - -/ / / / /r   ru  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   r4   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   r4   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   r4   ru   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   r0   r0   r   r   r7  z?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummy  r8  r   r  r  )r   r  r  r"   r   r   r   r   )r   r  r7  r1   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"  )ru   r   r0   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  r0   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           |                     |j	        d           d S )Nzempty generator iterated)rc   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 	!/+BCCC!*,DEEEEEs   /BBBc              #     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           | 
                    |j	        d           t          j        ||	          }|                                s|                                V }|j        d
k    r&|                     |j	        |k    o|dk    d           nN|j        dk    r&|                     |j	        |k    o|dk    d           n|                     d|j                    |dz  }|                                | 
                    |j        d           | 
                    |j	        d           d S )N   rG   T   r   r)   rO   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   r{   fail)	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! &&(( 	$ 	!/+BCCC!*,DEEE+++'')) 	wwyyB4''%+8b8    !T))%+8b8   
 		J8HJJKKKFA '')) 	  	!/+BCCC!*,DEEEEEr   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 )
NrZ   rO   r  r  r      r)   rG   r  )r  r  r>   r4   r   finish_coroutines)r   r*  r   s      r   r  z"WaitIteratorTest.finish_coroutinesY  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 incorrectrO   wrong indexrG   r)   rZ   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_iteratore  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  rO   r  z!expected exception on iteration 1r)   rG   rZ   r  zdidn't expect iteration %dT)r   r  r[   r  r.  r>   r   )r   r  r  r   r   s      r   r1   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   r1   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  r0   r   r   r  r    s        F F XF 2F 2F X2Fh
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PyPy)rZ   )platformpython_implementationsysversion_infor   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 )NrO   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   r9  r:  r4   r   )futr  r   r  s    r   testerz$RunnerGCTest.test_gc.<locals>.tester  sG      ((C&{3//M!L%%h///IIIIIr   皙?r  )r   r3   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                                |                     t                    d           | 
                                s|                     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  r9  r:  r   r   )r  r  wfuts    r   do_somethingz8RunnerGCTest.test_gc_infinite_coro.<locals>.do_something  sO      -//CCMKKC(())))C..     r   r   rO   )get_new_ioloopr   r3   r5   closer  r  r   assertGreaterEquallenr  )r   loopr  r  r"   r  s      @@@r   test_gc_infinite_coroz"RunnerGCTest.test_gc_infinite_coro  s    ""$$		$ 	$ 	$ 	$ 
	$ 
	! 	! 	! 	! 	! 
	! 	l###



'$q'))$$$FQ///}} 	*fRj)))))	* 	*r   c                 6   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                                | 
                    t                    d           |                                 s| 	                    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  )rD  create_taskr  r  r9  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 pendingrO   r  )r   r  r   r3   r5   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	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'$q'))$$$FQ///}} 	*fRj)))))	* 	*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   r3   r  r5   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  r0   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>2  s    ARTU9V9V r   c                  :                          j                  S r   r  r  s   r   r  z'ContextVarsTest.inner.<locals>.<lambda>7  s    #''$"3Q77 r   )
r[   r  r_  	gen_innercontextvarscopy_contextr4   run_in_executorr   rD  )r   r,   r  s   ``@r   r+  zContextVarsTest.inner+  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  r_  r+   s     r   r  zContextVarsTest.gen_inner;  sQ      ********r   c                 `    |                      t                                          |           d S r   r  r+   s     r   r  zContextVarsTest.thread_innerA  s&    *****r   c              #      K   |                      d          |                      d          |                     d          |                     d          gV  d S )Nr)   rO   rZ      )r  r
  r   s    r   test_propagatezContextVarsTest.test_propagateD  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_resetO  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_function[  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_functionW  sW      	/ 	/ 	/ 	/ 	/ 	/ 	A##%%%%%%%r   N)r   r   r   r  r   r3   r
  r+  r  r  r	   r  r   r%  r0   r   r   r  r    s           	]  ]
+ + +  	]+ + ]+
+ + + 
 
 X
   X & & X& & &r   r  __main__)2r   
concurrentr   r  r   r  r  ru   r9  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   rY  rb  re  rl  rr  ru  r  r  r  
ContextVarr  skipIfr  r   mainr0   r   r   <module>r5     s          				   



    % % % % % %       Q Q Q Q Q Q Q Q Q Q Q Q , , , , , , > > > > > > > > > >         KKK 	 &%%%%%%%%x; x; x; x; x;= x; x; x;v_ _ _ _ _} _ _ _D    .   	 	 	 	 	N 	 	 	) ) ) ) )> ) ) )     ~       ^   "/ "/ "/ "/ "/" "/ "/ "/J= = = = =m = = =@T
 T
 T
 T
 T
} T
 T
 T
n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%