
    g-                        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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jZ                  d       Z. e	j^                  edu d!       G d" d#e             Z0e1d$k(  r e	jd                          yy# e$ r dZY w xY w)%    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#y)GenBasicTestc              #   x   K   t        |      D ]  }t        j                    t        j                  |      w)z0Returns arg after a number of IOLoop iterations.)ranger   momentReturn)self
iterationsargis       J/var/www/openai/venv/lib/python3.12/site-packages/tornado/test/gen_test.pydelayzGenBasicTest.delay   s/      z"A** #jjos   8:c              #   2   K   t         j                   |S wNr   r   r   results     r   async_futurezGenBasicTest.async_future&   s     jj   c              #   2   K   t         j                   |wr   r    )r   es     r   async_exceptionzGenBasicTest.async_exception+   s     jjr$   c              #   ^   K   t         j                   t        j                  |dz         wN   r   r   r   r   xs     r   add_one_asynczGenBasicTest.add_one_async0   s#     jjjjQs   +-c                 f    t         j                  d        }| j                  j                  |       y )Nc                       y r    r1       r   fz%GenBasicTest.test_no_yield.<locals>.f6   s    r2   r   	coroutineio_looprun_syncr   r3   s     r   test_no_yieldzGenBasicTest.test_no_yield5   s,    		 
	 	a r2   c                     t         j                  d        }| j                  t        | j                  j
                  |       y )Nc                      ddz   y Nr*   r   r1   r1   r2   r   r3   z-GenBasicTest.test_exception_phase1.<locals>.f=   	    Er2   r   r5   assertRaisesZeroDivisionErrorr6   r7   r8   s     r   test_exception_phase1z"GenBasicTest.test_exception_phase1<   s7    		 
	 	+T\\-B-BAFr2   c                     t         j                  d        }| j                  t        | j                  j
                  |       y )Nc               3   :   K   t         j                   ddz   y wr<   r    r1   r2   r   r3   z-GenBasicTest.test_exception_phase2.<locals>.fD        **E   r>   r8   s     r   test_exception_phase2z"GenBasicTest.test_exception_phase2C   s7    		 
	 	+T\\-B-BAFr2   c                     t         j                  d        }| j                  t         j                  | j                  j
                  |       y )Nc               3      K   d y wN*   r1   r1   r2   r   r3   z(GenBasicTest.test_bogus_yield.<locals>.fL   s     H   r   r5   r?   BadYieldErrorr6   r7   r8   s     r   test_bogus_yieldzGenBasicTest.test_bogus_yieldK   s<    		 
	 	#++T\\-B-BAFr2   c                     t         j                  d        }| j                  t         j                  | j                  j
                  |       y )Nc               3      K   d y wNr*      r1   r1   r2   r   r3   z.GenBasicTest.test_bogus_yield_tuple.<locals>.fS   s     LrK   rL   r8   s     r   test_bogus_yield_tuplez#GenBasicTest.test_bogus_yield_tupleR   s<    		 
	 	#++T\\-B-BAFr2   c                     t         j                  d        }| j                  j                  |       | j                  j                  |       y )Nc               3   0   K   t         j                   y wr   r    r1   r2   r   r3   z"GenBasicTest.test_reuse.<locals>.fZ        **   r4   r8   s     r   
test_reusezGenBasicTest.test_reuseY   s>    		 
	 	a a r2   c                 f    t         j                  d        }| j                  j                  |       y )Nc               3      K   d  y wr   r1   r1   r2   r   r3   z!GenBasicTest.test_none.<locals>.fb   s     JrK   r4   r8   s     r   	test_nonezGenBasicTest.test_nonea   s,    		 
	 	a r2   c                 l     t         j                   fd       } j                  j                  |       y )Nc               3   ~   K   j                  d      j                  d      g} j                  | ddg       y w)Nr*   rS      )r.   assertEqualresultsr   s    r   r3   z"GenBasicTest.test_multi.<locals>.fi   s>     !//2D4F4Fq4IJJGWq!f-s   :=r4   r8   s   ` r   
test_multizGenBasicTest.test_multih   s-    		. 
	. 	a r2   c                 l     t         j                   fd       } j                  j                  |       y )Nc               3      K   t        j                  d      j                  d            } j                  | t        dd             y w)Nr*   rS   foobarr_   )dictr.   r`   ra   s    r   r3   z'GenBasicTest.test_multi_dict.<locals>.fq   sD      T%7%7%:@R@RST@UVVGWdqa&89s   AAr4   r8   s   ` r   test_multi_dictzGenBasicTest.test_multi_dictp   s-    		: 
	: 	a r2   c                 l     t         j                   fd       } j                  j                  |       y )Nc               3      K   t        j                  j                  dd      j                  dd      g      } j                  | ddg       y w)Nr_   v1r*   v2)r   multi_futurer   r`   	responsesr   s    r   r3   z*GenBasicTest.test_multi_delayed.<locals>.fy   sR      "..At$djjD&9: I Yt5s   AAr4   r8   s   ` r   test_multi_delayedzGenBasicTest.test_multi_delayedx   s-    		6 
	6 	a r2   c                 l     t         j                   fd       } j                  j                  |       y )Nc            	   3      K   t        j                  t        j                  dd      j                  dd                  } j	                  | t        dd             y w)Nr_   rm   r*   rn   rf   )r   ro   ri   r   r`   rp   s    r   r3   z/GenBasicTest.test_multi_dict_delayed.<locals>.f   sW      "..At,$**Q2EF I Y4(@As   A!A$r4   r8   s   ` r   test_multi_dict_delayedz$GenBasicTest.test_multi_dict_delayed   s/    		B 
	B 	a r2   c              #      K   t        j                          }t        d      D cg c]  }t        j                   c} t        j                          }| j	                  ||z
  d       y c c}w w)Ni  g      ?)timer   r   r   
