o
    GXh/                     @   s   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 edZe	 Z
G dd deZejddd	d
Zdd Zdd Ze
fddZG dd dejZG dd dejZG dd dejZedkrhe  dS dS )    N)import_module)
gc_collectasyncioc                   @      e Zd ZdS )AwaitExceptionN__name__
__module____qualname__ r   r   </opt/python-3.10.19/usr/lib/python3.10/test/test_asyncgen.pyr          r   Fthrowc                 c   s    | rdV  d S dV  d S )Nr   resultr   r   r   r   r   	awaitable   s   

r   c              
   C   sf   d}	 z|rd}|  t}n| d }W n ty+ } z|jd W  Y d }~S d }~ww |dkr2d}q)NFTr   r   )r   r   sendStopIterationargs)coroexcfutexr   r   r   run_until_complete   s   
r   c                    s    fdd}t | S )Nc                     s(   g }  2 z3 d H W }|  | q6 | S Nappend)resigenr   r   iterate+      zto_list.<locals>.iterate)r   )r!   r"   r   r    r   to_list*   s   
r$   c                    sT   	 zt j W n ty   tdw tu r S  fdd}| S )Nz is not an async iteratorc                      s*   z I d H W S  t y    Y S w r   StopAsyncIterationr   	__anext__defaultiteratorr   r   
anext_implE   s   zpy_anext.<locals>.anext_impl)typer(   AttributeError	TypeError_no_default)r*   r)   r+   r   r'   r   py_anext4   s   r0   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )AsyncGenSyntaxTestc                 C   B   d}|  td t|i i  W d    d S 1 sw   Y  d S )NzJasync def foo():
            await abc
            yield from 123
        yield from.*inside asyncassertRaisesRegexSyntaxErrorexecselfcoder   r   r   test_async_gen_syntax_01U      "z+AsyncGenSyntaxTest.test_async_gen_syntax_01c                 C   r2   )Nz4async def foo():
            yield from 123
        r3   r4   r8   r   r   r   test_async_gen_syntax_02^   s   "z+AsyncGenSyntaxTest.test_async_gen_syntax_02c                 C   r2   )NzXasync def foo():
            await abc
            yield
            return 123
        return.*value.*async genr4   r8   r   r   r   test_async_gen_syntax_03f      "z+AsyncGenSyntaxTest.test_async_gen_syntax_03c                 C   r2   )NzBasync def foo():
            yield
            return 123
        r>   r4   r8   r   r   r   test_async_gen_syntax_04p   r<   z+AsyncGenSyntaxTest.test_async_gen_syntax_04c                 C   r2   )NzWasync def foo():
            if 0:
                yield
            return 12
        r>   r4   r8   r   r   r   test_async_gen_syntax_05y   r@   z+AsyncGenSyntaxTest.test_async_gen_syntax_05N)r   r	   r
   r;   r=   r?   rA   rB   r   r   r   r   r1   S   s    	
	r1   c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )AsyncGenTestc                 C   s0   dd }dd }||}||}|  || |S )Nc              
   S   sn   g }	 z	| |   W n) ty   | d Y |S  ty5 } z| tt| W Y d }~nd }~ww q)NTSTOP)r   __next__r   	Exceptionstrr,   )gr   r   r   r   r   sync_iterate   s   
z5AsyncGenTest.compare_generators.<locals>.sync_iteratec              
   S   s   g }	 |   }zT	 z|  W nI ty7 } z|jr(||jd  W Y d }~n2|d W Y d }~n'd }~w ty>     tyX } z|tt| W Y d }~nd }~ww q	W n tyj   |d Y |S w q)NTr   zEMPTY StopIterationrD   )	r(   rE   r   r   r   r&   rF   rG   r,   )rH   r   anr   r   r   r   async_iterate   s:   

z6AsyncGenTest.compare_generators.<locals>.async_iterate)assertEqual)r9   sync_gen	async_genrI   rK   Zsync_gen_resultZasync_gen_resultr   r   r   compare_generators   s   zAsyncGenTest.compare_generatorsc                    s&    fdd}  t| g d d S )Nc                    sH   t  I d H  dV }  | d  t  I d H  dV  t  I d H  dV  d S )N{       )r   assertIs)ar9   r   r   r!      s   
z5AsyncGenTest.test_async_gen_iteration_01.<locals>.gen)rP   rQ   rR   )rL   r$   r9   r!   r   rU   r   test_async_gen_iteration_01   s   	z(AsyncGenTest.test_async_gen_iteration_01c              
   C   s   dd }| }|  }| }| | d z|  W n ty8 } z| |jd d W Y d }~n
d }~ww | d | }| | d z|  W n tyi } z| |j W Y d }~d S d }~ww | d d S )Nc                   S  s$   t  I d H  dV  t  I d H  d S NrP   r   r   r   r   r   r!      s   z5AsyncGenTest.test_async_gen_iteration_02.<locals>.genr   r   rP   StopIteration was not raisedz!StopAsyncIteration was not raised)		__aiter__r(   rL   rE   r   r   failr&   assertFalser9   r!   rH   ZairJ   r   r   r   r   test_async_gen_iteration_02   s*   
z(AsyncGenTest.test_async_gen_iteration_02c                 C   sB   dd }|  t t|  W d    d S 1 sw   Y  d S )Nc                   S  s.   t  I d H  dV  t ddI d H  dV  d S )NrP   Tr   rQ   rY   r   r   r   r   r!      s
   
z5AsyncGenTest.test_async_gen_exception_03.<locals>.gen)assertRaisesr   r$   rV   r   r   r   test_async_gen_exception_03   s   "z(AsyncGenTest.test_async_gen_exception_03c              
   C   s   dd }| }|  }| }| | d z|  W n ty8 } z| |jd d W Y d }~n
