a
    zeO                     @   s   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G dd deZej	ddd	d
Z
dd Z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re  dS )    N)import_module)
gc_collectasyncioc                   @   s   e Zd ZdS )AwaitExceptionN__name__
__module____qualname__ r
   r
   (/usr/lib/python3.9/test/test_asyncgen.pyr   
   s   r   Fthrowc                 c   s   | rdV  ndV  d S )Nr   resultr
   r   r
   r
   r   	awaitable   s    r   c              
   C   sh   d}z"|rd}|  t}n
| d }W n. tyT } z|jd W  Y d }~S d }~0 0 |dkrd}qd S )NFr   r   T)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'   s    zto_list.<locals>.iterate)r   )r   r    r
   r   r   to_list&   s    r!   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   s@   d}|  td t|i i  W d    n1 s20    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_012   s    z+AsyncGenSyntaxTest.test_async_gen_syntax_01c                 C   s@   d}|  td t|i i  W d    n1 s20    Y  d S )Nz4async def foo():
            yield from 123
        r#   r$   r(   r
   r
   r   test_async_gen_syntax_02;   s    z+AsyncGenSyntaxTest.test_async_gen_syntax_02c                 C   s@   d}|  td t|i i  W d    n1 s20    Y  d S )NzXasync def foo():
            await abc
            yield
            return 123
        return.*value.*async genr$   r(   r
   r
   r   test_async_gen_syntax_03C   s    z+AsyncGenSyntaxTest.test_async_gen_syntax_03c                 C   s@   d}|  td t|i i  W d    n1 s20    Y  d S )NzBasync def foo():
            yield
            return 123
        r-   r$   r(   r
   r
   r   test_async_gen_syntax_04M   s    z+AsyncGenSyntaxTest.test_async_gen_syntax_04c                 C   s@   d}|  td t|i i  W d    n1 s20    Y  d S )NzWasync def foo():
            if 0:
                yield
            return 12
        r-   r$   r(   r
   r
   r   test_async_gen_syntax_05V   s    z+AsyncGenSyntaxTest.test_async_gen_syntax_05N)r   r   r	   r+   r,   r.   r/   r0   r
   r
   r
   r   r"   0   s
   	
	r"   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   sr   g }z| |   W q ty6   | d Y qnY q tyj } z| tt| W Y d }~qd }~0 0 q|S )NSTOP)r   __next__r   	Exceptionstrtype)gr   r   r
   r
   r   sync_iterated   s    
*z5AsyncGenTest.compare_generators.<locals>.sync_iteratec              
   S   s   g }|   }zz|  W q tyx } zF|jrN||jd  W Y d }~qn|d W Y d }~qW Y d }~qd }~0  ty    Y q ty } z*|tt| W Y d }~qW Y d }~qd }~0 0 qW q ty   |d Y qY q0 q|S )Nr   zEMPTY StopIterationr2   )		__anext__r3   r   r   r   StopAsyncIterationr4   r5   r6   )r7   r   anr   r
   r
   r   async_iteratep   s(    
 (
z6AsyncGenTest.compare_generators.<locals>.async_iterate)assertEqual)r)   sync_gen	async_genr8   r<   Zsync_gen_resultZasync_gen_resultr
   r
   r   compare_generatorsc   s    zAsyncGenTest.compare_generatorsc                    s&    fdd}  t| g d d S )Nc                    sF   t  I d H  dV }  | d  t  I d H  dV  t  I d H  dV  d S )N{       )r   ZassertIs)ar)   r
   r   r      s    z5AsyncGenTest.test_async_gen_iteration_01.<locals>.gen)rA   rB   rC   )r=   r!   r)   r   r
   rE   r   test_async_gen_iteration_01   s    	z(AsyncGenTest.test_async_gen_iteration_01c              
   C   s   dd }| }|  }| }| | d z|  W n6 typ } z| |jd d W Y d }~nd }~0 0 | d | }| | d z|  W n0 ty } z| |j W Y d }~nd }~0 0 | d d S )Nc                   S  s"   t  I d H  dV  t  I d H  d S NrA   r   r
   r
   r
   r   r      s    z5AsyncGenTest.test_async_gen_iteration_02.<locals>.genr   r   rA   StopIteration was not raisedz!StopAsyncIteration was not raised)		__aiter__r9   r=   r3   r   r   failr:   assertFalser)   r   r7   Zair;   r   r
   r
   r   test_async_gen_iteration_02   s"    (