assertLess)r   startr   ends       r   test_multi_performancez#GenBasicTest.test_multi_performance   sR      		#(;/;aszz;//iikeS) 0s   "A/A*4A/c              #      K   g }| j                  t        |t                     i }| j                  t        |t                     y wr   )
assertTrue
isinstancelistri   )r   r-   ys      r   test_multi_emptyzGenBasicTest.test_multi_empty   s<      H
1d+,H
1d+,s   AA
c              #   V   K   | j                  d      }| j                  |d       y wr)   r#   r`   r!   s     r   test_futurezGenBasicTest.test_future   s)     ((++#   ')c              #   |   K   | j                  d      | j                  d      g}| j                  |ddg       y w)Nr*   rS   r   r   rb   s     r   test_multi_futurezGenBasicTest.test_multi_future   s=     **1-t/@/@/CDD1a&)   :<c              #      K   | j                  d      }| j                  d      || j                  d      |g}| j                  |g d       y w)NrS   r*   r_   )r*   rS   r_   rS   r   )r   r3   rb   s      r   test_multi_future_duplicatez(GenBasicTest.test_multi_future_duplicate   sO      a **1-q$2C2CA2FJJ,/s   AAc              #      K   t        | j                  d      | j                  d            }| j                  |t        dd             y w)Nr*   rS   rf   )ri   r#   r`   r   s     r   test_multi_dict_futurez#GenBasicTest.test_multi_dict_future   sB     !2!21!54;L;LQ;OPP$1!"45s   AAc           
   #   P  K   t        t        d      5  | j                  t              5 }t	        j
                  | j                  t        d            | j                  t        d            g       d d d        d d d        | j                  t        j                        d       | j                  t              5  t	        j
                  | j                  t        d            | j                  d      g       d d d        | j                  t              5  t	        j
                  | j                  t        d            | j                  t        d            gt               d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wwNz!Multiple exceptions in yield listzerror 1zerror 2rS   )quiet_exceptions)r   r   r?   RuntimeErrorr   Multir'   r`   str	exceptionr#   r   cms     r   test_multi_exceptionsz"GenBasicTest.test_multi_exceptions   sJ    w CD""<0Bii,,\)-DE,,\)-DE  1 E 	R\\*I6 |,))%%l9&=>@Q@QRS@TU  - |,))((i)@A((i)@A ".  -,! 10 ED -, -,sg   F&FA
E43F;AF&=AF>F&AF+	F&4E>	9FFF&FF&F#F&c           	   #      K   t        t        d      5  | j                  t              5 }| j	                  t        d            | j	                  t        d            g d d d        d d d        | j                  t        j                        d       | j                  t              5  | j	                  t        d            | j                  d      g d d d        | j                  t              5  t        j                  | j	                  t        d            | j	                  t        d            gt               d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wwr   )r   r   r?   r   r'   r`   r   r   r#   r   ro   r   s     r   test_multi_future_exceptionsz)GenBasicTest.test_multi_future_exceptions   s2    w CD""<0B((i)@A((i)@A  1 E 	R\\*I6 |,''Y(?@$BSBSTUBVWW - |,""((i)@A((i)@A ".  -, 10 ED -, -,se   E>E7E E(AE>*.E&E>5AE2	E>E	EE#E>&E/+E>2E;7E>c                 f    t         j                  d        }| j                  j                  |       y )Nc                  *    t        j                         r   r   r   r1   r2   r   r3   z.GenBasicTest.test_sync_raise_return.<locals>.f   s    **,r2   r4   r8   s     r   test_sync_raise_returnz#GenBasicTest.test_sync_raise_return   s,    		 
	 	a r2   c                 f    t         j                  d        }| j                  j                  |       y )Nc               3   V   K   t         j                   t        j                         wr   r+   r1   r2   r   r3   z/GenBasicTest.test_async_raise_return.<locals>.f   s     ****,r   r4   r8   s     r   test_async_raise_returnz$GenBasicTest.test_async_raise_return   s,    		 
	 	a r2   c                     t         j                  d        }| j                  d| j                  j	                  |             y )Nc                  ,    t        j                  d      rI   r   r1   r2   r   r3   z4GenBasicTest.test_sync_raise_return_value.<locals>.f       **R. r2   rJ   r   r5   r`   r6   r7   r8   s     r   test_sync_raise_return_valuez)GenBasicTest.test_sync_raise_return_value   s9    		! 
	! 	T\\22156r2   c                     t         j                  d        }| j                  d| j                  j	                  |             y )Nc                  ,    t        j                  d      rQ   r   r1   r2   r   r3   z:GenBasicTest.test_sync_raise_return_value_tuple.<locals>.f  s    **V$$r2   rR   r   r8   s     r   "test_sync_raise_return_value_tuplez/GenBasicTest.test_sync_raise_return_value_tuple  s9    		% 
	% 	!6!6q!9:r2   c                     t         j                  d        }| j                  d| j                  j	                  |             y )Nc               3   X   K   t         j                   t        j                  d      wrI   r+   r1   r2   r   r3   z5GenBasicTest.test_async_raise_return_value.<locals>.f
       ****R.    (*rJ   r   r8   s     r   test_async_raise_return_valuez*GenBasicTest.test_async_raise_return_value	  s9    		! 
	! 	T\\22156r2   c                     t         j                  d        }| j                  d| j                  j	                  |             y )Nc               3   X   K   t         j                   t        j                  d      wrQ   r+   r1   r2   r   r3   z;GenBasicTest.test_async_raise_return_value_tuple.<locals>.f  s     ****V$$r   rR   r   r8   s     r   #test_async_raise_return_value_tuplez0GenBasicTest.test_async_raise_return_value_tuple  s9    		% 
	% 	!6!6q!9:r2   N)$__name__
__module____qualname__r   r5   r   r#   r'   r.   r9   rA   rF   rN   rT   rY   r\   rc   rj   rr   ru   r
   r	   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r2   r   r   r      sa   ]]  	]]  	]]  	]]   !GGGG!!!!	!	! *  * - - $ $ * * 0 0 6 6  6  .!!7;7;r2   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 ej8                  dej<                  cxk  xr dk  nc d      d               Zd Z ed        Z! xZ"S )GenCoroutineTestc                 0    d| _         t        | 	          y )NF)finishedsupersetUpr   	__class__s    r   r   zGenCoroutineTest.setUp  s     r2   c                 >    t         |           | j                  sJ y r   )r   tearDownr   r   s    r   r   zGenCoroutineTest.tearDown"  s    }}}r2   c                    d| _         d }t        j                  |      }| j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |       y )NTc               3   0   K   t         j                   y wr   r    r1   r2   r   r3   z+GenCoroutineTest.test_attributes.<locals>.f)       **rX   )r   r   r5   r`   r   r   assertIs__wrapped__r   r3   coros      r   test_attributesz GenCoroutineTest.test_attributes&  sb    	 }}Q