d }~ww | d | t |   W d    d S 1 sUw   Y  d S )Nc                   S  s    t  I d H  dV  dd  d S )NrP      r   rY   r   r   r   r   r!      s   z5AsyncGenTest.test_async_gen_exception_04.<locals>.genr   r   rP   rZ   )	r[   r(   rL   rE   r   r   r\   r`   ZeroDivisionErrorr^   r   r   r   test_async_gen_exception_04   s   
"z(AsyncGenTest.test_async_gen_exception_04c                 C   D   dd }|  td t|  W d    d S 1 sw   Y  d S )Nc                   S     dV  t rX   r%   r   r   r   r   r!         z5AsyncGenTest.test_async_gen_exception_05.<locals>.genz#async generator.*StopAsyncIterationr5   RuntimeErrorr$   rV   r   r   r   test_async_gen_exception_05      "z(AsyncGenTest.test_async_gen_exception_05c                 C   re   )Nc                   S  rf   rX   )r   r   r   r   r   r!     rg   z5AsyncGenTest.test_async_gen_exception_06.<locals>.genzasync generator.*StopIterationrh   rV   r   r   r   test_async_gen_exception_06  rk   z(AsyncGenTest.test_async_gen_exception_06c                 C   $   dd }dd }|  | |  d S )Nc                   s   :    zdV  dd  W dV  dV  ndV  dV  w dV  d S Nrb   r         d   r   r   r   r   r   rM        

z:AsyncGenTest.test_async_gen_exception_07.<locals>.sync_genc                   S  s:   zdV  dd  W dV  dV  ndV  dV  w dV  d S ro   r   r   r   r   r   rN     rs   z;AsyncGenTest.test_async_gen_exception_07.<locals>.async_genrO   r9   rM   rN   r   r   r   test_async_gen_exception_07  s   

z(AsyncGenTest.test_async_gen_exception_07c                 C   rm   )Nc                   s   sB    zdV  W dV  dd  dV  ndV  dd  dV  w dV  d S Nrb   rp   r   rq   rr   r   r   r   r   r   rM   #  s   
z:AsyncGenTest.test_async_gen_exception_08.<locals>.sync_genc                   S  sf   zdV  t  I d H  W t  I d H  dV  dd  dV  nt  I d H  dV  dd  dV  w dV  d S rw   rY   r   r   r   r   rN   -  s   
z;AsyncGenTest.test_async_gen_exception_08.<locals>.async_genrt   ru   r   r   r   test_async_gen_exception_08"     
z(AsyncGenTest.test_async_gen_exception_08c                 C   rm   )Nc                   s   rn   ro   r   r   r   r   r   rM   <  rs   z:AsyncGenTest.test_async_gen_exception_09.<locals>.sync_genc                   S  s^   zt  I d H  dV  dd  W dV  t  I d H  dV  ndV  t  I d H  dV  w dV  d S ro   rY   r   r   r   r   rN   F  s   

z;AsyncGenTest.test_async_gen_exception_09.<locals>.async_genrt   ru   r   r   r   test_async_gen_exception_09;  ry   z(AsyncGenTest.test_async_gen_exception_09c                 C   sJ   dd }|  td |  d W d    d S 1 sw   Y  d S )Nc                   S     dV  d S rX   r   r   r   r   r   r!   U     
z5AsyncGenTest.test_async_gen_exception_10.<locals>.genz!non-None value .* async generatorrr   )r5   r.   r(   r   rV   r   r   r   test_async_gen_exception_10T  s   "z(AsyncGenTest.test_async_gen_exception_10c                    s<   dd fdd}dd   fdd}|  | |  d S )	Nc                   s   s    dV  dV  d S N
      r   r   r   r   r   rM   \     
z:AsyncGenTest.test_async_gen_exception_11.<locals>.sync_genc                  3   sL    dV    } |  d  z| t  W n ty    dV  Y nw dV  d S Nrb   rp   rq   )r   r   GeneratorExit)sg)rM   r   r   sync_gen_wrapper`  s   


zBAsyncGenTest.test_async_gen_exception_11.<locals>.sync_gen_wrapperc                   S     dV  dV  d S r~   r   r   r   r   r   rN   j  r   z;AsyncGenTest.test_async_gen_exception_11.<locals>.async_genc                    sX   dV    } |  d I d H  z| t I d H  W n ty&   dV  Y nw dV  d S r   )asendathrowr   )Zasg)rN   r   r   async_gen_wrappern  s   

zCAsyncGenTest.test_async_gen_exception_11.<locals>.async_gen_wrapperrt   )r9   r   r   r   )rN   rM   r   test_async_gen_exception_11[  s
   

z(AsyncGenTest.test_async_gen_exception_11c                 C   s   dd }| }|  |jd d|_|  |jd | d|j d|_|  |jd | |j | |jtj	 | 
|j | |jtj | t|  d S )Nc                   S  r{   rX   r   r   r   r   r   r!   {  r|   z/AsyncGenTest.test_async_gen_api_01.<locals>.genr!   Z123z.gen)rL   r   assertInr
   ZassertIsNoneag_awaitassertIsInstanceag_frametypes	FrameTyper]   
ag_runningag_codeCodeTypeZ
assertTrueinspectZisawaitableaclose)r9   r!   rH   r   r   r   test_async_gen_api_01z  s   z"AsyncGenTest.test_async_gen_api_01N)r   r	   r
   rO   rW   r_   ra   rd   rj   rl   rv   rx   rz   r}   r   r   r   r   r   r   rC      s    +
		rC   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmS )nAsyncGenAsyncioTestc                 C   s   t  | _t d  d S r   )r   Znew_event_looploopZset_event_looprU   r   r   r   setUp  s   
zAsyncGenAsyncioTest.setUpc                 C   s   | j   d | _ td  d S r   )r   closer   Zset_event_loop_policyrU   r   r   r   tearDown  s   
zAsyncGenAsyncioTest.tearDownc                 C   sv   | j dd | |t W d    n1 sw   Y  | j dd | |t W d    d S 1 s4w   Y  d S )Nzpure-PythonanextZbuiltin)subTest_check_async_iterator_anextr0   r   )r9   	ait_classr   r   r   check_async_iterator_anext  s   "z.AsyncGenAsyncioTest.check_async_iterator_anextc           	         s     fdd}j | }|g d t j |  W d    n1 s0w   Y   fdd}j | }|d  fdd}|   fd	d
}j | }|d d S )Nc                     sH   g } |   I d H  |   I d H  |   dI d H  | S )Nbuckle my shoer   )results)r   rH   r   r   consume  s   z@AsyncGenAsyncioTest._check_async_iterator_anext.<locals>.consume)rb   rp   r   c                     s    }  | I d H d  | I d H d t | I d H  W d    n1 s1w   Y  t | I d H  W d    n1 sMw   Y    } |dI d H d  |dI d H d  |dI d H d  |dI d H d dS )Nrb   rp   r)   	completed)rL   r`   r&   )Zg1Zg2r   r   r9   r   r   test_2  s    z?AsyncGenAsyncioTest._check_async_iterator_anext.<locals>.test_2r   c               	      s     } | d} t- t| }|d  W d    n1 s%w   Y  W d    d S W d    d S 1 s=w   Y  d S Nr   )r`   r   
contextlibclosing	__await__r   )pobjrH   r   r   r   	test_send  s   
"zBAsyncGenAsyncioTest._check_async_iterator_anext.<locals>.test_sendc                     s&     } | d} t|jt dS r   )r`   r6   r   )r   r   r   r   r   
test_throw  s
   