"z(AsyncGenTest.test_async_gen_iteration_02c                 C   s@   dd }|  t t|  W d    n1 s20    Y  d S )Nc                   S  s,   t  I d H  dV  t ddI d H  dV  d S )NrA   Tr   rB   rI   r
   r
   r
   r   r      s    z5AsyncGenTest.test_async_gen_exception_03.<locals>.gen)assertRaisesr   r!   rF   r
   r
   r   test_async_gen_exception_03   s    z(AsyncGenTest.test_async_gen_exception_03c              
   C   s   dd }| }|  }| }| | d z|  W n6 typ } z| |jd d W Y d }~nd }~0 0 | d | t |   W d    n1 s0    Y  d S )Nc                   S  s   t  I d H  dV  dd  d S )NrA      r   rI   r
   r
   r
   r   r      s    z5AsyncGenTest.test_async_gen_exception_04.<locals>.genr   r   rA   rJ   )	rK   r9   r=   r3   r   r   rL   rP   ZeroDivisionErrorrN   r
   r
   r   test_async_gen_exception_04   s    (
z(AsyncGenTest.test_async_gen_exception_04c                 C   sB   dd }|  td t|  W d    n1 s40    Y  d S )Nc                   S  s   dV  t d S rH   )r:   r
   r
   r
   r   r      s    z5AsyncGenTest.test_async_gen_exception_05.<locals>.genz#async generator.*StopAsyncIterationr%   RuntimeErrorr!   rF   r
   r
   r   test_async_gen_exception_05   s
    z(AsyncGenTest.test_async_gen_exception_05c                 C   sB   dd }|  td t|  W d    n1 s40    Y  d S )Nc                   S  s   dV  t d S rH   )r   r
   r
   r
   r   r      s    z5AsyncGenTest.test_async_gen_exception_06.<locals>.genzasync generator.*StopIterationrU   rF   r
   r
   r   test_async_gen_exception_06   s
    z(AsyncGenTest.test_async_gen_exception_06c                 C   s$   dd }dd }|  | |  d S )Nc                   s   s8   zdV  dd  W dV  dV  ndV  dV  0 dV  d S NrR   r         d   r
   r
   r
   r
   r   r>      s    
z:AsyncGenTest.test_async_gen_exception_07.<locals>.sync_genc                   S  s8   zdV  dd  W dV  dV  ndV  dV  0 dV  d S rY   r
   r
   r
   r
   r   r?      s    
z;AsyncGenTest.test_async_gen_exception_07.<locals>.async_genr@   r)   r>   r?   r
   r
   r   test_async_gen_exception_07   s    