3!,,7d&&*r2   c                 $   d| _         d }t        j                  |      }| j                  t        j                  |             | j                  t        j                  |             | j                  t        j                   |                    y )NTc               3   0   K   t         j                   y wr   r    r1   r2   r   r3   z6GenCoroutineTest.test_is_coroutine_function.<locals>.f4  r   rX   )r   r   r5   assertFalseis_coroutine_functionr}   r   s      r   test_is_coroutine_functionz+GenCoroutineTest.test_is_coroutine_function1  si    	 }}Q2215611$782246:;r2   c              #   |   K   t         j                  d        } |       }| j                  |d       d| _        y w)Nc                  ,    t        j                  d      rI   r   r1   r2   r   r3   z0GenCoroutineTest.test_sync_gen_return.<locals>.f>  r   r2   rJ   Tr   r5   r`   r   r   r3   r"   s      r   test_sync_gen_returnz%GenCoroutineTest.test_sync_gen_return<  s>     		! 
	! s$r   c              #   |   K   t         j                  d        } |       }| j                  |d       d| _        y w)Nc               3   X   K   t         j                   t        j                  d      wrI   r+   r1   r2   r   r3   z1GenCoroutineTest.test_async_gen_return.<locals>.fH  r   r   rJ   Tr   r   s      r   test_async_gen_returnz&GenCoroutineTest.test_async_gen_returnF  s>     		! 
	! s$r   c              #   |   K   t         j                  d        } |       }| j                  |d       d| _        y w)Nc                       yrI   r1   r1   r2   r   r3   z,GenCoroutineTest.test_sync_return.<locals>.fS  s    r2   rJ   Tr   r   s      r   test_sync_returnz!GenCoroutineTest.test_sync_returnQ  s>     		 
	 s$r   c              #   |   K   t         j                  d        } |       }| j                  |d       d| _        y w)Nc               3   0   K   t         j                   ywrI   r    r1   r2   r   r3   z-GenCoroutineTest.test_async_return.<locals>.f]  s     **rX   rJ   Tr   r   s      r   test_async_returnz"GenCoroutineTest.test_async_return[  s>     		 
	 s$r   c              #       K   t         j                   fd       } |       } j                  |d       d _        y w)Nc               3      K   	 ywrI   )r   Taskr6   add_callbackr   s   r   r3   z3GenCoroutineTest.test_async_early_return.<locals>.fk  s     s   rJ   Tr   r   s   `  r   test_async_early_returnz(GenCoroutineTest.test_async_early_returnf  sA     
 
	6 
	6
 s$s   <?c              #      K   t         j                  d        fd} |       }| j                  |d       d| _        y w)Nc               3   X   K   t         j                   t        j                  d      wrI   r+   r1   r2   r   f1z-GenCoroutineTest.test_async_await.<locals>.f1w  r   r   c                  2   K            d {   } | S 7 wr   r1   )r"   r   s    r   f2z-GenCoroutineTest.test_async_await.<locals>.f2  s     4ZFM  s   rJ   Tr   r   r   r"   r   s      @r   test_async_awaitz!GenCoroutineTest.test_async_awaitu  sD     		! 
	!	 t$s   ?Ac              #   V   K   d } |       }| j                  |d       d| _        y w)Nc                  L   K   dd l }  | j                  d       d {    y7 w)Nr   rJ   )asynciosleep)r   s    r   r3   z3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.f  s%     '--""" #s   $"$rJ   T)r`   r   r   s      r   test_asyncio_sleep_zeroz(GenCoroutineTest.test_asyncio_sleep_zero  s-     	 s$r   c              #      K   t         j                  d        fd}t         j                  d        } |        |       g}| j                  |ddg       d| _        y w)Nc               3   0   K   t         j                   y wr   r    r1   r2   r   r   zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1  rW   rX   c                  0   K             d {    y7 wrI   r1   r   s   r   r   zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f2  s     $JJ s   c               3   X   K   t         j                   t        j                  d      w)N+   r+   r1   r2   r   f3zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3  r   r   rJ   r   Tr   )r   r   r   rb   r   s       @r   *test_async_await_mixed_multi_native_futurez;GenCoroutineTest.test_async_await_mixed_multi_native_future  sg     		 
		 
	! 
	! rt$2r(+s   AA!c              #      K   d }t        j                  t        j                  d       |             }| j	                  |d       d| _        y w)Nc                     K   ywrI   r1   r1   r2   r   r   z4GenCoroutineTest.test_async_with_timeout.<locals>.f1  s	     s   r*   )hoursrJ   T)r   with_timeoutdatetime	timedeltar`   r   )r   r   r"   s      r   test_async_with_timeoutz(GenCoroutineTest.test_async_with_timeout  sF     	 ''(:(:(CRTJJ$s   AAc              #   |   K   t         j                  d        } |       }| j                  |d        d| _        y w)Nc                       y r   r1   r1   r2   r   r3   z5GenCoroutineTest.test_sync_return_no_value.<locals>.f  s    r2   Tr   r   s      r   test_sync_return_no_valuez*GenCoroutineTest.test_sync_return_no_value  s>     		 
	 s&r   c              #   |   K   t         j                  d        } |       }| j                  |d        d| _        y w)Nc               3   0   K   t         j                   y wr   r    r1   r2   r   r3   z6GenCoroutineTest.test_async_return_no_value.<locals>.f  s     **rX   Tr   r   s      r   test_async_return_no_valuez+GenCoroutineTest.test_async_return_no_value  s@      
	 
	 s&r   c              #      K   t         j                  d        } |       }| j                  t              5  | d d d        d| _        y # 1 sw Y   d| _        y xY ww)Nc                      ddz   y r<   r1   r1   r2   r   r3   z+GenCoroutineTest.test_sync_raise.<locals>.f  r=   r2   Tr   r5   r?   r@   r   r   r3   futures      r   test_sync_raisez GenCoroutineTest.test_sync_raise  sQ     		 
	 01L 2 2   3AA
A
AAc              #      K   t         j                  d        } |       }| j                  t              5  | d d d        d| _        y # 1 sw Y   d| _        y xY ww)Nc               3   :   K   t         j                   ddz   y wr<   r    r1   r2   r   r3   z,GenCoroutineTest.test_async_raise.<locals>.f  rD   rE   Tr  r  s      r   test_async_raisez!GenCoroutineTest.test_async_raise  sQ     		 
	 01L 2 2r  c              #      K   t         j                  d        t         j                  fd       } |       }| j                  t              5  | d d d        d| _        y # 1 sw Y   d| _        y xY ww)Nc                      ddz   y r<   r1   r1   r2   r   r   z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f1  r=   r2   c               3   P   K   	           y # t         $ r t               w xY wwr   )r@   KeyErrorr   s   r   r   z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f2  s)     !d
$ !j !s   &	 &#&T)r   r5   r?   r  r   )r   r   r  r   s      @r   !test_replace_yieldpoint_exceptionz2GenCoroutineTest.test_replace_yieldpoint_exception  sk      
	 
	 
	! 
	! x(L ) )s   AA6A#A6#A3(A6c              #      K   t         j                  d        t         j                  fd       } |       }| j                  |d       d| _        y w)Nc                      ddz   y r<   r1   r1   r2   r   r   z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f1  r=   r2   c               3   f   K   	           y # t         $ r t        j                  d      w xY wwrI   )r@   r   r   r   s   r   r   z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2  s/     %d
