a
    QIh<Q                     @  s  d dl mZ d dlZd dlmZ d dlZd dlmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZ dd	lmZ dd
lT ddlmZ ddlmZ erd dlmZ d dlmZmZ ddddZdddddZddddZ dddddZ!dddddZ"dddd Z#ddd!d"Z$ddd#d$Z%ddd%d&Z&ddd'd(Z'ddd)d*Z(ddd+d,Z)ddd-d.Z*ddd/d0Z+ddd1d2Z,ddd3d4Z-ddd5d6Z.ddd7d8Z/ddd9d:Z0dS );    )annotationsN)TYPE_CHECKING)RaisesGroup   )_coresleepsocket)can_bind_ipv6)StapledStreamaclose_forcefully)SocketListener)*)_assert_raises)_UnboundedByteQueue)Nursery)ReceiveStream
SendStreamNonereturnc               	     s   g  dd fdd} dd fdd}t  4 I d H 4}||  || || W d   I d H  q1 I d H sx0    Y  g  dd fdd}t  4 I d H *}|| |j  W d   I d H  q1 I d H s0    Y   d	gksJ d S )
Nr   r   c                    s*   t dD ]} t I d H  q d d S )N
   zbusy bee exhausted)ranger   
checkpointappend)_record R/var/www/html/venv_bot_3.9/lib/python3.9/site-packages/trio/_tests/test_testing.pybusy_bee   s    z-test_wait_all_tasks_blocked.<locals>.busy_beec                     s   t  I d H   d d S )Nzquiet at last!wait_all_tasks_blockedr   r   r   r   r   waiting_for_bee_to_leave    s    z=test_wait_all_tasks_blocked.<locals>.waiting_for_bee_to_leavec                     s4   zt  I d H  W n tjy.    d Y n0 d S )Nok)r!   r   	Cancelledr   r   r   r   r   cancelled_while_waiting,   s    z<test_wait_all_tasks_blocked.<locals>.cancelled_while_waitingr#   )r   open_nursery
start_sooncancel_scopecancel)r   r"   nurseryr%   r   r   r   test_wait_all_tasks_blocked   s    

4
4r+   	MockClock)
mock_clockr   c              	     s   g  dd fdd}t  4 I d H `}|| t I d H   dgksLJ | d t I d H   ddgksrJ W d   I d H  q1 I d H s0    Y  d S )Nr   r   c                     s&     d tdI d H    d d S )Ntt start   tt finishedr   r   r   r   r   r   timeout_task;   s    
z?test_wait_all_tasks_blocked_with_timeouts.<locals>.timeout_taskr.   r   r0   )r   r&   r'   r!   Zjump)r-   r2   r*   r   r   r   )test_wait_all_tasks_blocked_with_timeouts8   s    

r3   c               	     s   g  dd fdd} dd fdd}dd fdd}dd fd	d
}t  4 I d H H}||  || || || || W d   I d H  q1 I d H s0    Y   g dksJ d S )Nr   r   c                     sB     d tdI d H  tdI d H  tdI d H    d d S )Nblink startg{Gz?	blink endr1   r   r   r   r   blinkL   s
    
z7test_wait_all_tasks_blocked_with_cushion.<locals>.blinkc                     s   t  I d H   d d S )Nwait_no_cushion endr    r   r   r   r   wait_no_cushionS   s    zAtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_no_cushionc                     s   t dI d H   d d S )Ng{Gz?wait_small_cushion endr    r   r   r   r   wait_small_cushionW   s    zDtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_small_cushionc                     s   t dI d H   d d S )NgQ?wait_big_cushion endr    r   r   r   r   wait_big_cushion[   s    zBtest_wait_all_tasks_blocked_with_cushion.<locals>.wait_big_cushion)r4   r7   r5   r9   r9   r;   )r   r&   r'   )r6   r8   r:   r<   r*   r   r   r   (test_wait_all_tasks_blocked_with_cushionI   s    



4r=   zpytest.WarningsRecorder)recwarnr   c              
     sB  t   t I d H  W d    n1 s*0    Y  tt6 t   W d    n1 s\0    Y  W d    n1 sz0    Y  tjtjfD ]h}t| ttB t   | I d H  W d    n1 s0    Y  W d    q1 s0    Y  qt  , t I d H  t I d H  W d    n1 s40    Y  d S N)	assert_checkpointsr   r   pytestraisesAssertionErrorcheckpoint_if_cancelledcancel_shielded_checkpointprintr>   Zpartial_yieldr   r   r   test_assert_checkpointss   s    ,<JrH   c              
     sn  t   W d    n1 s0    Y  ttD t   t I d H  W d    n1 s\0    Y  W d    n1 sz0    Y  tjtjfD ]h}t| ttB t   | I d H  W d    n1 s0    Y  W d    q1 s0    Y  qttT t  , t I d H  t I d H  W d    n1 s@0    Y  W d    n1 s`0    Y  d S r?   )	Zassert_no_checkpointsrA   rB   rC   r   r   rD   rE   rF   rG   r   r   r   test_assert_no_checkpoints   s     JJrI   c               
     s  g  ddd fdddddfdd	} dddfd