zCAsyncGenAsyncioTest._check_async_iterator_anext.<locals>.test_throw)r   r   rL   r`   r&   )	r9   r   r   r   r   r   r   r   r   r   )r   r   rH   r9   r   r     s   z/AsyncGenAsyncioTest._check_async_iterator_anextc                 C   s   dd }|  | d S )Nc                   S  r   Nrb   rp   r   r   r   r   r   agen  r   z<AsyncGenAsyncioTest.test_async_generator_anext.<locals>.agenr   )r9   r   r   r   r   test_async_generator_anext  s   z.AsyncGenAsyncioTest.test_async_generator_anextc                 C   s   G dd d}|  | d S )Nc                   @   s&   e Zd Z	 dd Zdd Zdd ZdS )zIAsyncGenAsyncioTest.test_python_async_iterator_anext.<locals>.MyAsyncIterc                 S   
   d| _ d S Nr   yieldedrU   r   r   r   __init__     
zRAsyncGenAsyncioTest.test_python_async_iterator_anext.<locals>.MyAsyncIter.__init__c                 S      | S r   r   rU   r   r   r   r[        zSAsyncGenAsyncioTest.test_python_async_iterator_anext.<locals>.MyAsyncIter.__aiter__c                    s&   | j dkr	t |  j d7  _ | j S )Nrp   rb   r   r&   rU   r   r   r   r(     s
   
zSAsyncGenAsyncioTest.test_python_async_iterator_anext.<locals>.MyAsyncIter.__anext__N)r   r	   r
   r   r[   r(   r   r   r   r   MyAsyncIter  s
    r   r   )r9   r   r   r   r    test_python_async_iterator_anext  s   z4AsyncGenAsyncioTest.test_python_async_iterator_anextc                    s(   dd l  G  fddd}| | d S )Nr   c                       s,   e Zd Z	 dd Zdd Z jdd ZdS )zfAsyncGenAsyncioTest.test_python_async_iterator_types_coroutine_anext.<locals>.MyAsyncIterWithTypesCoroc                 S   r   r   r   rU   r   r   r   r     r   zoAsyncGenAsyncioTest.test_python_async_iterator_types_coroutine_anext.<locals>.MyAsyncIterWithTypesCoro.__init__c                 S   r   r   r   rU   r   r   r   r[     r   zpAsyncGenAsyncioTest.test_python_async_iterator_types_coroutine_anext.<locals>.MyAsyncIterWithTypesCoro.__aiter__c                 s   s(    	 | j dkr
t |  j d7  _ | j S )NFz#this is a generator-based coroutinerp   rb   r   rU   r   r   r   r(     s   
zpAsyncGenAsyncioTest.test_python_async_iterator_types_coroutine_anext.<locals>.MyAsyncIterWithTypesCoro.__anext__N)r   r	   r
   r   r[   	coroutiner(   r   r   r   r   MyAsyncIterWithTypesCoro  s    r   )r   r   )r9   r   r   r   r   0test_python_async_iterator_types_coroutine_anext  s   zDAsyncGenAsyncioTest.test_python_async_iterator_types_coroutine_anextc                    s<   dd }|   fdd}| j | }| |ddg d S )Nc                   S  r   r   r   r   r   r   r   r!     r   z5AsyncGenAsyncioTest.test_async_gen_aiter.<locals>.genc                      s   dd t  2 I d H S )Nc                       g | z3 d H W }|q6 S r   r   .0r   r   r   r   
<listcomp>      zMAsyncGenAsyncioTest.test_async_gen_aiter.<locals>.consume.<locals>.<listcomp>aiterr   rH   r   r   r        z9AsyncGenAsyncioTest.test_async_gen_aiter.<locals>.consumerb   rp   r   r   rL   )r9   r!   r   r   r   r   r   test_async_gen_aiter  s
   z(AsyncGenAsyncioTest.test_async_gen_aiterc                    sH   g G dd d}|   fdd}| j |  | ddg d S )Nc                   @      e Zd Zdd ZdS )z;AsyncGenAsyncioTest.test_async_gen_aiter_class.<locals>.Genc                 S  r   r   r   rU   r   r   r   r[   	  r   zEAsyncGenAsyncioTest.test_async_gen_aiter_class.<locals>.Gen.__aiter__Nr   r	   r
   r[   r   r   r   r   Gen      r   c                     s<   t  } 	 zt| I d H  W n
 ty   Y d S w qr   )r   r   r   r&   )ZaitrH   r   r   r   r     s   z?AsyncGenAsyncioTest.test_async_gen_aiter_class.<locals>.consumerb   rp   r   )r9   r   r   r   r   r   test_async_gen_aiter_class  s   z.AsyncGenAsyncioTest.test_async_gen_aiter_classc                 C   s*   dd }t | }t |}| || d S )Nc                   S  r{   Nrb   r   r   r   r   r   r!     r|   z6AsyncGenAsyncioTest.test_aiter_idempotent.<locals>.gen)r   rS   )r9   r!   Zapplied_onceZapplied_twicer   r   r   test_aiter_idempotent  s   
z)AsyncGenAsyncioTest.test_aiter_idempotentc                    s  dd  dd } fdd} fdd} fd	d
}|  t | j|  W d    n1 s1w   Y  |  t | j|  W d    n1 sMw   Y  |  t | j|  W d    n1 siw   Y  |  t | j|  W d    d S 1 sw   Y  d S )Nc                   S  r{   r   r   r   r   r   r   r!     r|   z4AsyncGenAsyncioTest.test_anext_bad_args.<locals>.genc                         t  I d H  d S r   r   r   r   r   r   call_with_too_few_args!     zGAsyncGenAsyncioTest.test_anext_bad_args.<locals>.call_with_too_few_argsc                      s   t   ddI d H  d S Nrb   rq   r   r   r    r   r   call_with_too_many_args#  r   zHAsyncGenAsyncioTest.test_anext_bad_args.<locals>.call_with_too_many_argsc                      s   t d  I d H  d S r   r   r   r    r   r   call_with_wrong_type_args%     zJAsyncGenAsyncioTest.test_anext_bad_args.<locals>.call_with_wrong_type_argsc                      s   t   dI d H  d S )N)Z	aiteratorr   r   r    r   r   call_with_kwarg'  r   z@AsyncGenAsyncioTest.test_anext_bad_args.<locals>.call_with_kwargr`   r.   r   r   )r9   r   r   r   r   r   r    r   test_anext_bad_args  s"   "z'AsyncGenAsyncioTest.test_anext_bad_argsc                    s*    fdd} j | } |d d S )Nc                     s   G dd d G  fddd} d}t |  d}t| |I d H  W d    n1 s/w   Y  t |  }t| |I d H  W d    dS 1 sPw   Y  dS )Nc                   @   r   )zUAsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitable.<locals>.BadAwaitablec                 S   s   dS )N*   r   rU   r   r   r   r   5  r   z_AsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitable.<locals>.BadAwaitable.__await__Nr   r	   r
   r   r   r   r   r   BadAwaitable4  r   r   c                           e Zd Zdd Z fddZdS )zTAsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitable.<locals>.MyAsyncIterc                 S   r   r   r   rU   r   r   r   r[   8  r   z^AsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitable.<locals>.MyAsyncIter.__aiter__c                         S r   r   rU   r   r   r   r(   :     z^AsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitable.<locals>.MyAsyncIter.__anext__Nr   r	   r
   r[   r(   r   r   r   r   r   7      r   z__await__.*iteratorr)   r   )r   r5   r.   )r   Zregexr   rU   r   r   bad_awaitable3  s   

z?AsyncGenAsyncioTest.test_anext_bad_await.<locals>.bad_awaitabler   r   )r9   r   r   r   rU   r   test_anext_bad_await2  s   z(AsyncGenAsyncioTest.test_anext_bad_awaitc                    s   t | d}| t |I d H  W d    n1 sw   Y  t | }| t |I d H  W d    dS 1 s<w   Y  dS Nr)   r   )r   r`   r.   )r9   Zaiter_classr   r   r   r   check_anext_returning_iteratorG  s   

z2AsyncGenAsyncioTest.check_anext_returning_iteratorc                 C   0   G dd d}| j | |}| |d d S )Nc                   @      e Zd Zdd Zdd ZdS )zEAsyncGenAsyncioTest.test_anext_return_iterator.<locals>.WithIterAnextc                 S   r   r   r   rU   r   r   r   r[   R  r   zOAsyncGenAsyncioTest.test_anext_return_iterator.<locals>.WithIterAnext.__aiter__c                 S   s   t dS )Nabc)iterrU   r   r   r   r(   T  s   zOAsyncGenAsyncioTest.test_anext_return_iterator.<locals>.WithIterAnext.__anext__Nr   r   r   r   r   WithIterAnextQ      r   r   r   r   r   rL   )r9   r   r   r   r   r   test_anext_return_iteratorP     z.AsyncGenAsyncioTest.test_anext_return_iteratorc                 C   r   )Nc                   @   r   )zEAsyncGenAsyncioTest.test_anext_return_generator.<locals>.WithGenAnextc                 S   r   r   r   rU   r   r   r   r[   [  r   zOAsyncGenAsyncioTest.test_anext_return_generator.<locals>.WithGenAnext.__aiter__c                 s   s    d V  d S r   r   rU   r   r   r   r(   ]  r|   zOAsyncGenAsyncioTest.test_anext_return_generator.<locals>.WithGenAnext.__anext__Nr   r   r   r   r   WithGenAnextZ  r   r   r   r   )r9   r   r   r   r   r   test_anext_return_generatorY  r   z/AsyncGenAsyncioTest.test_anext_return_generatorc                    sL   G dd d G  fdddfdd}j | }|d d S )Nc                   @   r   )zEAsyncGenAsyncioTest.test_anext_await_raises.<locals>.RaisingAwaitablec                 s   s    t  r   rc   rU   r   r   r   r   d  s   zOAsyncGenAsyncioTest.test_anext_await_raises.<locals>.RaisingAwaitable.__await__Nr   r   r   r   r   RaisingAwaitablec  r   r   c                       r   )zNAsyncGenAsyncioTest.test_anext_await_raises.<locals>.WithRaisingAwaitableAnextc                 S   r   r   r   rU   r   r   r   r[   h  r   zXAsyncGenAsyncioTest.test_anext_await_raises.<locals>.WithRaisingAwaitableAnext.__aiter__c                    r   r   r   rU   r   r   r   r(   j  r   zXAsyncGenAsyncioTest.test_anext_await_raises.<locals>.WithRaisingAwaitableAnext.__anext__Nr   r   r   r   r   WithRaisingAwaitableAnextg  r   r   c                     s   t   } t | I d H  W d    n1 sw   Y  t   d} t | I d H  W d    dS 1 s<w   Y  dS r   )r   r`   rc   rY   )r   r9   r   r   do_testl  s   