$ %jjn$%s   1	 1.1rJ   Tr   r   s      @r   !test_swallow_yieldpoint_exceptionz2GenCoroutineTest.test_swallow_yieldpoint_exception  sY      
	 
	 
	% 
	% t$s   AAc              #      K   g t         j                  fd       }t               }|j                  d         |d|       |d|      g | j	                  dj                        d       g  |dt         j                         |dt         j                        g | j	                  dj                        d       d| _        g  |dt         j                         |d|      g | j	                  dj                        d       y w)	Nc              3   X   K   t        d      D ]  }j                  |        |  y w)N   )r   append)name	yieldabler   callss      r   r3   z'GenCoroutineTest.test_moment.<locals>.f  s&     1XT" s   '*ab 
aaaaabbbbb
abababababT
abbbbbaaaa)r   r5   r   
set_resultr`   joinr   r   )r   r3   	immediater  s      @r   test_momentzGenCoroutineTest.test_moment  s     		  
	  H	T"i !C"3446 cjj!1S#**#5666cjj!1S)#4556s   DDc              #   H   K   t        j                  d       d| _        y w)N{Gz?T)r   r   r   r   s    r   
test_sleepzGenCoroutineTest.test_sleep#  s     iios    "c              #     K    G d dt               t        j                  fd       }	  |d       	  |d       d| _        y # $ r@}| j                  t	        |      d       | j                  |j                         Y d }~Sd }~ww xY w# $ rG}| j                  t	        |      d       | j                  |j                         Y d }~d| _        y d }~ww xY ww)	Nc                       e Zd Zy)IGenCoroutineTest.test_py3_leak_exception_context.<locals>.LeakedExceptionNr   r   r   r1   r2   r   LeakedExceptionr)  *  s    r2   r+  c                      |       r   r1   )	iterationr+  s    r   innerz?GenCoroutineTest.test_py3_leak_exception_context.<locals>.inner-  s    !),,r2   r*   1rS   2T)	Exceptionr   r5   r`   r   assertIsNone__context__r   )r   r.  r&   r+  s      @r   test_py3_leak_exception_contextz0GenCoroutineTest.test_py3_leak_exception_context(  s     	i 	 
	- 
	-	-(N
	-(N
   	-SVS)amm,,	-  	-SVS)amm,,		-sQ   (C 
A	 
B C 	B6B	C 	BC C6CC CC r_   )r_      z#asyncio.Future has reference cyclesc                      t         j                   fd       t         j                  fd       } j                  j                  |d        j	                   j                         d        d _        y )Nc               3      K    G d dt               }  |        }t        j                  |      _        d } t	        j
                  |              t        d      w)Nc                       e Zd Zy)GGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.FooNr*  r1   r2   r   Foor:  H  s    r2   r;  c                       y r   r1   r1   r2   r   dummyzIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyN      r2   z