d}t  }t 4 I d H }|| | ||| |d4 I d H " t I d H  W d   I d H  q1 I d H s0    Y   g dksJ W d   I d H  q1 I d H s0    Y  t  }|d4 I d H  W d   I d H  q81 I d H s.0    Y  ttP |d4 I d H  W d   I d H  q1 I d H sz0    Y  W d    n1 s0    Y  d S )Nobjectr   )valr   c                   s   t |   |  d S r?   )rF   r   )rK   r   r   r   t   s    ztest_Sequencer.<locals>.t	Sequencer)seqr   c              	     s   | d4 I d H   d W d   I d H  qD1 I d H s:0    Y  | d4 I d H   d W d   I d H  q1 I d H s~0    Y  | d4 I d H   d W d   I d H  q1 I d H s0    Y  d S )N   f1rO      rQ   rR      rQ   rT   r   rN   rL   r   r   rQ      s    22ztest_Sequencer.<locals>.f1c              	     s   | d4 I d H   d W d   I d H  qD1 I d H s:0    Y  | d4 I d H   d W d   I d H  q1 I d H s~0    Y  d S )Nr   f2r   r   rY   r   r   rV   rW   r   r   rY      s    2ztest_Sequencer.<locals>.f2r/   )rX   rP   rZ   rS   rU   r   )rM   r   r&   r'   r!   rA   rB   RuntimeError)rQ   rY   rN   r*   r   )r   rL   r   test_Sequencer   s"    6:.r\   c               
     s0  g  t  ddd fdd} t 4 I d H j}|| d || d d4 I d H  W d   I d H  q1 I d H s|0    Y  W d   I d H  q1 I d H s0    Y   d	d
gksJ ttP d4 I d H  W d   I d H  q1 I d H s0    Y  W d    n1 s"0    Y  d S )Nintr   )ir   c              
     s   t  }| dkr|  z@| 4 I d H  W d   I d H  qX1 I d H sN0    Y  W n$ ty~    d|  d Y n0 W d    n1 s0    Y  d S )NrO   zseq(z) RuntimeError)r   ZCancelScoper)   r[   r   )r^   scoper   rN   r   r   child   s    