z<AsyncGenAsyncioTest.test_anext_await_raises.<locals>.do_testr   r   )r9   r   r   r   )r   r   r9   r   test_anext_await_raisesb  s
   z+AsyncGenAsyncioTest.test_anext_await_raisesc                    s   t jdd G dd dt  fdd fdd} fd	d
}fdd} fdd} fdd} fdd}fdd}|| || || || || || d S )Nc                 s   s    | V S r   r   vr   r   r   _async_yieldx  s   z9AsyncGenAsyncioTest.test_anext_iter.<locals>._async_yieldc                   @   r   )z4AsyncGenAsyncioTest.test_anext_iter.<locals>.MyErrorNr   r   r   r   r   MyError|  r   r  c                     :   z
dI d H  W d S   y   dI d H  Y d S w r   r   r   r  r   r   r   agenfn     z3AsyncGenAsyncioTest.test_anext_iter.<locals>.agenfnc                    s    }t | |d F}|d d |   d d z|d  W n ty> } z|}W Y d }~n
d }~ww d |jd W d    d S 1 sVw   Y  d S )Nr)   rb   rp   rZ   )	r   r   r   rL   r   r   r   r\   value)r   r   rH   eerrr  r  r9   r   r   test1  s   
"z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test1c              	      s    }t | |d C}|d d |   d d   |   d  W d    n1 s;w   Y  W d    d S W d    d S 1 sSw   Y  d S )Nr)   rb   rp   )r   r   r   rL   r   r   r`   r   r   rH   r	  r   r   test2  s   "z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test2c              	      s     }t | |d =}|d d |  td |d d W d    n1 s5w   Y  W d    d S W d    d S 1 sMw   Y  d S )Nr)   rb   zcannot reuse)r   r   r   rL   r   r   r5   ri   r  )r  r9   r   r   test3  s   "z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test3c              	      s   t jdd   fdd}| }t| |d E}|d d | d d d |dd  W d    n1 sKw   Y  W d    d S W d    d S 1 scw   Y  d S )	Nc                 s       | d V  | d d V S Nr   rb   r   r   r   r   r   r        
zHAsyncGenAsyncioTest.test_anext_iter.<locals>.test4.<locals>._async_yieldc                     r  r   r   r   r  r   r   r    r  zBAsyncGenAsyncioTest.test_anext_iter.<locals>.test4.<locals>.agenfnr)   r   r   val)	r   r   r   r   r   rL   r   r   r5   r   r  r   rH   r  r9   r   r   test4  s   
"z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test4c              	      s   t jdd   fdd}| }t| |d 8}|d d td |	 d  W d    n1 s>w   Y  W d    d S W d    d S 1 sVw   Y  d S )Nc                 s   r  r  r   r   r   r   r   r     r  zHAsyncGenAsyncioTest.test_anext_iter.<locals>.test5.<locals>._async_yieldc                     s4   z	dI d H  W n
  y   Y d S w dV  d S Nrb   Zaaar   r   r  r   r   r    s   