z(AsyncGenTest.test_async_gen_exception_07c                 C   s$   dd }dd }|  | |  d S )Nc                   s   s@   zdV  W dV  dd  dV  ndV  dd  dV  0 dV  d S NrR   rZ   r   r[   r\   r
   r
   r
   r
   r   r>      s    z:AsyncGenTest.test_async_gen_exception_08.<locals>.sync_genc                   S  sd   z6d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  0 dV  d S r`   rI   r
   r
   r
   r   r?   
  s    z;AsyncGenTest.test_async_gen_exception_08.<locals>.async_genr]   r^   r
   r
   r   test_async_gen_exception_08   s    
z(AsyncGenTest.test_async_gen_exception_08c                 C   s$   dd }dd }|  | |  d S )Nc                   s   s8   zdV  dd  W dV  dV  ndV  dV  0 dV  d S rY   r
   r
   r
   r
   r   r>     s    
z:AsyncGenTest.test_async_gen_exception_09.<locals>.sync_genc                   S  s\   z6t  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  0 dV  d S rY   rI   r
   r
   r
   r   r?   #  s    
z;AsyncGenTest.test_async_gen_exception_09.<locals>.async_genr]   r^   r
   r
   r   test_async_gen_exception_09  s    
z(AsyncGenTest.test_async_gen_exception_09c                 C   sH   dd }|  td  |  d W d    n1 s:0    Y  d S )Nc                   S  s
   dV  d S rH   r
   r
   r
   r
   r   r   2  s    z5AsyncGenTest.test_async_gen_exception_10.<locals>.genz!non-None value .* async generatorr\   )r%   	TypeErrorr9   r   rF   r
   r
   r   test_async_gen_exception_101  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   r>   9  s    z:AsyncGenTest.test_async_gen_exception_11.<locals>.sync_genc                  3   sJ   dV    } |  d  z| t  W n ty>   dV  Y n0 dV  d S NrR   rZ   r[   )r   r   GeneratorExit)sg)r>   r
   r   sync_gen_wrapper=  s    
zBAsyncGenTest.test_async_gen_exception_11.<locals>.sync_gen_wrapperc                   S  s   dV  dV  d S re   r
   r
   r
   r
   r   r?   G  s    z;AsyncGenTest.test_async_gen_exception_11.<locals>.async_genc                    sV   dV    } |  d I d H  z| t I d H  W n tyJ   dV  Y n0 dV  d S rh   )asendathrowri   )Zasg)r?   r
   r   async_gen_wrapperK  s    zCAsyncGenTest.test_async_gen_exception_11.<locals>.async_gen_wrapperr]   )r)   rk   rn   r
   )r?   r>   r   test_async_gen_exception_118  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  s
   dV  d S rH   r
   r
   r
   r
   r   r   X  s    z/AsyncGenTest.test_async_gen_api_01.<locals>.genr   Z123z.gen)r=   r   assertInr	   ZassertIsNoneag_awaitassertIsInstanceag_frametypes	FrameTyperM   
ag_runningag_codeCodeTypeZ
assertTrueinspectZisawaitableaclose)r)   r   r7   r
   r
   r   test_async_gen_api_01W  s    z"AsyncGenTest.test_async_gen_api_01N)r   r   r	   r@   rG   rO   rQ   rT   rW   rX   r_   ra   rb   rd   ro   r{   r
   r
   r
   r   r1   a   s   +
		r1   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(dMS )NAsyncGenAsyncioTestc                 C   s   t  | _t d  d S r   )r   Znew_event_looploopZset_event_looprE   r
   r
   r   setUpo  s    
zAsyncGenAsyncioTest.setUpc                 C   s   | j   d | _ td  d S r   )r}   closer   Zset_event_loop_policyrE   r
   r
   r   tearDowns  s    
zAsyncGenAsyncioTest.tearDownc                    s&   g }|2 z3 d H W }| | q6 |S r   r   )r)   r   r   r   r
   r
   r   r!   x  s    zAsyncGenAsyncioTest.to_listc                 C   s0   dd }| j | | }| |ddg d S )Nc                   S  s0   dV  t dI d H  dV  t dI d H  d S )NrR   {Gz?rZ   r[   r   sleepr
   r
   r
   r   r     s    z:AsyncGenAsyncioTest.test_async_gen_asyncio_01.<locals>.genrR   rZ   r}   r   r!   r=   )r)   r   r   r
   r
   r   test_async_gen_asyncio_01~  s    z-AsyncGenAsyncioTest.test_async_gen_asyncio_01c                 C   sJ   dd }|  t$ | j| |  W d    n1 s<0    Y  d S )Nc                   S  s.   dV  t dI d H  dV  dd  dV  d S )NrR   r   rZ   r   r[   r   r
   r
   r
   r   r     s
    z:AsyncGenAsyncioTest.test_async_gen_asyncio_02.<locals>.gen)rP   rS   r}   r   r!   rF   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                   @   s   e Zd Zdd ZdS )z:AsyncGenAsyncioTest.test_async_gen_asyncio_03.<locals>.Genc                 S  s    dV  t dI d H  dV  d S )NrR   r   rZ   r   rE   r
   r
   r   rK     s    zDAsyncGenAsyncioTest.test_async_gen_asyncio_03.<locals>.Gen.__aiter__N)r   r   r	   rK   r
   r
   r
   r   Gen  s   r   rR   rZ   r   )r)   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  sZ   dV  t dI d H  zdV  dV  W n ty>   dV  Y n0 t dI d H  dV  d S )NrR   r   rZ   r[        )r   r   rS   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 s0    Y  t |  I d H  W d    n1 s0    Y  d S )NrR   rZ   r[   r   )rK   r=   r9   rP   r:   itr   r)   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 n6 ty~ } z|jd d W Y d }~nd }~0 0 d |  I d H d t	 |  I d H  W d    n1 s0    Y  d S )NrR   rZ   r   r   rJ   r   )
rK   r=   r9   r   rS   r   r   rL   rP   r:   r   r   r   r
   r   run2  s    
(
zAAsyncGenAsyncioTest.test_async_gen_asyncio_anext_04.<locals>.run2r}   r   )r)   r   r   r
   r   r   test_async_gen_asyncio_anext_04  s
    z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_04c                    s(   dd   fdd}j |  d S )Nc                  S  s   dV } | V } | d V  d S NrR   r\   r
   vr
   r
   r   r     s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05.<locals>.fooc               
      sD      } z|  d  W n6 tyR } z|jd d W Y d }~nd }~0 0 d z|  d W n6 ty } z|jd d W Y d }~nd }~0 0 d z|  d W n6 ty } z|jd d W Y d }~nd }~0 0 d t |  I d H  W d    n1 s60    Y  d S )Nr   rR   rJ   rf      i  )	rK   r9   r   r   r=   r   rL   rP   r:   r   r   r
   r   run  s$    
(
(
(
z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05.<locals>.runr   r)   r   r
   r   r   test_async_gen_asyncio_anext_05  s    z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_05c                    s   d dd }| }| d  t | d  W d    n1 sF0    Y   fdd fdd}j|   d d S )	Nr   c                   s   s   z
d V  W n   Y n0 d S r   r
   r
   r
   r
   r   r     s    
z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.fooc                     s    z
d V  W n   Y n0 d d S NrR   r
   r
   DONEr
   r   r     s
    
z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.genc                     s\    } |  d I d H  t  |  d I d H  W d    n1 sF0    Y   d7  d S Nrf   )rl   rP   r:   r7   r   r   r)   r
   r   r     s
    .z@AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06.<locals>.run   )r   rP   r   r}   r   r=   r)   r   r7   r   r
   r   r   test_async_gen_asyncio_anext_06  s    
(z3AsyncGenAsyncioTest.test_async_gen_asyncio_anext_06c                    s(   dd   fdd}j |  d S )Nc                   S  s(   z
dV  W n t y"   dV  Y n0 d S )NrR   rZ   rS   r
   r
   r
   r   r     s    
zCAsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuple.<locals>.fooc                     s       } |  I d H d t}|  t W d    n1 sN0    Y  |jjd d t	 |  I d H  W d    n1 s0    Y  d S )Nr   r   r   )
rK   r=   r9   rP   r   r   rS   	exceptionr   r:   )r   cmr   r
   r   r     s    
,zCAsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuple.<locals>.runr   r   r
   r   r   "test_async_gen_asyncio_anext_tuple  s    
z6AsyncGenAsyncioTest.test_async_gen_asyncio_anext_tuplec                    s(   dd   fdd}j |  d S )Nc                   S  s0   zt dV  W n ty*   t dV  Y n0 d S )NrR   r[   )r   rS   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 s`0    Y  |j	j
d }|t |jd t |  I d H  W d    n1 s0    Y  d S )NrR   r   r[   )rK   r9   rr   r   r=   valuerP   r   rS   r   r   r:   )r   r   r   r   r
   r   r   +  s    