Some error)objectweakrefref	local_refr   r5   
ValueError)r;  	local_varr=  r   s      r   r.  z:GenCoroutineTest.test_coroutine_refcounting.<locals>.innerF  sR     f  I$[[3DN '#--&((\**s   AAc               3   @   K   	           y # t         $ r Y y w xY wwr   )rC  )r.  s   r   inner2z;GenCoroutineTest.test_coroutine_refcounting.<locals>.inner2T  s$     g s   	 	r_   )timeoutT)r   r5   r6   r7   r   rB  r   )r   rF  r.  s   ` @r   test_coroutine_refcountingz+GenCoroutineTest.test_coroutine_refcounting?  sh     
	+ 
	+ 
	 
	 	fa0dnn&-r2   c                    d| _         t        j                         }| j                  |j                  |j                                |j	                  d       d } t        j                  |             }| j                  |t        j                         dt        |j                  j                  dz   fz  }t        |      }| j                  ||       y )NTc               3   0   K   t         j                   y wr   r    r1   r2   r   r3   z:GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fg  r   rX   zcreated at %s:%dr_   )r   r   get_event_loop
addCleanup	set_debug	get_debugr   r5   assertIsInstancer   __file____code__co_firstlinenoreprassertIn)r   asyncio_loopr3   r   expectedactuals         r   test_asyncio_future_debug_infoz/GenCoroutineTest.test_asyncio_future_debug_info`  s    --/..0F0F0HIt$	  s}}Q!dGNN3 &1::3L3Lq3P(QQdh'r2   c              #      K   t         j                  d        }t        j                   |        |             }| j	                  |ddg       d| _        y w)Nc               3   X   K   t         j                   t        j                  d      wr)   r+   r1   r2   r   r3   z/GenCoroutineTest.test_asyncio_gather.<locals>.fv  s     ****Q-r   r*   T)r   r5   r   gatherr`   r   )r   r3   rets      r   test_asyncio_gatherz$GenCoroutineTest.test_asyncio_gatherr  sR      
	  
	  NN13,,q!f%s   AA)#r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r#  r&  r4  r   unittestskipIfsysversion_inforH  rX  r]  __classcell__)r   s   @r   r   r     s   	+	<            "    $     	 	   	 	  &  $ 7 74    , X__s(&(*O :($ 
 
r2   r   c                   0    e Zd Zej                  d        Zy)GenCoroutineSequenceHandlerc              #      K   t         j                   | j                  d       t         j                   | j                  d       t         j                   | j                  d       y wNr/  r0  3)r   r   writefinishr   s    r   getzGenCoroutineSequenceHandler.get  sF     jj

3jj

3jjC   A+A-Nr   r   r   r   r5   rj  r1   r2   r   rd  rd    s    ]] r2   rd  c                   0    e Zd Zej                  d        Zy)%GenCoroutineUnfinishedSequenceHandlerc              #      K   t         j                   | j                  d       t         j                   | j                  d       t         j                   | j                  d       y wrf  )r   r   rh  r   s    r   rj  z)GenCoroutineUnfinishedSequenceHandler.get  sE     jj

3jj

3jj

3rk  Nrl  r1   r2   r   rn  rn    s    ]] r2   rn  c                   T    e Zd Zej                  d        Zej                  d        Zy)UndecoratedCoroutinesHandlerc              #   t   K   g | _         t        j                   | j                   j                  d       y w)Nr/  )chunksr   r   r  r   s    r   preparez$UndecoratedCoroutinesHandler.prepare  s)     jj3s   68c              #     K   | j                   j                  d       t        j                   | j                   j                  d       t        j                   | j	                  dj                  | j                                y w)Nr0  rg  r  )rs  r  r   r   rh  r!  r   s    r   rj  z UndecoratedCoroutinesHandler.get  sW     3jj3jj

2774;;'(s   BBNr   r   r   r   r5   rt  rj  r1   r2   r   rq  rq    s0    ]]   
 	]]) )r2   rq  c                   6    e Zd Zej                  d        Zd Zy)AsyncPrepareErrorHandlerc              #   D   K   t         j                   t        d      w)N  )r   r   r   r   s    r   rt  z AsyncPrepareErrorHandler.prepare  s     jjns    c                 &    | j                  d       y )Nok)ri  r   s    r   rj  zAsyncPrepareErrorHandler.get  s    Dr2   Nrv  r1   r2   r   rx  rx    s    ]] r2   rx  c                       e Zd Zd Zy)NativeCoroutineHandlerc                 l   K   t        j                  d       d {    | j                  d       y 7 w)Nr   r|  )r   r   rh  r   s    r   rj  zNativeCoroutineHandler.get  s)     mmA