zBAsyncGenAsyncioTest.test_anext_iter.<locals>.test5.<locals>.agenfnr)   r   )
r   r   r   r   r   rL   r   r5   r   r   r  r  r  r   test5  s   
"z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test5c              	      s   t jdd   fdd}| }t| |d .} | d  W d    n1 s3w   Y  W d    d S W d    d S 1 sKw   Y  d S )Nc                 s   r  r  r   r   r   r   r   r     r  zHAsyncGenAsyncioTest.test_anext_iter.<locals>.test6.<locals>._async_yieldc                     s    dI d H  dV  d S r  r   r   r  r   r   r    s   
zBAsyncGenAsyncioTest.test_anext_iter.<locals>.test6.<locals>.agenfnr)   )r   r   r   r   r   r`   r   r  r  r  r   test6  s   
"z2AsyncGenAsyncioTest.test_anext_iter.<locals>.test6c                    sj     d | t W d    n1 sw   Y    d | t W d    d S 1 s.w   Y  d S )Nzpure-Python anext()zbuiltin anext())r   r0   r   )testrU   r   r   run_test  s   

"z5AsyncGenAsyncioTest.test_anext_iter.<locals>.run_test)r   r   rF   )r9   r
  r  r  r  r  r  r  r   )r  r   r  r9   r   test_anext_iterw  s"   
z#AsyncGenAsyncioTest.test_anext_iterc                    s   dd  dd } fdd}dd }|  t | j|  W d    n1 s)w   Y  |  t | j|  W d    n1 sEw   Y  |  t | j|  W d    d S 1 sbw   Y  d S )	Nc                   S  r{   r   r   r   r   r   r   r!     r|   z4AsyncGenAsyncioTest.test_aiter_bad_args.<locals>.genc                      r   r   r   r   r   r   r   r     r   zGAsyncGenAsyncioTest.test_aiter_bad_args.<locals>.call_with_too_few_argsc                      s   t   dI d H  d S r   r   r   r    r   r   r     r   zHAsyncGenAsyncioTest.test_aiter_bad_args.<locals>.call_with_too_many_argsc                      s   t dI d H  d S r   r   r   r   r   r   call_with_wrong_type_arg  s   zIAsyncGenAsyncioTest.test_aiter_bad_args.<locals>.call_with_wrong_type_argr   )r9   r   r   r  r   r    r   test_aiter_bad_args  s   "z'AsyncGenAsyncioTest.test_aiter_bad_argsc                    s(   g }|2 z3 d H W }| | q6 |S r   r   )r9   r!   r   r   r   r   r   r$     r#   zAsyncGenAsyncioTest.to_listc                 C   s0   dd }| j | | }| |ddg d S )Nc                   S  s2   dV  t dI d H  dV  t dI d H  d S Nrb   {Gz?rp   r   sleepr   r   r   r   r!     s   z:AsyncGenAsyncioTest.test_async_gen_asyncio_01.<locals>.genrb   rp   r   r   r$   rL   )r9   r!   r   r   r   r   test_async_gen_asyncio_01  s   z-AsyncGenAsyncioTest.test_async_gen_asyncio_01c                 C   sL   dd }|  t | j| |  W d    d S 1 sw   Y  d S )Nc                   S  s0   dV  t dI d H  dV  dd  dV  d S )Nrb   r  rp   r   rq   r   r   r   r   r   r!     s   
z:AsyncGenAsyncioTest.test_async_gen_asyncio_02.<locals>.gen)r`   rc   r   r   r$   rV   r   r   r   test_async_gen_asyncio_02
  s   "z-AsyncGenAsyncioTest.test_async_gen_asyncio_02c                 C   s:   | j }G dd d}|| | }| |ddg d S )Nc                   @   r   )z:AsyncGenAsyncioTest.test_async_gen_asyncio_03.<locals>.Genc                 S  s"   dV  t dI d H  dV  d S r  r   rU   r   r   r   r[     s   
zDAsyncGenAsyncioTest.test_async_gen_asyncio_03.<locals>.Gen.__aiter__Nr   r   r   r   r   r     r   r   rb   rp   r"  )r9   r   r   r   r   r   r   test_async_gen_asyncio_03  s   z-AsyncGenAsyncioTest.test_async_gen_asyncio_03c                    sD   dd   fdd} fdd}j |  j |  d S )Nc                   S  s\   dV  t dI d H  zdV  dV  W n ty    dV  Y nw t dI d H  dV  d S )Nrb   r  rp   rq        )r   r!  rc   r   r   r   r   foo"  s   


z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_04.<locals>.fooc                     s       } |  I d H d |  I d H d |  I d H d |  I d H d t |  I d H  W d    n1 sIw   Y  t |  I d H  W d    d S 1 sfw   Y  d S )Nrb   rp   rq   r'  )r[   rL   r(   r`   r&   itr(  r9   r   r   run1-  s   
"zAAsyncGenAsyncioTest.test_async_gen_asyncio_anext_04.<locals>.run1c               
      s       } |  I d H d |  I d H d z	|  t W n ty@ } z|jd d W Y d }~n