,zKAsyncGenAsyncioTest.test_async_gen_asyncio_anext_stopiteration.<locals>.runr   r   r
   r   r   *test_async_gen_asyncio_anext_stopiteration$  s    z>AsyncGenAsyncioTest.test_async_gen_asyncio_anext_stopiterationc                    sR   dd   fdd}|  td | j|  W d    n1 sD0    Y  d S )Nc                	   S  sF   z(dV  dd  W t dI d H  dV  nt dI d H  dV  0 d S )NrR   r   r   r   r   r
   r
   r
   r   r   <  s    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06.<locals>.fooc                     s.     } |   }| I d H  |  I d H  d S r   rK   r9   rz   r   r   r   r
   r   r   D  s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06.<locals>.runz%async generator ignored GeneratorExit)r%   rV   r}   r   r   r
   r   r    test_async_gen_asyncio_aclose_06;  s    z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_06c                    s:   d  fddfdd}| j |  |  d d S )Nr   c                	     sr   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  0  d7  d S )NrR   r   r   r   r   r
   r   r
   r   r   R  s    


zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_07.<locals>.fooc                     s.     } |   }| I d H  |  I d H  d S r   r   r   r   r
   r   r   ]  s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_07.<locals>.runrR   r}   r   r=   r   r
   )r   r   r    test_async_gen_asyncio_aclose_07O  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   zJd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  0  d7  d S )NrR   r   rZ   r   r   r
   )r   r   r
   r   r   k  s    


zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08.<locals>.fooc                     s6     } |   }| I d H d |  I d H  d S r   )rK   r=   r9   rz   r   r   r
   r   r   x  s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08.<locals>.runrR   r   )r   Futurer}   r   r=   cancelr   r   r
   )r   r   r   r)   r    test_async_gen_asyncio_aclose_08f  s    z4AsyncGenAsyncioTest.test_async_gen_asyncio_aclose_08c                    s:   d  fddfdd}| j |  |  d d S )Nr   c                	     s\   z0dV  qW t dI d H  t dI d H  d n&t dI d H  t dI d H  d 0 d S )NrR   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皙?)r9   r   r   r   r   r   r
   r   r     s    zDAsyncGenAsyncioTest.test_async_gen_asyncio_gc_aclose_09.<locals>.runrR   r   r   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   s   z
d V  W n   Y n0 d S r   r
   r
   r
   r
   r   r     s    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.fooc                     s    z
d V  W n   Y n0 d d S r   r
   r
   r   r
   r   r     s
    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.genc                     s0    } |  d I d H  |  I d H   d7  d S r   )rl   rz   r   r   r
   r   r     s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_10.<locals>.runr   )r   r   r}   r   r=   r   r
   r   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 sF0    Y   fdd fdd}j|   d	 d S )
Nr   c                   s   s"   z
d V  W n   Y n0 d V  d S r   r
   r
   r
   r
   r   r     s
    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.fooignored GeneratorExitc                     s*   z
