o
    ҷh                     @  s   d dl mZ d dlmZ d dlZd dlZddlmZ ddlm	Z	m
Z
 ejddG d	d
 d
e
ZejddG dd de	ZdddZdddZdS )    )annotations)NoReturnN   )StapledStream)ReceiveStream
SendStreamF)slotsc                   @  s>   e Zd ZU eeZded< dddZdd	d
Z	dddZ
dS )RecordSendStreamzlist[str | tuple[str, object]]recorddataobjectreturnNonec                   s   | j d|f d S )Nsend_allr
   append)selfr    r   U/var/www/html/venv/lib/python3.10/site-packages/trio/_tests/test_highlevel_generic.pyr      s   zRecordSendStream.send_allc                      | j d d S )Nwait_send_all_might_not_blockr   r   r   r   r   r         z.RecordSendStream.wait_send_all_might_not_blockc                   r   Nacloser   r   r   r   r   r      r   zRecordSendStream.acloseN)r   r   r   r   r   r   )__name__
__module____qualname__attrsFactorylistr
   __annotations__r   r   r   r   r   r   r   r	      s
   
 

r	   c                   @  s6   e Zd ZU eeZded< dddd	ZdddZ	dS )RecordReceiveStreamz"list[str | tuple[str, int | None]]r
   N	max_bytes
int | Noner   bytesc                   s   | j d|f dS )Nreceive_some    r   )r   r$   r   r   r   r'      s   z RecordReceiveStream.receive_somer   c                   r   r   r   r   r   r   r   r   "   r   zRecordReceiveStream.aclose)N)r$   r%   r   r&   r   )
r   r   r   r   r    r!   r
   r"   r'   r   r   r   r   r   r#      s   
 r#   r   r   c                    sJ  t   t } t | }|j u sJ |j| u sJ |dI d H  | I d H   jddgks2J  j  |	 I d H   jdgksFJ  j  d fdd}| _	|	 I d H   jd	gksdJ  j  | jg kspJ |
d
I d H  | jdgksJ  jg ksJ | j  | I d H  | jdgksJ  jdgksJ d S )N   foo)r   r)   r   r   r   r   c                     s    j d d S )Nsend_eofr   r   send_streamr   r   fake_send_eof:   r   z)test_StapledStream.<locals>.fake_send_eofr*     )r'   r.   r   )r	   r#   r   r,   receive_streamr   r   r
   clearr*   r'   r   )r/   stapledr-   r   r+   r   test_StapledStream&   s:   





r2   c                    s   G dd dt } G dd dt}t|  | }tjtdd}| I d H  W d    n1 s1w   Y  t|jj	ts?J |j
jdgksHJ |jjdgksQJ d S )Nc                         e Zd Zd fddZ  ZS )z@test_StapledStream_with_erroring_close.<locals>.BrokenSendStreamr   r   c                      t   I d H  td)Nz
send errorsuperr   
ValueErrorr   	__class__r   r   r   R      zGtest_StapledStream_with_erroring_close.<locals>.BrokenSendStream.acloser   r   r   r   r   r   __classcell__r   r   r8   r   BrokenSendStreamQ       r>   c                      r3   )zCtest_StapledStream_with_erroring_close.<locals>.BrokenReceiveStreamr   r   c                   r4   )Nz
recv errorr5   r   r8   r   r   r   W   r:   zJtest_StapledStream_with_erroring_close.<locals>.BrokenReceiveStream.acloser;   r<   r   r   r8   r   BrokenReceiveStreamV   r?   r@   z^(send|recv) error$)matchr   )r	   r#   r   pytestraisesr7   r   
isinstancevalue__context__r,   r
   r/   )r>   r@   r1   excinfor   r   r   &test_StapledStream_with_erroring_closeN   s   rH   r   )
__future__r   typingr   r   rB   _highlevel_genericr   abcr   r   definer	   r#   r2   rH   r   r   r   r   <module>   s    


(