4 	s   424N)r   r   r   rj  r1   r2   r   r~  r~    s    r2   r~  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)
GenWebTestc                 ^    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   rd  rn  rq  rx  r~  r   s    r   get_appzGenWebTest.get_app  sE    &(CD49 *+GH')AB$&<=	
 	
r2   c                 ^    | j                  d      }| j                  |j                  d       y )Nr     123fetchr`   bodyr   responses     r   test_coroutine_sequence_handlerz*GenWebTest.test_coroutine_sequence_handler  s%    ::34/r2   c                 ^    | j                  d      }| j                  |j                  d       y )Nr  r  r  r  s     r   *test_coroutine_unfinished_sequence_handlerz5GenWebTest.test_coroutine_unfinished_sequence_handler  s%    ::>?/r2   c                 ^    | j                  d      }| j                  |j                  d       y )Nr  r  r  r  s     r   test_undecorated_coroutinesz&GenWebTest.test_undecorated_coroutines  s%    ::67/r2   c                 ^    | j                  d      }| j                  |j                  d       y )Nr  rz  )r  r`   coder  s     r    test_async_prepare_error_handlerz+GenWebTest.test_async_prepare_error_handler  s%    ::45,r2   c                     | j                  d      }| j                  |j                  d       | j                  |j                  d       y )Nr     s   ok)r  r`   r  r  r  s     r   test_native_coroutine_handlerz(GenWebTest.test_native_coroutine_handler  s9    ::12,.r2   N)	r   r   r   r  r  r  r  r  r  r1   r2   r   r  r    s     
000-/r2   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
y)	WithTimeoutTestc              #      K   | j                  t        j                        5  t        j                  t	        j
                  d      t                      d d d        y # 1 sw Y   y xY ww)N皙?seconds)r?   r   TimeoutErrorr   r   r   r   r   s    r   test_timeoutzWithTimeoutTest.test_timeout  sE     s//0""8#5#5c#BFHMM 100s    A,5A 	A, A)%A,c              #     K   t               | j                  j                  t        j                  d      fd       t        j                  t        j                  d            }| j                  |d       y w)Nr  r  c                  &     j                  d      S )Nasdf)r   r  s   r   <lambda>z?WithTimeoutTest.test_completes_before_timeout.<locals>.<lambda>  s    V5F5Fv5Nr2     r  )r   r6   add_timeoutr   r   r   r   r`   )r   r"   r  s     @r   test_completes_before_timeoutz-WithTimeoutTest.test_completes_before_timeout  sc       s+-N	
 ''(:(:4(H&QQ(s   A=B c              #   4  K   t               | j                  j                  t        j                  d      fd       | j                  t              5  t        j                  t        j                  d             d d d        y # 1 sw Y   y xY ww)Nr  r  c                  6     j                  t                     S r   )set_exceptionr@   r  s   r   r  z;WithTimeoutTest.test_fails_before_timeout.<locals>.<lambda>  s    F(():)<=r2   r  )	r   r6   r  r   r   r?   r@   r   r   )r   r  s    @r   test_fails_before_timeoutz)WithTimeoutTest.test_fails_before_timeout  sk       s+=	
 01""8#5#5d#CVLL 211s   AB-B	BBBc              #      K   t               }|j                  d       t        j                  t	        j
                  d      |      }| j                  |d       y w)Nr  r  r  )r   r   r   r   r   r   r`   )r   r  r"   s      r   test_already_resolvedz%WithTimeoutTest.test_already_resolved  sK     &!''(:(:4(H&QQ(s   AAc           	   #   d  K   t        j                  d      5 }| j                  t        j                        5  t        j
                  | j                  j                         |j                  t        j                  d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nr*   r  )
r   ThreadPoolExecutorr?   r   r  r   r6   rw   submitr   r   executors     r   test_timeout_concurrent_futurez.WithTimeoutTest.test_timeout_concurrent_future  s|      ''*h""3#3#34&&LL%%'S)I  5 +*44 +*s4   B0 B$ABB$	B0B!	B$$B-)B0c              #      K   t        j                  d      5 }d }|j                  |      }|j                          t	        j
                  t        j                  d      |       d d d        y # 1 sw Y   y xY ww)Nr*   c                       y r   r1   r1   r2   r   r=  z?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummy  r>  r2   r  r  )r   r  r  r"   r   r   r   r   )r   r  r=  r3   s       r    test_completed_concurrent_futurez0WithTimeoutTest.test_completed_concurrent_future  s_      ''*h &AHHJ""8#5#5d#CQGG +**s   A>AA2)	A>2A;7A>c              #      K   t        j                  d      5 }t        j                  t	        j
                  d      |j                  d              d d d        y # 1 sw Y   y xY ww)Nr*   r  r  c                  ,    t        j                  d      S )Nr%  )rw   r   r1   r2   r   r  z?WithTimeoutTest.test_normal_concurrent_future.<locals>.<lambda>  s    

4(8r2   )r   r  r   r   r   r   r  r  s     r   test_normal_concurrent_futurez-WithTimeoutTest.test_normal_concurrent_future  sQ      ''*h""""40 89  +**s   A*=A	A*A'#A*N)r   r   r   r	   r  r  r  r  r  r  r  r1   r2   r   r  r    s    N N ) ) M M ) )   
H 
H  r2   r  c                   b    e Zd Zed        Zed        Zd Zed        Zed        Zed        Z	y)WaitIteratorTestc                    t        j                         }| j                  |j                         d       | j	                  t
              5  t        j                  t               t                     }d d d        | j                  |j                  d d       | j                  |j                  d d       y # 1 sw Y   DxY w)Nzempty generator iterated)rh   bad nil current indexbad nil current future)
r   WaitIteratorr}   doner?   rC  r   r`   current_indexcurrent_future)r   gs     r   test_empty_iteratorz$WaitIteratorTest.test_empty_iterator  s    "<=z*  vx8A + 	$0GH))41IJ	 +*s   
(B55B>c              #     K   t               }t               }t               }|j                  d       |j                  d       |j                  d       t        j                  |||      }d}|j	                         s|j                         }|dk(  rK| j                  |j                  d       | j                  |j                  |       | j                  |d       n|dk(  rK| j                  |j                  d       | j                  |j                  |       | j                  |d       nO|dk(  rJ| j                  |j                  d       | j                  |j                  |       | j                  |d       |dz  }|j	                         s| j                  |j                  d d       | j                  |j                  d d       t        j                  ||	      }|j	                         s|j                         }|j                  d
k(  r'| j                  |j                  |k(  xr |dk(  d       n`|j                  dk(  r'| j                  |j                  |k(  xr |dk(  d       n*| j                  dj                  |j                               |dz  }|j	                         s| j                  |j                  d d       | j                  |j                  d d       y w)N   rJ   T   r   r*   rS   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)  sm    XXX
b
b
bRR(&&(ffhA Av  !4a..3  B'a  !4a..3  B'a  !4a..3  B'FA! &&($ 	$0GH))41IJ+'')wwyB4'%%+8b8 !!T)%%+8b8
 		9@@AQAQRSFA '')" 	))41HI**D2JKs   FK0DK05;K0c                 6   |dk(  r|d   j                  d       nO|dk(  r|d   j                  t                      n-|dk(  r(|d   j                  d       |d   j                  d	       |dk  r+| j                  j	                  | j
                  |dz   |       y y )