d }~ww d |  I d H d t	 |  I d H  W d    d S 1 siw   Y  d S )Nrb   rp   r   r&  rZ   r'  )
r[   rL   r(   r   rc   r   r   r\   r`   r&   r*  r   r+  r   r   run29  s   

"zAAsyncGenAsyncioTest.test_async_gen_asyncio_anext_04.<locals>.run2r   r   )r9   r,  r.  r   r+  r   test_async_gen_asyncio_anext_04!  s
   z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_04c                    (   dd   fdd}j |  d S )Nc                  S  s   dV } | V } | d V  d S Nrb   rr   r   r   r   r   r   r(  L  s   z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05.<locals>.fooc               
      sF      } z	|  d  W n ty* } z|jd d W Y d }~n
d }~ww d z	|  d W n tyT } z|jd d W Y d }~n
d }~ww d z	|  d W n ty~ } z|jd d W Y d }~n
d }~ww d t |  I d H  W d    d S 1 sw   Y  d S )Nr   rb   rZ   r      i  )	r[   r(   r   r   rL   r   r\   r`   r&   r-  r+  r   r   runQ  s4   



"z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05.<locals>.runr/  r9   r4  r   r+  r   test_async_gen_asyncio_anext_05K  s   z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05c                    s   d dd }| }| d  t | d  W d    n1 s#w   Y   fdd fdd}j|   d d S )	Nr   c                   s       zd V  W d S    Y d S r   r   r   r   r   r   r(  r  
   z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.fooc                     $   zd V  W d d S    Y d d S r   r   r   DONEr   r   r!   ~     z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.genc                     s^    } |  d I d H  t |  d I d H  W d    n1 s$w   Y   d7  d S Nr   )r   r`   r&   r   r;  r!   r9   r   r   r4       z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.run   )r   r`   r   r   r   rL   r9   r(  rH   r4  r   r>  r   test_async_gen_asyncio_anext_06n     
z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06c                    r1  )Nc                   S  *   zdV  W d S  t y   dV  Y d S w )Nrb   rp   r   r   r   r   r   r(       zCAsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuple.<locals>.fooc                     s       } |  I d H d t}|  t W d    n1 s(w   Y  |jjd d t	 |  I d H  W d    d S 1 sOw   Y  d S )NrE  r   rF  )
r[   rL   r(   r`   r   r   rc   	exceptionr   r&   )r*  cmr+  r   r   r4    s   
"zCAsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuple.<locals>.runr/  r5  r   r+  r   "test_async_gen_asyncio_anext_tuple     
z6AsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuplec                    r1  )Nc                   S  s2   zt dV  W d S  ty   t dV  Y d S w r   )r   rc   r   r   r   r   r(    s   zKAsyncGenAsyncioTest.test_async_gen_asyncio_anext_stopiteration.<locals>.fooc                     s       } |  I d H }|t |jd t}|  t W d    n1 s1w   Y  |j	j
d }|t |jd t |  I d H  W d    d S 1 saw   Y  d S )Nrb   r   rq   )r[   r(   r   r   rL   r  r`   r   rc   rH  r   r&   )r*  r   rI  r+  r   r   r4    s   
"zKAsyncGenAsyncioTest.test_async_gen_asyncio_anext_stopiteration.<locals>.runr/  r5  r   r+  r   *test_async_gen_asyncio_anext_stopiteration  s   z>AsyncGenAsyncioTest.test_async_gen_asyncio_anext_stopiterationc                    sT   dd   fdd}|  td | j|  W d    d S 1 s#w   Y  d S )Nc                	   S  sF   zdV  dd  W t dI d H  dV  d S t dI d H  dV  w )Nrb   r   r  r3  r   r   r   r   r   r(    s   

zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06.<locals>.fooc                     0     } |   }| I d H  |  I d H  d S r   r[   r(   r   r!   r*  r(  r   r   r4    
   zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06.<locals>.runz%async generator ignored GeneratorExit)r5   ri   r   r   r5  r   rP  r    test_async_gen_asyncio_aclose_06  s   "z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06c                    :   d  fddfdd}| j |  |  d d S )Nr   c                	     st   zdV  dd  W t dI d H  t dI d H   d7  nt dI d H  t dI d H   d7  w  d7  d S )Nrb   r   r  r&  r   r   r:  r   r   r(    s   


zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_07.<locals>.fooc                     rM  r   rN  rO  rP  r   r   r4    rQ  zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_07.<locals>.runrb   r   r5  r   )r;  r(  r    test_async_gen_asyncio_aclose_07  s
   z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_07c                    sf   d t jjd fddfdd}j|   d   jt d d S )	Nr   r   c                	     s   z%dV  I d H   d7  dV  W t dI d H  t dI d H   d7  nt dI d H  t dI d H   d7  w  d7  d S )Nrb   r&  rp   r  r   r   )r;  r   r   r   r(    s   


zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08.<locals>.fooc                     s8     } |   }| I d H d |  I d H  d S r   )r[   rL   r(   r   rO  r+  r   r   r4    s
   zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08.<locals>.runrb   r  )r   Futurer   r   rL   cancelr!  r5  r   )r;  r(  r   r9   r    test_async_gen_asyncio_aclose_08  s   z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08c                    rS  )Nr   c                	     s4   z	 dV  qt dI d H  t dI d H  d w )NTrb   r  r   r   r:  r   r   r!     s   zDAsyncGenAsyncioTest.test_async_gen_asyncio_gc_aclose_09.<locals>.genc                     s@     } |   I d H  |   I d H  ~ t  tdI d H  d S )N皙?)r(   r   r   r!  r   r    r   r   r4    s   zDAsyncGenAsyncioTest.test_async_gen_asyncio_gc_aclose_09.<locals>.runrb   r   r5  r   r;  r!   r   #test_async_gen_asyncio_gc_aclose_09  s
   
	z7AsyncGenAsyncioTest.test_async_gen_asyncio_gc_aclose_09c                    s\   d dd }| }| d  |   fdd fdd}| j|  |  d d S )	Nr   c                   s   r7  r   r   r   r   r   r   r(  "  r8  zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.fooc                     r9  r   r   r   r:  r   r   r!   -  r<  zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.genc                     s2    } |  d I d H  |  I d H   d7  d S r=  )r   r   r   rZ  r   r   r4  5  s
   zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.runr@  )r   r   r   r   rL   rA  r   rZ  r    test_async_gen_asyncio_aclose_10  s   
