a
    (ñ»j<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r°d 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  q‚1 I d H sx0    Y  g ‰ ddœ‡ fdd„}t  ¡ 4 I d H š*}| |¡ |j ¡  W d   ƒI d H  qè1 I d H sÞ0    Y  ˆ d	gksöJ ‚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© ú>E:\soccer\ml_env\Lib\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  qœ1 I d H s’0    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  qº1 I d H s°0    Y  ˆ g d¢ksÊJ ‚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{®Gáz„?ú	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{®Gáz”?ú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 sÐ0    Y  W d   ƒ q�1 sî0    Y  q�t ƒ �, 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 sÐ0    Y  W d   ƒ q�1 sî0    Y  q�t 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  q¸1 I d H s®0    Y  ˆ g d¢ksÈJ ‚W d   ƒI d H  qò1 I d H sè0    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  �q„1 I d H �sz0    Y  W d   ƒ n1 �sš0    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  qˆ1 I d H s~0    Y  | dƒ4 I d H š ˆ dƒ W d   ƒI d H  qÌ1 I d H sÂ0    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  qˆ1 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  q†1 I d H s|0    Y  W d   ƒI d H  q°1 I d H s¦0    Y  ˆ d	d
gksÀJ ‚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 s”0    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 s„0    Y  W d   ƒ n1 s¢0    Y  ttƒ� t‚W d   ƒ n1 sÎ0    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 s„0    Y  t tj¡� ˆ  ¡  W d   ƒ n1 s¸0    Y  t t¡� ˆ  d¡ W d   ƒ n1 sì0    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 �sŽ0    Y  tƒ �( ˆ  	¡ I d H dk�s¸J ‚W d   ƒ n1 �sÎ0    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  �q¼1 I d H �s²0    Y  W d   ƒ n1 �sÒ0    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  �qê1 I d H �sà0    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 s¨0    Y  t tj¡� ˆ d
¡ W d   ƒ n1 sÞ0    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  �q¢1 I d H �s˜0    Y  ˆdk�s°J ‚tƒ � ˆ ¡ I d H  W d   ƒ n1 �sÜ0    Y  ˆ ¡ I d H dk�sþJ ‚ˆ ¡ 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 �s‚J ‚g ‰ddœ‡‡fdd„}ddœ‡fdd„}ddœ‡fdd„}t |||ƒ‰ˆj|u �sÚJ ‚ˆj|u �sêJ ‚ˆj|u �súJ ‚ˆ 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  qÐ1 I d H sÆ0    Y  W d   ƒ n1 sä0    Y  ˆ jd u süJ ‚ˆ  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 �sŒ0    Y  ddœ‡fdd„}g ‰ddœ‡fdd„}t ||ƒ‰ˆj|u �sØJ ‚ˆj|u �sèJ ‚ˆ 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 �s 0    Y  ˆdgk�sºJ ‚t	 
tj¡�  ˆ d	¡I d H  W d   ƒ n1 �sî0    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 s†0    Y  t ƒ }| d¡ | ¡  t tj¡�  | d¡I d H  W d   ƒ n1 sÚ0    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s‚J ‚t| |dd�s”J ‚t| |dd�s¦J ‚t| |dd�r¸J ‚| d¡I d H dksÐJ ‚|  ¡  t| |ƒ | d¡I d H dksúJ ‚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  qâ1 I d H sØ0    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  �q²1 I d H �s¨0    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�s€J ‚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s€J ‚ddœ‡fdd„} ddœ‡ fd	d
„}t ¡ 4 I d H š*}| |¡ | | ¡ W d   ƒI d H  qô1 I d H sê0    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r¶t 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  q˜1 I d H sŽ0    Y  W d   ƒI d H  qÂ1 I d H s¸0    Y  W d   ƒI d H  qì1 I d H sâ0    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   Z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*