Nr_   rS   r  r  r      r*   rJ   r  )r   r  r@   r6   r   finish_coroutines)r   r-  r   s      r   r  z"WaitIteratorTest.finish_coroutines_  s    >AJ!!"%!^AJ$$%6%89!^AJ!!"%AJ!!"%q=LL%%d&<&<i!mWU r2   c              #     K   t               t               t               t               g}| j                  d|       t        j                  | }d}|j	                         s	 |j                         }|dk(  r1| j                  |dd       | j                  |j                  dd       nl|dk(  r1| j                  |dd       | j                  |j                  dd       n6|dk(  r1| j                  |d	d       | j                  |j                  dd       	 |dz  }|j	                         sy y # t        $ r# | j                  |j                  |d   d
       Y Cw xY ww)Nr   r  iterator value incorrectrS   wrong indexrJ   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  s0    8VXvx:q'*g&&&(H&&(N 6$$Q,FG$$Q__aG!V$$Q,FG$$Q__aG!V$$Q,FG$$Q__aGFA &&( % Xa..
<VWXs1   AE D, 2B7E*E,)EEEEc              #       K   t               t               t               t               g j                  d       d _         fd} |         j                   j                         y w)Nr   Fc                  4  K   d} t        j                   }	 |2 3 d {   }| dk(  r1j                  |dd       j                  |j                  dd       nt	        d      | dz  } P7 K6 n# t
        $ r | dz  } Y nw xY w|2 3 d {  7  }| dk(  r1j                  |dd       j                  |j                  dd       nD| d	k(  r1j                  |d
d       j                  |j                  d	d       nt	        d| z        | dz  } 6 d_        y w)Nr   r  r  rS   r  z!expected exception on iteration 1r*   rJ   r_   r  zdidn't expect iteration %dT)r   r  r`   r  r1  r@   r   )r   r  r  r   r   s      r   r3   z5WaitIteratorTest.test_iterator_async_await.<locals>.f  s)    A  '*A	  !Av((B0JK((!]K'(KLLFAq % Q 	 	a6$$Q,FG$$Q__aG!V$$Q,FG$$Q__aG#$@1$DEEQ  !DMsb   DA/ A-A+A-AA/ +A--A/ .D/B =D?B  DD	B
DB
D)r   r  r   r}   )r   r3   r   s   ` @r   test_iterator_async_awaitz*WaitIteratorTest.test_iterator_async_await  sT     
 8VXvx:q'*	!2 c	&s   A+A/c              #      K   t        j                  t        j                  d      t        j                  t        j
                  d            j                                y w)Nr  r  r   )r   r   r   r   r  r   r  r   s    r   test_no_refzWaitIteratorTest.test_no_ref  sG      s+S-=-=ciil-K-P-P-R
 	
s   A"A$N)
r   r   r   r	   r  r  r  r  r  r  r1   r2   r   r  r    sp    K K 3L 3Lj
V  2 "' "'H 
 
r2   r  c                   4    e Zd Zd Zed        Zd Zd Zd Zy)RunnerGCTestc                 Z    t        j                         dk(  xr t        j                  dkD  S )NPyPyr5  )platformpython_implementationr`  ra  r   s    r   is_pypy3zRunnerGCTest.is_pypy3  s'    --/69Uc>N>NQU>UUr2   c              #       K   d gfdt         j                   fd       }t        j                  t        j                  d       |              y w)Nc                  b    t        j                  d         d          j                  d       y )NrS   r   {   )gccollectr   )weakref_scopes   r   callbackz&RunnerGCTest.test_gc.<locals>.callback  s&    JJqMM!))#.r2   c               3      K   t               } t        j                  |       d<   j                  j	                         |  y w)Nr   )r   r@  rA  r6   r   )futr  r   r  s    r   testerz$RunnerGCTest.test_gc.<locals>.tester  s8     (C&{{3/M!LL%%h/Is   AA皙?r  )r   r5   r   r   r   )r   r  r  r  s   ` @@r   test_gczRunnerGCTest.test_gc  sO      	/ 
	 
	 x11#>IIs   AAc                    | j                         }g g t        j                  fd       t        j                  fd       }|j                  |       |j	                          t        j                          | j                   d          d        | j                  t              d       | j                         s| j                  d   d        y y )Nc               3      K   	 	 t        j                  d        j                  d       )#  j                  d        w xY wwNTgMbP?r   r   r  r"   s   r   infinite_coroz9RunnerGCTest.test_gc_infinite_coro.<locals>.infinite_coro  s=     $))D/)MM$' 
 d#s   A*/ AAc               3      K           } | | _         j                  t        j                  |              t	        j
                  d       y wNr  )	_refcycler  r@  rA  r   r   )r  r  wfuts    r   do_somethingz8RunnerGCTest.test_gc_infinite_coro.<locals>.do_something  s8     /CCMKKC()))C. s   AAr   rS   )get_new_ioloopr   r5   r7   closer  r  r   assertGreaterEquallenr  )r   loopr  r  r"   r  s      @@@r   test_gc_infinite_coroz"RunnerGCTest.test_gc_infinite_coro  s     ""$		$ 
	$ 
	! 
	! 	l#