d V  W n   Y n0 d V   d7  d S r   r
   r
   r   r
   r   r     s    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.genc                     s\    } |  d I d H  td |  I d H  W d    n1 sF0    Y   d7  d S )Nr   rf   )rl   r%   rV   rz   r   r   r
   r   r     s
    ,zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_11.<locals>.runrf   )r   r%   rV   r   r}   r   r=   r   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   rR   r   r   r
   r
   r
   r   target  s    zDAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.targetc                    sj   t  } z0dV  W z| I d H  W qf ty:   d Y qf0 n(z| I d H  W n tyb   d Y n0 0 d S r   )r   create_taskrS   )task)r   r   r
   r   r     s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.fooc                     s.     } |   }| I d H  |  I d H  d S r   r   r   r   r
   r   r     s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_aclose_12.<locals>.runrR   r   r   r
   )r   r   r   r    test_async_gen_asyncio_aclose_12  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 NrR   rZ   r
   r   r
   r
   r   sgen  s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_asend_01.<locals>.sgenrR   r\      c               	     s   zjt 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 0 d S Nr   rR   rZ   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    n1 sn0    Y  d S )NrR   r\   r   )rl   r=   rP   r:   r7   r   r   r)   r
   r   r     s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_01.<locals>.run)r   r=   r}   r   r)   r   rj   r   r   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 sV0    Y   d d S )	Nr   c                    s   t | I d H  dd  d S NrR   r   r   delayr
   r
   r   sleep_n_crash,  s    zJAsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.sleep_n_crashc               	     s   z^t 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 n&t dI d H  t dI d H  d 0 d S Nr   rR   r   rZ   r   r   r   r   r
   r   r   0  s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.genc                     s6     } |  d I d H }|d |  dI d H  d S r   rl   r=   r   r   r
   r   r   =  s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_02.<locals>.runrR   )rP   rS   r}   r   r=   r   r
   r   r   r)   r   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\0    Y   d d S )	Nr   c                    s:   t jt | jd j| d  fdd  I d H S )Nr   rZ   c                      s      S r   r   r
   r   r
   r   <lambda>O      z\AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.sleep_n_crash.<locals>.<lambda>r   Zensure_futurer   r}   Z
call_laterr   rE   r   r   r   L  s
    zJAsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.sleep_n_crashc               	     s   z^t 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 n&t dI d H  t dI d H  d 0 d S r   r   r   r   r
   r   r   R  s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.genc                     s6     } |  d I d H }|d |  dI d H  d S r   r   r   r   r
   r   r   _  s    z@AsyncGenAsyncioTest.test_async_gen_asyncio_asend_03.<locals>.runrR   )rP   r   CancelledErrorr}   r   r=   r   r
   r   r   test_async_gen_asyncio_asend_03I  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|0    Y   fdd	fd
d}j|   d d S )Nr   c                   @   s   e Zd ZdS )zCAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.FooErNr   r
   r
   r
   r   FooErn  s   r   c                  3   s0   z
dV } W n  y    d} Y n0 | d V  d S )NrR   r   rZ   r
   r   )r   r
   r   r   r  s
    

zBAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.sgenrR     c               	     s   zt dI d H  z
dV } W n& yB   d} t dI d H  Y n0 | d V  t dI d H  W t dI d H  t dI d H  d n&t dI d H  t dI d H  d 0 d S r   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    n1 sn0    Y  d S )NrR   r   )rl   r=   rm   rP   r:   r   )r   r   r)   r
   r   r     s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_01.<locals>.run)r4   r   r=   r   rP   r   r}   r   r   r
   r   r   r   r)   r    test_async_gen_asyncio_athrow_01k  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 sr0    Y   d
 d S )Nr   c                   @   s   e Zd ZdS )zCAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.FooErNr   r
   r
   r
   r   r     s   r   c                    s:   t jt | jd j| d  fdd  I d H S )Nr   rZ   c                      s      S r   r   r
   r   r
   r   r     r   z]AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.sleep_n_crash.<locals>.<lambda>r   r   rE   r   r   r     s
    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0 | d V  t dI d H  W t dI d H  t dI d H  d n&t dI d H  t dI d H  d 0 d S r   r   r   )r   r   r   r
   r   r     s    

zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.genc                     sh    } |  d I d H }|d z| I d H  W n" tjyX    d  Y n0 d d S )NrR   zCancelledError was not raised)rl   r=   rm   r   r   rL   r   r   r
   r   r     s    zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_02.<locals>.runrR   )r4   rP   r   r   r}   r   r=   r   r
   )r   r   r   r)   r   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 sF0    Y   fdd fdd}j|   d d S )	Nr   c                   s   s   z
d V  W n   Y n0 d S r   r
   r
   r
   r
   r   r     s    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.fooc                     s    z
d V  W n   Y n0 d d S r   r
   r
   r   r
   r   r     s
    
zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.genc                     s\    } |  d I d H  t  | tI d H  W d    n1 sF0    Y   d7  d S r   )rl   rP   r:   rm   
ValueErrorr   r   r
   r   r     s
    .zAAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03.<locals>.runr   )r   rP   r   r   r   r}   r   r=   r   r
   r   r    test_async_gen_asyncio_athrow_03  s    
(z4AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_03c                    s(   dd   fdd}j |  d S )Nc                   S  s(   z
dV  W n t y"   dV  Y n0 d S NrR   r   r   r
   r
   r
   r   r     s    
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    n1 sn0    Y  d S r   )rl   r=   rm   rS   rP   r:   r   r   r
   r   r     s    zDAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_tuple.<locals>.runr   r   r
   r   r   #test_async_gen_asyncio_athrow_tuple  s    	z7AsyncGenAsyncioTest.test_async_gen_asyncio_athrow_tuplec                    s(   dd   fdd}j |  d S )Nc                   S  s,   z
dV  W n t y&   tdV  Y n0 d S r   )rS   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    n1 s|0    Y  d S r   )	rl   r=   rm   rS   rr   r   r   rP   r:   r   r   r
   r   r   
  s    zLAsyncGenAsyncioTest.test_async_gen_asyncio_athrow_stopiteration.<locals>.runr   r   r
   r   r   +test_async_gen_asyncio_athrow_stopiteration  s    
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 s0    Y  | tj | j | W d    n1 s0    Y  | j | j   | 	 d d S )Nr   c              	     sR   z2t | I d H  dV  W t dI d H   d7  nt dI d H   d7  0 d S r   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>.waitr   rZ   )
r}   r   r   r   r   r   rP   r   Zshutdown_asyncgensr=   )r)   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                    s     | d S r   r   r}   contextmessagesr
   r   exception_handler;  s    zQAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.exception_handlerc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<   >  s    zMAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.async_iteratec                     s.   t  } |   2 z3 d H W } q*q6 d S r   r   Zget_running_loopZset_exception_handlerr}   r   r   r   r
   r   mainC  s    
zDAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_02.<locals>.mainr   r   r=   )r)   r<   r   r
   r   r   r   r   "test_async_gen_asyncio_shutdown_028  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                    s     | d S r   r   r   r   r
   r   r   Q  s    z[AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.exception_handlerc                   S  s(   zdV  dV  W dd  n
dd  0 d S NrR   rZ   r   r
   r
   r
   r
   r   r<   T  s    zWAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.async_iteratec                     s.   t  } |   2 z3 d H W } q*q6 d S r   r   r   r   r
   r   r   \  s    
zNAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_01.<locals>.mainZasyncgenr   z:an error occurred during closing of asynchronous generatormessage)r   r   r=   rr   rS   rp   )r)   r<   r   r   r
   r   r   ,test_async_gen_asyncio_shutdown_exception_01N  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                    s     | d S r   r   r   r   r
   r   r   n  s    z[AsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.exception_handlerc                   S  s(   zdV  dV  W dd  n
dd  0 d S r   r
   r
   r
   r
   r   r<   q  s    zWAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.async_iteratec                     s0   t  } |    2 z3 d H W } q,q6 d S r   r   r   r<   r   r
   r   r   x  s    
zNAsyncGenAsyncioTest.test_async_gen_asyncio_shutdown_exception_02.<locals>.mainr   z1unhandled exception during asyncio.run() shutdownr   )r   r   rr   rS   rp   )r)   r   r   r
   r<   r   r   r   ,test_async_gen_asyncio_shutdown_exception_02k  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 NrZ   r
   .0r   r
   r
   r   	<genexpr>  r   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                      s   dd  d2 I d H S )Nc                    s   g | z3 d H W }|q6 S r   r
   r  r
   r
   r   