z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10c                    s   d dd }| }| d  td |  W d    n1 s#w   Y   fdd fdd}j|   d	 d S )
Nr   c                   s   s     zd V  W n   Y d V  d S r   r   r   r   r   r   r(  C  s   

zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.fooignored GeneratorExitc                     s(   zd V  W n   Y d V   d7  d S r   r   r   r:  r   r   r!   P  s   
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.genc                     s^    } |  d I d H  td |  I d H  W d    n1 s$w   Y   d7  d S )Nr]  r   )r   r5   ri   r   r   r>  r   r   r4  Y  s   zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.runr   )r   r5   ri   r   r   r   rL   rA  r   r>  r    test_async_gen_asyncio_aclose_11?  s   

	z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11c                    sD   d dd  fddfdd}| j |  |  d d S )	Nr   c                      s   t dI d H  dd  d S )Nr  rb   r   r   r   r   r   r   targetg     zDAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.targetc                    sh   t  } zdV  W z| I d H  W d S  ty    d Y d S w z| I d H  W w  ty3   d Y w w r   )r   create_taskrc   )task)r;  r_  r   r   r(  k  s   
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.fooc                     rM  r   rN  rO  rP  r   r   r4  v  rQ  zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.runrb   r   r5  r   )r;  r(  r_  r    test_async_gen_asyncio_aclose_12d  s   z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12c                    sv   d dd }| }| d }|d | d}|d  fddfd	d
}j|   d d S )Nr   c                  s   s    dV } | d V  d S r   r   r   r   r   r   sgen  s   zAAsyncGenAsyncioTest.test_async_gen_asyncio_asend_01.<locals>.sgenrb   rr      c               	     s   z5t dI d H  dV } t dI d H  | d V  t dI d H  W t dI d H  t dI d H  d d S t dI d H  t dI d H  d w Nr  rb   rp   r   r   r:  r   r   r!     s   
z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_01.<locals>.genc                     s     } |  d I d H }|d |  dI d H }|d t |  d I d H  W d    d S 1 s9w   Y  d S )Nrb   rr   re  )r   rL   r`   r&   rH   r   r!   r9   r   r   r4       "z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_01.<locals>.run)r   rL   r   r   r9   rd  r   r   r4  r   r>  r   test_async_gen_asyncio_asend_01  s   

z3AsyncGenAsyncioTest.test_async_gen_asyncio_asend_01c                    sp   d dd  fddfdd} t j|  W d    n1 s+w   Y   d d S )	Nr   c                    s   t | I d H  dd  d S Nrb   r   r   delayr   r   r   sleep_n_crash  r`  zJAsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.sleep_n_crashc               	        z0t dI d H  dV } dI d H   d7  | d V  W t dI d H  t dI d H  d d S t dI d H  t dI d H  d w Nr  rb   r&  rp   r   r   r;  ro  r   r   r!        z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.genc                     8     } |  d I d H }|d |  dI d H  d S r2  r   rL   rg  rh  r   r   r4    
   z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.runrb   )r`   rc   r   r   rL   r5  r   r;  r!   r9   ro  r   test_async_gen_asyncio_asend_02  s   z3AsyncGenAsyncioTest.test_async_gen_asyncio_asend_02c                    sv   d fdd fddfdd} tj j|  W d    n1 s.w   Y   d d S )	Nr   c                    <   t jt | jd j| d  fdd  I d H S )NrU  rp   c                            S r   rW  r   r   r   r   <lambda>      z\AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.sleep_n_crash.<locals>.<lambda>r   Zensure_futurer!  r   Z
call_laterrm  rU   r|  r   ro       
zJAsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.sleep_n_crashc               	     rp  rq  r   r   rr  r   r   r!     rs  z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.genc                     rt  r2  ru  rg  rh  r   r   r4    rv  z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.runrb   )r`   r   CancelledErrorr   r   rL   r5  r   rw  r   test_async_gen_asyncio_asend_03  s   z3AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03c                    s   d G dd dt fdd}| }|d }|d |}|d t |d  W d    n1 s>w   Y   fdd	fd
d}j|   d d S )Nr   c                   @   r   )zCAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.FooErNr   r   r   r   r   FooEr  r   r  c                  3   s2    zdV } W n  y   d} Y nw | d V  d S )Nrb   r&  rp   r   r   )r  r   r   rd    s   
zBAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.sgenrb     c               	     s   zCt dI d H  zdV } W n y"   d} t dI d H  Y nw | d V  t dI d H  W t dI d H  t dI d H  d d S t dI d H  t dI d H  d w rq  r   r   )r;  r  r   r   r!      s"   

zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.genc                     s    } |  d I d H }|d |  I d H }|d t |  d I d H  W d    d S 1 s9w   Y  d S )Nrb   r  )r   rL   r   r`   r&   rg  )r  r!   r9   r   r   r4    ri  zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.run)rF   r   rL   r   r`   r   r   r   rj  r   r;  r  r!   r9   r    test_async_gen_asyncio_athrow_01  s   

z4AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01c                    s   d G dd dt fdd fdd fdd	}tj j|  W d    n1 s9w   Y   d
 d S )Nr   c                   @   r   )zCAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.FooErNr   r   r   r   r   r  #  r   r  c                    ry  )NrU  rp   c                      rz  r   r{  r   r|  r   r   r}  )  r~  z]AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.sleep_n_crash.<locals>.<lambda>r  rm  rU   r|  r   ro  &  r  zKAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.sleep_n_crashc               	     s   z@t dI d H  zdV } W n y   dI d H  Y nw | d V  t dI d H  W t dI d H  t dI d H  d d S t dI d H  t dI d H  d w rf  r   r   )r;  r  ro  r   r   r!   ,  s    

zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.genc                     sf    } |  d I d H }|d z
| I d H  W n tjy+    d  w d d S )Nrb   zCancelledError was not raised)r   rL   r   r   r  r\   rg  r  r   r   r4  <  s   zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.runrb   )rF   r`   r   r  r   r   rL   r5  r   )r;  r  r!   r9   ro  r    test_async_gen_asyncio_athrow_02   s   z4AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02c                    s   d dd }| }| d  t |t W d    n1 s#w   Y   fdd fdd}j|   d d S )	Nr   c                   s   r7  r   r   r   r   r   r   r(  R  r8  zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.fooc                     r9  r   r   r   r:  r   r   r!   ^  r<  zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.genc                     s^    } |  d I d H  t | tI d H  W d    n1 s$w   Y   d7  d S r=  )r   r`   r&   r   
ValueErrorr   r>  r   r   r4  f  r?  zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.runr@  )r   r`   r   r   r  r   r   rL   rA  r   r>  r    test_async_gen_asyncio_athrow_03N  rC  z4AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03c                    r1  )Nc                   S  rD  Nrb   rF  r   r   r   r   r   r!   r  rG  zDAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_tuple.<locals>.genc                     s     } |  d I d H }|d | tI d H }|d t |  d I d H  W d    d S 1 s9w   Y  d S r  )r   rL   r   rc   r`   r&   rg  rh  r   r   r4  x  s   "zDAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_tuple.<locals>.runr/  r5  r   rh  r   #test_async_gen_asyncio_athrow_tupleq  s   	z7AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_tuplec                    r1  )Nc                   S  s.   zdV  W d S  t y   tdV  Y d S w r   )rc   r   r   r   r   r   r!     s   zLAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_stopiteration.<locals>.genc                     s     } |  d I d H }|d | tI d H }|t |jd t |  d I d H  W d    d S 1 s@w   Y  d S r   )	r   rL   r   rc   r   r   r  r`   r&   rg  rh  r   r   r4    s   "zLAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_stopiteration.<locals>.runr/  r5  r   rh  r   +test_async_gen_asyncio_athrow_stopiteration  rK  z?AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_stopiterationc                    s   d  fddfdd}| j | }| j | }| j td |  |  | tj | j | W d    n1 sDw   Y  | tj | j | W d    n1 s`w   Y  | j | j   | 	 d d S )Nr   c              	     sR   zt | I d H  dV  W t dI d H   d7  d S t dI d H   d7  w rl  r   )timeout)	finalizedr   r   waiter  s   
zFAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_01.<locals>.waiterc                     s    d2 z3 d H W } q6 d S r   r   )_)r  r   r   wait  s   zDAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_01.<locals>.waitrY  rp   )
r   ra  r   r   r!  rW  r`   r  Zshutdown_asyncgensrL   )r9   r  t1t2r   )r  r  r   "test_async_gen_asyncio_shutdown_01  s    	z6AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_01c                    sH   g fdd dd }|  fdd}t |  | g  d S )Nc                         | d S r   r   r   contextmessagesr   r   exception_handler     zQAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.exception_handlerc                   S  r   r   r   r   r   r   r   rK     r   zMAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.async_iteratec                     0   t  } |   2 z3 d H W } d S 6 d S r   r   get_running_loopset_exception_handlerr   r   r  r*  r   r   main     
zDAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.mainr   r4  rL   )r9   rK   r  r   r  r*  r  r   "test_async_gen_asyncio_shutdown_02  s   z6AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02c                    sr   g fdd dd }|  fdd}t |  \}| |d  | |d t | d	|d
  d S )Nc                    r  r   r   r  r  r   r   r    r  z[AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.exception_handlerc                   S  (   zdV  dV  W dd  d S dd  w Nrb   rp   r   r   r   r   r   r   rK     
   zWAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.async_iteratec                     r  r   r  r  r  r   r   r    r  zNAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.mainZasyncgenrH  z:an error occurred during closing of asynchronous generatormessage)r   r4  rL   r   rc   r   )r9   rK   r  r  r   r  r   ,test_async_gen_asyncio_shutdown_exception_01  s   z@AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01c                    s\   g fdddd   fdd}t |  \}| |d t | d|d	  d S )