gd1gi&FQ/}}MM&*d+ r2   c                    dd l d | j                         }g g t        j                  fd       }|j	                  |       t        dd      5  |j                          t        j                          d d d        | j                   d          d        | j                  t              d       | j                         s| j                  d   d        y y # 1 sw Y   exY w)Nr   c                    K   	 	 t        j                  d       d {    | j                  d       /7 # | j                  d        w xY wwr  r  r  s    r   r  z@RunnerGCTest.test_gc_infinite_async_await.<locals>.infinite_coro  sB     $))D/))MM$' ) d#s   A6 46 A		Ac               3      K    j                          j                               } | | _        j                  t	        j
                  |              t        j                  d       y wr  )rK  create_taskr  r  r@  rA  r   r   )r  r   r  r"   r  s    r   r  z?RunnerGCTest.test_gc_infinite_async_await.<locals>.do_something  sQ     ('((*66}V7LMCCMKKC()))C. s   A*A-r   z$Task was destroyed but it is pendingrS   r  )r   r  r   r5   r7   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  s    	$ ""$		! 
	! 	l#y"HIJJLJJL J 	gd1gi&FQ/}}MM&*d+  JIs   %C!!C*c                     t         j                  d        }| j                         }|j                  |      }| j	                  |d d g       y )Nc               3      K   t        j                  t         j                  t         j                  g      } t        j                  |       wr   )r   multir   r   r  s    r   wait_a_momentz5RunnerGCTest.test_multi_moment.<locals>.wait_a_moment  s3     99cjj#**%=>>F**V$$s   AA)r   r5   r  r7   r`   )r   r  r  r"   s       r   test_multi_momentzRunnerGCTest.test_multi_moment  sL     
	% 
	% ""$}-$.r2   N)	r   r   r   r  r	   r  r  r  r  r1   r2   r   r  r    s/    V J J$",H",H
/r2   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y	)
ContextVarsTestc                 l   K   t         j                  |       | j                  |       d {    y 7 wr   r  setr.  r,   s     r   native_rootzContextVarsTest.native_root'  s"     Ajjms   *424c              #   d   K   t         j                  |       d  | j                  |       y wr   r  r,   s     r   gen_rootzContextVarsTest.gen_root+  s"     Ajjms   .0c                 L   K    j                  t        j                                 j                         d {     j                  t        j                                t	        j
                          j                  j                  d  fd       d {     j                  t        j                                t        j                         j                  d  fd       d {     j                  t        j                                y 7 7 7 -w)Nc                  <     j                  j                        S r   runthread_innerctxr   r-   s   r   r  z'ContextVarsTest.inner.<locals>.<lambda>8  s    ARARTU9Vr2   c                  <     j                  j                        S r   r  r  s   r   r  z'ContextVarsTest.inner.<locals>.<lambda>=  s    #''$"3"3Q7r2   )
r`   r  rj  	gen_innercontextvarscopy_contextr6   run_in_executorr   rK  )r   r-   r  s   ``@r   r.  zContextVarsTest.inner1  s     *nnQ* &&(ll**41VWWW* $$&667
 	
 	
 	* 	 
 	X	
s5   9D$DA D$D  AD$4D"5*D$ D$"D$c              #      K   | j                  t        j                         |       d  | j                  t        j                         |       y wr   r`   r  rj  r,   s     r   r  zContextVarsTest.gen_innerA  s5     **s   AAc                 L    | j                  t        j                         |       y r   r#  r,   s     r   r  zContextVarsTest.thread_innerG  s    *r2   c              #      K   | j                  d      | j                  d      | j                  d      | j                  d      g y w)Nr*   rS   r_      )r  r  r   s    r   test_propagatezContextVarsTest.test_propagateJ  sF     
 QQMM!MM!	
 	
s   AAc              #   h   K   t         j                  d      }d  t         j                  |       y wr)   )r  r  reset)r   tokens     r   
test_resetzContextVarsTest.test_resetU  s$     A 	es   02c              #   \    K   d fd}t         j                          |        y w)N
   c                  V   K    j                  t        j                                y wr   r#  r,   s   r   native_async_functionzgContextVarsTest.test_propagate_to_first_yield_with_native_async_function.<locals>.native_async_functiona  s     W[[]A.s   &))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]  s'     	/ 	A#%%s   (,N)r   r   r   r  r   r5   r  r.  r  r  r	   r'  r+  r0  r1   r2   r   r  r  %  s}     	]] 
+  	]]+ +
+ 
 
   & &r2   r  __main__)3r   
concurrentr   r  r   r  r`  rw   r@  r^  tornado.concurrentr   tornado.logr   tornado.testingr   r   r   r	   tornado.test.utilr
   r   tornado.webr   r   r   tornador   r  ImportErrortypingTYPE_CHECKINGr   r   r   r   rd  rn  rq  rx  r~  r  r  r  r  
ContextVarr  r_  r  r   mainr1   r2   r   <module>r>     s_     	   
    %  Q Q : > >  	%y;= y;xc} cL. 	N 	)> ) ~ ^ "/" "/J=m =@U
} U
pi/= i/X $k$$Y/G $&FG?&m ?& H?&D zHMMO g"  Ks   D< <EE