.z$test_Sequencer_cancel.<locals>.childrO   r   r   zseq(1) RuntimeErrorzseq(2) RuntimeErrorrR   )rM   r   r&   r'   rA   rB   r[   )ra   r*   r   r`   r   test_Sequencer_cancel   s    
Trb   c                	   C  s   t t8 tt W d    n1 s*0    Y  W d    n1 sH0    Y  t t@ tt dd  W d    n1 s0    Y  W d    n1 s0    Y  tt tW d    n1 s0    Y  d S )NZfoorO   )rA   rB   rC   r   r[   	TypeErrorr   r   r   r   test__assert_raises   s    
<
D
rd   c               
     s  t    d  d  ddks,J  ddks>J  d   dksXJ ttj  d W d    n1 s0    Y  ttj    W d    n1 s0    Y  tt  d W d    n1 s0    Y   d	 t *  	dI d H d	ks"J W d    n1 s80    Y   d
  d t *  	dI d H dksxJ W d    n1 s0    Y  t (  	 I d H dksJ W d    n1 s0    Y  ddd fdd} ddd fdd}t
 4 I d H 0}||d || d W d   I d H  qX1 I d H sN0    Y  ttjh t
 4 I d H 0}||d ||d W d   I d H  q1 I d H s0    Y  W d    n1 s0    Y     ttj  d W d    n1 s0    Y   ddks0J   dksBJ  	dI d H dks\J  	 I d H dkstJ    t  ddfdd}t
 4 I d H .}||d || W d   I d H  q1 I d H s0    Y  d S )N   123   456rO      1r   s   23456   789string   abc   defs   ghi   ds   efghibytesr   datar   c                   s   t  I d H   |  d S r?   )r!   putro   ubqr   r   putter  s    z'test__UnboundeByteQueue.<locals>.putter)expectr   c                   s@   t  &   I d H | ksJ W d    n1 s20    Y  d S r?   )r@   get)ru   rr   r   r   getter  s    z'test__UnboundeByteQueue.<locals>.getter   xyzs   asdf   ---    r   c                     s   t  I d H     d S r?   )r!   closer   )ubq2r   r   closer=  s    z'test__UnboundeByteQueue.<locals>.closer)r   rp   
get_nowaitrA   rB   r   
WouldBlockrc   r@   rv   r&   r'   r   BusyResourceErrorr{   ClosedResourceError)rt   rw   r*   r}   r   )rs   r|   r   test__UnboundeByteQueue   sX    


(&(
:

:8:Z*r   c               	     sD  t  dddfdd  dI d H  ddks:J  d	ksJJ t   I d H  W d    n1 st0    Y  ttj   W d    n1 s0    Y  ttj d
 W d    n1 s0    Y   dI d H  t (  I d H dksJ W d    n1 s,0    Y  ddd fdd} t	 4 I d H ,}|
|  |
|  W d   I d H  q1 I d H s0    Y  dksJ t   I d H  W d    n1 s0    Y   I d H dksJ  I d H dksJ ttj  dI d H  W d    n1 sH0    Y  jd u sbJ jd u srJ jd u sJ g ddfdd}ddfdd}ddfdd}t |||j|u sJ j|u sJ j|u sJ dI d H   I d H  tI d H    g dks@J d S )Nrm   r   rn   c                   s:   t     | I d H  W d    n1 s,0    Y  d S r?   )r@   send_allrq   )mssr   r   do_send_allI  s    z*test_MemorySendStream.<locals>.do_send_allre   rO   rg   s   23r   rf   r   r   c                     s4   z dI d H  W n t jy.   d7 Y n0 d S )N   xxxrO   )r   r   r   )r   resource_busy_countr   r   do_send_all_count_resourcebusyc  s    z=test_MemorySendStream.<locals>.do_send_all_count_resourcebusyr   rz   ry   c                     s      dksJ d d S )Nrj   send_all_hook)get_data_nowaitr   r   )mss2r   r   r   r     s    z,test_MemorySendStream.<locals>.send_all_hookc                     s     d d S )N"wait_send_all_might_not_block_hookr   r   r   r   r   r     s    zAtest_MemorySendStream.<locals>.wait_send_all_might_not_block_hookc                     s     d d S )N
close_hookr   r   r   r   r   r     s    z)test_MemorySendStream.<locals>.close_hookrj   )r   r   r   r   )MemorySendStreamr   r@   Zwait_send_all_might_not_blockrA   rB   r   r   get_datar&   r'   acloser   r   r   r   r   r   r{   )r   r*   r   r   r   r   )r   r   r   r   r   r   test_MemorySendStreamF  s\    ,&(8
8..r   c               
     s  t   ddd fdd}  d | dI d H dks:J | d	I d H d