Nc                    r  r   r   r  r  r   r   r    r  z[AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.exception_handlerc                   S  r  r  r   r   r   r   r   rK     r  zWAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.async_iteratec                     s6   t  } |    2 z3 d H W } n6 t  d S r   )r   r  r  r   r  rK   r  r   r   r    s   

zNAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.mainrH  z1unhandled exception during asyncio.run() shutdownr  )r   r4  r   rc   r   )r9   r  r  r   rK   r  r  r   ,test_async_gen_asyncio_shutdown_exception_02  s   z@AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02c                    sL   dd   fddfdd}| j | }| |dd td	D  d S )
Nc                 S  s*   t | D ]}tdI d H  |V  qd S Nr  )ranger   r!  )nr   r   r   r   arange  s
   z@AsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.arangec                    s   dd  | 2 S )Nc                 S  s"   | z3 d H W }|d V  q6 d S Nrp   r   r   r   r   r   	<genexpr>  s     zXAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.make_arange.<locals>.<genexpr>r   r  )r  r   r   make_arange  s   zEAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.make_arangec                         dd  d2 I d H S )Nc                    r   r   r   r   r   r   r   r     r   zQAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.run.<locals>.<listcomp>r   r   r   r  r   r   r4    r   z=AsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.runc                 S      g | ]}|d  qS rF  r   r   r   r   r   r         zDAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.<listcomp>r   r   r   rL   r  r9   r4  r   r   )r  r  r   test_async_gen_expression_01  s
   z0AsyncGenAsyncioTest.test_async_gen_expression_01c                    sN   dd fdd  fdd}| j | }| |dd td	d
D  d S )Nc                    s   t dI d H  | S r  r   r  r   r   r   wrap  s   z>AsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.wrapc                    s    fddt | D S )Nc                   s&   | ]} |I d H r|d V  qd S r  r   r   r  r   r   r    s   $ zXAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.make_arange.<locals>.<genexpr>)r  r  r  r   r   r    s   zEAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.make_arangec                      r  )Nc                    r   r   r   r   r   r   r   r   !  r   zQAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.run.<locals>.<listcomp>r   r   r   r  r   r   r4     r   z=AsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.runc                 S   r  rF  r   r   r   r   r   r   $  r  zDAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.<listcomp>rb   r   r  r  r   )r  r  r   test_async_gen_expression_02  s
    z0AsyncGenAsyncioTest.test_async_gen_expression_02c                    sB   g fdddd   fdd}t |  | g  d S )Nc                    r  r   r   r  r  r   r   r  *  r  z]AsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.exception_handlerc                   S  r   r   r   r   r   r   r   rK   -  r   zYAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.async_iteratec                     s2   t  } |    2 z3 d H W } d S 6 d S r   r  r  r  r   r   r  1  s   
zPAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.mainr  )r9   r  r   r  r   .test_asyncgen_nonstarted_hooks_are_cancellable&  s   zBAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellablec                    r1  )Nc                   S  r   r   r   r   r   r   r   rK   =  r   zUAsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twice.<locals>.async_iteratec                     sb     } |   }|I d H  td |I d H  W d    n1 s#w   Y  |  I d H  d S )Nz4cannot reuse already awaited __anext__\(\)/asend\(\))r(   r5   ri   r   r*  ZnxtrK   r9   r   r   r4  A  s   
zKAsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twice.<locals>.runr/  r5  r   r  r   *test_async_gen_await_same_anext_coro_twice<  s   z>AsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twicec                    r1  )Nc                   S  r   r   r   r   r   r   r   rK   P  r   zVAsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twice.<locals>.async_iteratec                     sV     } |   }|I d H  td |I d H  W d    d S 1 s$w   Y  d S )Nz2cannot reuse already awaited aclose\(\)/athrow\(\))r   r5   ri   r  r  r   r   r4  T  s   
"zLAsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twice.<locals>.runr/  r5  r   r  r   +test_async_gen_await_same_aclose_coro_twiceO  s   
z?AsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twicec                    &   dd   fdd}| j |  d S )Nc                   S  r   r   r   r   r   r   r   rK   b  r   z[AsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_coros.<locals>.async_iteratec                     s(     } |   I d H  |   I d H  d S r   r   r)  rK   r   r   r4  f  s   zQAsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_coros.<locals>.runr/  r5  r   r  r   0test_async_gen_aclose_twice_with_different_coros`  s   zDAsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_corosc                    r  )Nc                   S  r   r   r   r   r   r   r   rK   o  r   zQAsyncGenAsyncioTest.test_async_gen_aclose_after_exhaustion.<locals>.async_iteratec                     s.     } | 2 z3 d H W }q6 |   I d H  d S r   r  )r*  r  r  r   r   r4  s  s   zGAsyncGenAsyncioTest.test_async_gen_aclose_after_exhaustion.<locals>.runr/  r5  r   r  r   &test_async_gen_aclose_after_exhaustionm  s   z:AsyncGenAsyncioTest.test_async_gen_aclose_after_exhaustionc                    r  )Nc                   S  s   t  V  d S r   )objectr   r   r   r   async_generator|  s   z\AsyncGenAsyncioTest.test_async_gen_aclose_compatible_with_get_stack.<locals>.async_generatorc                     s4     } t |   t  }|D ]}|  qd S r   )r   ra  r   Z	all_tasksZ	get_stack)ZagZtasksrb  r  r   r   r4    s   
zPAsyncGenAsyncioTest.test_async_gen_aclose_compatible_with_get_stack.<locals>.runr/  r5  r   r  r   /test_async_gen_aclose_compatible_with_get_stack{  s   zCAsyncGenAsyncioTest.test_async_gen_aclose_compatible_with_get_stackN)9r   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  r6  rB  rJ  rL  rR  rT  rX  r[  r\  r^  rc  rk  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r     sn    3
			q*##!%* "5.#"r   __main__)r   r   Zunittestr   Ztest.support.import_helperr   Ztest.supportr   r   r  r/   rF   r   r   r   r   r$   r0   ZTestCaser1   rC   r   r   r  r   r   r   r   <module>   s@    
1            