
    Zdc                     &   d dl Z d dlZd dlZd dlZd dlZd dlZ	 d dlZd dlmZ n# e	$ r dZY nw xY wej
                            d          Zej        d             Zej        d             Zej        d             Zd Zd Zd	 Zd
 Zd Zd Zd ZdS )    N)	zmqstreamio_loopc                   K   t          j         | t          j                            }t          j         | t          j                            }|                    d          }|                    d|z             ||fS )Ntcp://127.0.0.1ztcp://127.0.0.1:%i)r   	ZMQStreamzmqPUSHPULLbind_to_random_portconnect)socketpushpullports       8lib/python3.11/site-packages/zmq/tests/test_zmqstream.py	push_pullr      st      vvch//00Dvvch//00D##$566DLL%,---$<    c                     | \  }}|S N r   r   r   s      r   r   r   "       JD$Kr   c                     | \  }}|S r   r   r   s      r   r   r   (   r   r   c                   K   |                      d            |                     d            t          j        t                    5  |                     d           ddd           n# 1 swxY w Y   t          j        t                    5  |                      d           ddd           n# 1 swxY w Y   t          j        t                    5  |                     t
                     ddd           dS # 1 swxY w Y   dS )zEnsure callable check works.c                      d S r   r   argss    r   <lambda>z%test_callable_check.<locals>.<lambda>1       t r   c                      d S r   r   r   s    r   r   z%test_callable_check.<locals>.<lambda>2   r   r      N)on_sendon_recvpytestraisesAssertionErrorr   )r   s    r   test_callable_checkr'   .   s      	LL##$$$LL##$$$	~	&	&  Q              	~	&	&  Q              	~	&	&  S                 s6   A**A.1A.B00B47B4C<<D D c                    K   dg}|                      |           t          j                    fd}|                    |           t          j        d           d {V }||k    sJ d S )Ns   basicc                 2                         |            d S r   
set_resultmsgfs    r   callbackz$test_on_recv_basic.<locals>.callback@   s    	Sr      timeout)send_multipartasyncioFuturer#   wait_forr   r   sentr/   recvdr.   s        @r   test_on_recv_basicr:   ;   s      :DA     	LL"1a000000000ED======r   c                   K   dg}t          j                    }|                    |j                   t          j        d           d {V  |                     |           t          j        |d           d {V }||k    sJ d S )N   wake      ?r0   r1   )r4   r5   r#   r+   sleepr3   r6   )r   r   r8   r.   r9   s        r   test_on_recv_waker?   H   s      9DALL
-

"1a000000000ED======r   c                 X  K   t           j        dk     rt          j                     dg}t	          j                    fd}|                    |           t	          j        d           d {V  |                     |           t	          j	        d           d {V }||k    sJ d S )N)r0   r<   c                 j   K   t          j        d           d {V                      |            d S )N皙?)r4   r>   r+   r,   s    r   r/   z$test_on_recv_async.<locals>.callbackZ   sA      mC         	Sr   r=   r0   r1   )
tornadoversion_infor$   skipr4   r5   r#   r>   r3   r6   r7   s        @r   test_on_recv_asyncrF   S   s      d""9DA     	LL
-

"1a000000000ED======r   c                 F  K   dg}t          j                    fd}|                    |           t          j        d           d {V  |                    t
          j        t          j        j	                  5  | 
                    |           t          j        d           d {V }||k    sJ t          j        d           d {V  d d d            n# 1 swxY w Y   d |                    d	          D             }d
d                    |          v sJ d S )Nr<   c                 @   K                        |            ddz   d S )Nr!   r   r*   r,   s    r   r/   z*test_on_recv_async_error.<locals>.callbackj   s&      	S	Ar   rB   )loggerr0   r1   r=   c                 P    g | ]#}|j         t          j        j         k    |j        $S r   )namer   gen_logmessage).0xs     r   
<listcomp>z,test_on_recv_async_error.<locals>.<listcomp>w   s7       6Y&+++ 	
	+++r   callz(Uncaught exception in ZMQStream callback
)r4   r5   r#   r>   at_levelloggingERRORr   rL   rK   r3   r6   get_recordsjoin)r   r   caplogr8   r/   r9   messagesr.   s          @r   test_on_recv_async_errorrZ   e   s     9DA     	LL
-

	y/@/E	F	F ! !D!!!&q!444444444}}}}mC         ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ##F++  H
 689L9LLLLLLLs   >ACC"%C"c                   K   |                      t          j        t          j        j                  5 }t          j        t                    5  t          j	        |          }d d d            n# 1 swxY w Y   t          |j                   t          j        u sJ |j         j        |j        k    sJ |                                 d d d            d S # 1 swxY w Y   d S )N)socket_class)r   r   r	   r4   Socketr$   warnsRuntimeWarningr   r   type
underlyingclose)contextr   streams      r   test_shadow_socketre      s<     	s{/A	B	B f\.)) 	1 	1(00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1FM""cj0000}'6+<<<<<                 s6   CA."C.A2	2C5A2	6ACCCc                   K   |                      t          j                  5 }|                      t          j                  5 }dx|_        |_        |                    d          }|                    d|            t          j                            |          }t          j
        |          }t          d          D ]$}|                    t          |                     %|                                 |                    t                      |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t%          j        d          5 }t)          j        d           d {V  d d d            n# 1 swxY w Y   d                    d	 |D                       }	d
|	v sJ d|j        v sJ d S )Nr   r   ztcp://127.0.0.1:
   T)recordg?rR   c              3   >   K   | ]}t          |j                  V  d S r   )strrM   )rN   rs     r   	<genexpr>z+test_shadow_socket_close.<locals>.<genexpr>   s*      ==S^^======r   zafter closing socketzclosed socket)r   r   r	   r
   lingerr   r   r]   shadowr   r   rangesend_stringrj   recvr#   printrb   warningscatch_warningsr4   r>   rW   text)
rc   rX   r   r   r   shadow_pullrd   irecordswarning_texts
             r   test_shadow_socket_closerz      sg     		!	! T7>>#(+C+C t$%%dk''(9::...///j''--$[11r 	% 	%ASVV$$$$		 	u

                             $ 
	 	-	-	- !mC         ! ! ! ! ! ! ! ! ! ! ! ! ! ! !99==W=====L!\1111fk))))))sH    E
C%D3'E
3D7	7E
:D7	;E

EE*FFF)r4   rT   rs   r$   r   zmq.asynciorC   zmq.eventloopr   ImportErrormarkusefixtures
pytestmarkfixturer   r   r   r'   r:   r?   rF   rZ   re   rz   r   r   r   <module>r      sk  
     



    NNN'''''''   GGG [$$Y//
      
   

 
 

 
 
    $M M M4  * * * * *s   
% //