ksPJ  d | d I d H dkspJ ttjd t 4 I d H .}|| d	 || d	 W d   I d H  q1 I d H s0    Y  W d    n1 s0    Y   jd u sJ  d       | d	I d H dks.J | d	I d H dksFJ | d	I d H dks^J t	
tj  d W d    n1 s0    Y  ddfdd}g ddfdd}t ||j|u sJ j|u sJ d d	I d H dksJ d	I d H dks&J d	I d H dks@J d d _d	I d H dksjJ d t   I d H  W d    n1 s0    Y  dgksJ t	
tj  d	I d H  W d    n1 s0    Y  d S )Nz
int | Nonerm   )	max_bytesr   c                   s:   t     | I d H W  d    S 1 s,0    Y  d S r?   )r@   receive_somer   )mrsr   r   do_receive_some  s    z1test_MemoryReceiveStream.<locals>.do_receive_somerj   rO      ar   s   bcrk   rz   ry   r   r   c                     s     d d S )Nr   )put_datar   )mrs2r   r   receive_some_hook  s    z3test_MemoryReceiveStream.<locals>.receive_some_hookc                     s     d d S )Nclosedr   r   r   r   r   r     s    z,test_MemoryReceiveStream.<locals>.close_hooks   yyys   yyyxxxr   s   zzzs   lost on closer   )MemoryReceiveStreamr   r   r   r   r&   r'   r   Zput_eofrA   rB   r   r   r   r@   r   )r   r*   r   r   r   )r   r   r   r   test_MemoryReceiveStream  sN    

T
*



.r   c                    s   t  } |   ttj( | dI d H dks4J W d    n1 sH0    Y  |   ttj | d W d    n1 s0    Y  t  }|d |  ttj  |dI d H  W d    n1 s0    Y  d S )Nr   rz   re   rx   )r   r{   rA   rB   r   r   r   r   )r   r   r   r   r   test_MemoryRecvStream_closing  s    6(
r   c                    s   t  } t }t| | | dI d H  t| | |dI d H dksHJ | dI d H  t| |ddsjJ |dI d H dksJ t| |ddsJ t| |ddsJ t| |ddrJ |dI d H dksJ |   t| | |dI d H dksJ d S )	Nre   r   rf   rO   r      4s   56rz   )r   r   Zmemory_stream_pumpr   r   r{   )r   r   r   r   r   test_memory_stream_pump  s     


r   c               	     s  t  \}  | jd usJ | jd u s&J | jd us4J  jd u sBJ | dI d H   dI d H dksjJ ddd fdd}t 4 I d H >}|	|d t
 I d H  | dI d H  W d   I d H  q1 I d H s0    Y  t 4 I d H >}|	|d	 t
 I d H  |  I d H  W d   I d H  qH1 I d H s>0    Y  t  \}  t 4 I d H 8}|	|d	 t
 I d H  |   W d   I d H  q1 I d H s0    Y  t  \}  | j}d | _| d
I d H  ddddd}dd fdd}t 4 I d H .}|	|| |	| W d   I d H  qP1 I d H sF0    Y  || _| dI d H   dI d H dksJ d S )Nre   r   rm   r   )expectedr   c                   s     dI d H | ksJ d S Nr   r   )r   rr   r   receiver  s    z1test_memory_stream_one_way_pair.<locals>.receiverrj   rz   rf   r   )r*   r   c                   s   t  I d H  | j  d S r?   )r!   r(   r)   )r*   r   r   r   cancel_after_idle0  s    z:test_memory_stream_one_way_pair.<locals>.cancel_after_idler   c                     s@   t tj   dI d H  W d    n1 s20    Y  d S r   )rA   rB   r   r$   r   r   r   r   r   check_for_cancel4  s    z9test_memory_stream_one_way_pair.<locals>.check_for_cancelrh   s   456789)memory_stream_one_way_pairr   r   r   r   r   r   r   r&   r'   r!   r   r{   )sr   r*   oldr   r   r   r   r   test_memory_stream_one_way_pair  sB    
:<
6
8r   c               	     s   t  \  dI d H  dI d H  dI d H dksBJ  dI d H dksZJ   I d H  dI d H dksJ ddfdd} dd fd	d
}t 4 I d H *}|| ||  W d   I d H  q1 I d H s0    Y  d S )Nre   rj   r   rz   r   r   c                     s    t  I d H   dI d H  d S )Nrx   )r!   r   r   )br   r   senderM  s    z'test_memory_stream_pair.<locals>.senderc                     s     dI d H dksJ d S )Nr   rx   r   r   )ar   r   r   Q  s    z)test_memory_stream_pair.<locals>.receiver)memory_stream_pairr   r   Zsend_eofr   r&   r'   )r   r   r*   r   )r   r   r   test_memory_stream_pairC  s    