<listcomp>  r   zQAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.run.<locals>.<listcomp>rf   r
   r
   r  r
   r   r     s    z=AsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.runc                 S   s   g | ]}|d  qS r   r
   r  r
   r
   r   r    r   zDAsyncGenAsyncioTest.test_async_gen_expression_01.<locals>.<listcomp>rf   r}   r   r=   r   r)   r   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    r   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                      s   dd  d2 I d H S )Nc                    s   g | z3 d H W }|q6 S r   r
   r  r
   r
   r   r    r   zQAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.run.<locals>.<listcomp>rf   r
   r
   r  r
   r   r     s    z=AsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.runc                 S   s   g | ]}|d  qS r   r
   r  r
   r
   r   r    r   zDAsyncGenAsyncioTest.test_async_gen_expression_02.<locals>.<listcomp>rR   rf   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                    s     | d S r   r   r   r   r
   r   r     s    z]AsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.exception_handlerc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<     s    zYAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.async_iteratec                     s0   t  } |    2 z3 d H W } q,q6 d S r   r   r   r   r
   r   r     s    
zPAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellable.<locals>.mainr   )r)   r   r
   r   r   .test_asyncgen_nonstarted_hooks_are_cancellable  s    zBAsyncGenAsyncioTest.test_asyncgen_nonstarted_hooks_are_cancellablec                    s(   dd   fdd}j |  d S )Nc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<     s    zUAsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twice.<locals>.async_iteratec                     s`     } |   }|I d H  td |I d H  W d    n1 sD0    Y  |  I d H  d S )Nz4cannot reuse already awaited __anext__\(\)/asend\(\))r9   r%   rV   rz   r   Znxtr<   r)   r
   r   r     s    
(zKAsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twice.<locals>.runr   r   r
   r  r   *test_async_gen_await_same_anext_coro_twice  s    z>AsyncGenAsyncioTest.test_async_gen_await_same_anext_coro_twicec                    s(   dd   fdd}j |  d S )Nc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<     s    zVAsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twice.<locals>.async_iteratec                     sR     } |   }|I d H  td |I d H  W d    n1 sD0    Y  d S )Nz2cannot reuse already awaited aclose\(\)/athrow\(\))rz   r%   rV   r  r  r
   r   r     s    
zLAsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twice.<locals>.runr   r   r
   r  r   +test_async_gen_await_same_aclose_coro_twice  s    
z?AsyncGenAsyncioTest.test_async_gen_await_same_aclose_coro_twicec                    s&   dd   fdd}| j |  d S )Nc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<     s    z[AsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_coros.<locals>.async_iteratec                     s&     } |   I d H  |   I d H  d S r   rz   r   r<   r
   r   r     s    zQAsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_coros.<locals>.runr   r   r
   r  r   0test_async_gen_aclose_twice_with_different_coros  s    zDAsyncGenAsyncioTest.test_async_gen_aclose_twice_with_different_corosc                    s&   dd   fdd}| j |  d S )Nc                   S  s   dV  dV  d S r   r
   r
   r
   r
   r   r<     s    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   r     s    zGAsyncGenAsyncioTest.test_async_gen_aclose_after_exhaustion.<locals>.runr   r   r
   r  r   &test_async_gen_aclose_after_exhaustion  s    z:AsyncGenAsyncioTest.test_async_gen_aclose_after_exhaustionc                    s&   dd   fdd}| j |  d S )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                     s2     } t |   t  }|D ]}|  q d S r   )r   r   rz   Z	all_tasksZ	get_stack)ZagZtasksr   r  r
   r   r     s
    zPAsyncGenAsyncioTest.test_async_gen_aclose_compatible_with_get_stack.<locals>.runr   r   r
   r  r   /test_async_gen_aclose_compatible_with_get_stack  s    zCAsyncGenAsyncioTest.test_async_gen_aclose_compatible_with_get_stackN))r   r   r	   r~   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r  r  r  r
   r
   r
   r   r|   m  sL   *##!%* "5.#"r|   __main__)ry   rt   ZunittestZtest.supportr   r   r   r4   r   	coroutiner   r   r!   ZTestCaser"   r1   r|   r   r   r
   r
   r
   r   <module>   s0   
1         #