o
    i                     @   s   d dl Z d dlZd dlZd dlZd dlZzd dlZd dlmZ W n ey+   dZY nw ej	
dZejdd Zejdd Zejdd	 Zd
d Zdd Zdd Zdd Zdd Zdd ZdS )    N)	zmqstreamio_loopc                    sB   t | tj}t | tj}|d}|d|  ||fS )Nztcp://127.0.0.1ztcp://127.0.0.1:%i)r   	ZMQStreamzmqPUSHPULLbind_to_random_portconnect)socketpushpullport r   S/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/tests/test_zmqstream.py	push_pull   s   
r   c                 C   s   | \}}|S Nr   r   r   r   r   r   r   r   !      r   c                 C   s   | \}}|S r   r   r   r   r   r   r   '   r   r   c                    s   |  dd  | dd  tt | d W d   n1 s$w   Y  tt |  d W d   n1 s>w   Y  tt | t W d   dS 1 sYw   Y  dS )zEnsure callable check works.c                  W      d S r   r   argsr   r   r   <lambda>0       z%test_callable_check.<locals>.<lambda>c                  W   r   r   r   r   r   r   r   r   1   r      N)on_sendon_recvpytestraisesAssertionErrorr   )r   r   r   r   test_callable_check-   s   "r   c                    sT   dg}|  | t   fdd}|| tj ddI d H }||ks(J d S )Ns   basicc                    s     |  d S r   
set_resultmsgfr   r   callback?   s   z$test_on_recv_basic.<locals>.callback   timeout)send_multipartasyncioFuturer   wait_forr   r   sentr&   recvdr   r$   r   test_on_recv_basic:   s   

r1   c                    sZ   dg}t  }||j t dI d H  | | t j|ddI d H }||ks+J d S )N   wake      ?r'   r(   )r+   r,   r   r!   sleepr*   r-   )r   r   r/   r%   r0   r   r   r   test_on_recv_wakeG   s   
r5   c                    sv   t jdk r
t  dg}t   fdd}|| tdI d H  | | tj	 ddI d H }||ks9J d S )N)r'   r2   c                    s    t dI d H   |  d S )N皙?)r+   r4   r!   r"   r$   r   r   r&   Y   s   z$test_on_recv_async.<locals>.callbackr3   r'   r(   )
tornadoversion_infor   skipr+   r,   r   r4   r*   r-   r.   r   r$   r   test_on_recv_asyncR   s   


r:   c                    s   dg}t    fdd}|| t dI d H  |jtjtjj	d% | 
| t j ddI d H }||ks;J t dI d H  W d    n1 sMw   Y  d	d
 |dD }dd|v seJ d S )Nr2   c                    s     |  dd  d S )Nr   r   r    r"   r$   r   r   r&   i   s   
z*test_on_recv_async_error.<locals>.callbackr6   )loggerr'   r(   r3   c                 S   s    g | ]}|j tjj kr|jqS r   )namer   gen_logmessage).0xr   r   r   
<listcomp>v   s
    z,test_on_recv_async_error.<locals>.<listcomp>callz(Uncaught exception in ZMQStream callback
)r+   r,   r   r4   at_levelloggingERRORr   r=   r<   r*   r-   get_recordsjoin)r   r   caplogr/   r&   r0   messagesr   r$   r   test_on_recv_async_errord   s    

rK   c              	      s   | j tjtjjd:}tt t	|}W d    n1 s!w   Y  t
|j tju s0J |j j|jks9J |  W d    d S 1 sHw   Y  d S )N)socket_class)r
   r   r   r+   Socketr   warnsRuntimeWarningr   r   type
underlyingclose)contextr
   streamr   r   r   test_shadow_socket~   s   
"rU   )r+   rE   r   r   zmq.asyncior7   zmq.eventloopr   ImportErrormarkusefixtures
pytestmarkfixturer   r   r   r   r1   r5   r:   rK   rU   r   r   r   r   <module>   s0   