r   c                    s@   dddd} t | d I d H  dddd}t|d I d H  d S )Nz,tuple[MemorySendStream, MemoryReceiveStream]r   c                     s   t  S r?   )r   r   r   r   r   one_way_stream_makerZ  s    zDtest_memory_streams_with_generic_tests.<locals>.one_way_stream_makerzqtuple[StapledStream[MemorySendStream, MemoryReceiveStream], StapledStream[MemorySendStream, MemoryReceiveStream]]c                     s   t  S r?   )r   r   r   r   r   half_closeable_stream_maker_  s    zKtest_memory_streams_with_generic_tests.<locals>.half_closeable_stream_maker)check_one_way_streamZcheck_half_closeable_stream)r   r   r   r   r   &test_memory_streams_with_generic_testsY  s    r   c                    s@   dddd} t | | I d H  dddd}t||I d H  d S )Nz tuple[SendStream, ReceiveStream]r   c                     s   t  S r?   )Zlockstep_stream_one_way_pairr   r   r   r   r   i  s    zFtest_lockstep_streams_with_generic_tests.<locals>.one_way_stream_makerzYtuple[StapledStream[SendStream, ReceiveStream], StapledStream[SendStream, ReceiveStream]]c                     s   t  S r?   )Zlockstep_stream_pairr   r   r   r   two_way_stream_makern  s    zFtest_lockstep_streams_with_generic_tests.<locals>.two_way_stream_maker)r   Zcheck_two_way_stream)r   r   r   r   r   (test_lockstep_streams_with_generic_testsh  s    r   c                    s4  ddddd} t  }|dI d H  |d | t|I d H  t  }|dI d H  |d | t|I d H  trt jt jd	}|d
I d H  |d | t|I d H  tt dr0t jt jd	}t	
 F}| d}||I d H  |d | t|I d H  W d    n1 s&0    Y  d S )Nr   r   )listenerr   c                   s   | 4 I d H  t | I d H }|4 I d H  |  I d H }|4 I d H > |dI d H  |dI d H dksnJ W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  W d   I d H  q1 I d H s0    Y  d S )N   xrO   )Zopen_stream_to_socket_listeneracceptr   r   )r   Zclient_streamZserver_streamr   r   r   checkx  s    z2test_open_stream_to_socket_listener.<locals>.check)z	127.0.0.1r   r   )z0.0.0.0r   )family)z::r   AF_UNIXz/sock)tsocketr   bindlistenr   r	   AF_INET6hasattrr   tempfileTemporaryDirectory)r   sockZtmpdirpathr   r   r   #test_open_stream_to_socket_listenerw  s*    






r   c                  C  s\   dddddd} t jtdd( t| t tdd	d
 W d    n1 sN0    Y  d S )NrJ   r   )r-   autojump_clockr   c                   s   d S r?   r   r-   r   r   r   r   busy_kitchen  s    z$test_trio_test.<locals>.busy_kitchenz"^too many clocks spoil the broth!$)matchr   )Zautojump_thresholdr   )rA   rB   
ValueErrorZ	trio_testr,   )r   r   r   r   test_trio_test  s    r   )1
__future__r   r   typingr   rA   Ztrio.testingr    r   r   r   r   Z_core._tests.tutilr	   Z_highlevel_genericr
   r   Z_highlevel_socketr   testingZtesting._check_streamsr   Ztesting._memory_streamsr   Ztrior   Ztrio.abcr   r   r+   r3   r=   rH   rI   r\   rb   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB    *&H\=8*