
    *Vf	'                        d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	Z	ddl	m
Z
 ddlZddlmZ e	j                  d        Zd Zd Zd	 Zd
 Zd Z e
j*                   eed       d      d        Z e
j*                   eed       d      d        Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#e	j                  j+                  ejH                  jK                  d      d      d         Z&d! Z'd" Z(d# Z) G d$ d%e      Z*d& Z+y)'zTest asyncio support    N)CancelledError)Process)markc                 "    t         j                  S N)zaioContext)
event_loops    _/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/zmq/tests/test_asyncio.pyr	   r	      s    <<    c                     | j                  t        j                        5 }t        |t        j
                        sJ 	 d d d        y # 1 sw Y   y xY wr   )socketzmqPUSH
isinstancer   Socket)contextss     r   test_socket_classr      s=    		! *Q!T[[)))* * *s   AAc                 X   t         j                  j                  j                         }t         j                  j                         }|j	                          |j	                          t        |      t         j                  u sJ t        |      t         j                  j                  u sJ y r   )r   asyncior	   instancetermtype)r   actxctxs      r   test_instance_subclass_firstr      sp    ;;'')D
++


 CHHJIIK9###:,,,,,r   c                 n   t         j                  j                         5 }t        |      t         j                  u sJ t         j                  j                  j                         5 }t        |      t         j                  j                  u sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r	   r   r   r   )r   r   r   s      r   test_instance_subclass_secondr   '   s    				 53CyCKK'''[[  ))+ 	5t:!4!4444	55 5	5 	55 5s$   AB+%(BB+B(	$B++B4c                    K    |t         j                  t         j                        \  }}|j                         }|j	                         rJ |j                  d       d {    | d {   }|dgk(  sJ y 7 7 w)N   hi)r   r   PULLrecv_multipartdonesend)r   create_bound_pairabfrecvds         r   test_recv_multipartr+   .   sk     SXXsxx0DAq	Avvx<
&&-GEUG s$   AA=!A9"	A=+A;,A=;A=c                   K    | t         j                  t         j                        \  }}|j                         }|j                         }|j	                         rJ |j	                         rJ |j                  ddg       d {    | d {   }|j	                         sJ |j                         dk(  sJ |dk(  sJ y 7 =7 5wNr!      there)r   r   r"   recvr$   send_multipartresult)r&   r'   r(   f1f2r*   s         r   	test_recvr4   7   s     SXXsxx0DAq	
B	
Bwwy=wwy=


E8,
---HE779999;%H	 .s$   BCC	CC4CCRCVTIMEOzrequires RCVTIMEO)reasonc                   K   | \  }}d|_         |j                         }d|_         |j                         }t        j                  t
        j                        5  | d {    d d d        |j                  ddg       d {    | d {   }|j                         sJ |ddgk(  sJ y 7 M# 1 sw Y   LxY w7 87 0w)Nd     r!   r.   )	rcvtimeor/   r#   pytestraisesr   Againr0   r$   	push_pullr'   r(   r2   r3   r*   s         r   test_recv_timeoutr@   D   s     DAqAJ	
BAJ	
			B	syy	! 


E8,
---HE7799UH%%%%	 	 -sN   AB?B/B- B/$B?B;	B?B= B?-B//B84B?=B?SNDTIMEOzrequires SNDTIMEOc                    K    | t         j                        }d|_        t        j                  t         j
                        5  |j                  d       d {    d d d        y 7 # 1 sw Y   y xY ww)Nr8   s   not going anywhere)r   r   sndtimeor;   r<   r=   r%   )r   r   s     r   test_send_timeoutrD   S   s[     sxxAAJ	syy	! ,ff*+++, ,+, ,s0   AA4A(A&A(	A4&A((A1-A4c                   K   | \  }}|j                         }|j                         rJ d}|j                  |       d {    | d {   }|j                         sJ |j                         |k(  sJ ||k(  sJ y 7 =7 5w)Nu   πøøπ)recv_stringr$   send_stringr1   )r?   r'   r(   r)   msgr*   s         r   test_recv_stringrI   [   s|     DAq	Avvx<
C
--
GE668O888:C<<	 s#   >B A>	B
B 4B Bc                   K   | \  }}|j                         }|j                         rJ t        d      }|j                  |       d {    | d {   }|j                         sJ |j	                         |k(  sJ ||k(  sJ y 7 =7 5wN   r'   )	recv_jsonr$   dict	send_jsonr1   r?   r'   r(   r)   objr*   s         r   test_recv_jsonrS   g   s     DAq	Avvx<
)C
++c
GE668O888:C<<	 $   AB
B	BB
4B
Bc                 T  K   | \  }}|j                         }|j                         rJ |j                          t        j                  d       d {    t        d      }|j                  |       d {    t        j                  dk  r-t        j                  t              5  | d {   }d d d        n@t        j                  t        j                  j                        5  | d {   }d d d        |j                         sJ |j                  d       d {   }|sJ t        j                  d       d {    |j                         }t        j                  |d       d {   }||k(  sJ y 7 .7 7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 ~7 _7 2w)Nr   rL   rM   )      timeout)rN   r$   cancelr   sleeprO   rP   sysversion_infor;   r<   r   
exceptionspollwait_for)r?   r'   r(   r)   rR   r*   eventss          r   test_recv_json_cancelledrb   s   sY    DAq	Avvx<HHJ
--

)C
++c

& ]]>* 	GE	 	 ]]7--<<= 	GE	668O866!6$$FM6
--
	A""1a00EC<<%  	 	 	 	 % 1s   AF(F $F(7F80F((F.F/F36F()F/F0F4/F(#F"$ F(F$.F(3F&4F(F(FFF(FFF($F(&F(c                   K   | \  }}|j                         }|j                         rJ t        d      }|j                  |       d {    | d {   }|j                         sJ |j	                         |k(  sJ ||k(  sJ y 7 =7 5wrK   )
recv_pyobjr$   rO   
send_pyobjr1   rQ   s         r   test_recv_pyobjrf      s     DAq	Avvx<
)C
,,s
GE668O888:C<<	 rT   c                   K   d }d } | t         j                  t         j                        \  }}ddddi}|j                  ||       d {    |j	                  |       d {   }|d   |d   k(  sJ |d   sJ |j                  ||       d {    |j	                  |       d {   }|d   |d   k(  sJ |d   rJ y 7 y7 b7 67 w)Nc                     g }|j                  | j                  dg              t        j                  | d         j	                  d      }|j                  |       |S )N
identitiescontentutf8)extendgetjsondumpsencodeappend)rH   framesrj   s      r   	serializez(test_custom_serialize.<locals>.serialize   sL    cgglB/0**S^,33F;gr   c                 d    | d d }t        j                  | d   j                  d            }||dS )Nrk   )ri   rj   )rn   loadsdecode)rr   ri   rj   s      r   deserializez*test_custom_serialize.<locals>.deserialize   s:    CR[
**VBZ..v67$
 	
r   rj   rL   beer'   r(   ri   )r   DEALERROUTERsend_serializedrecv_serialized)r&   rs   rx   r'   r(   rH   r*   r2s           r   test_custom_serializer      s     
 SZZ4DAq 	
C 

C
+++##K00Es9~---


E9
---  -	-Bi=C	N***, ,0 .	-sH   ACCC&C	'-CCC-C.C	CCCc                   K   | \  }}ddddi}t        j                  t              5  |j                  t        t        j
                         d {    d d d        |j                  d       d {    t        j                  t              5  |j                  t        j                         d {    d d d        y 7 o# 1 sw Y   nxY w7 \7 # 1 sw Y   y xY ww)Nrj   rL   ry   rz   s   not json)	r;   r<   	TypeErrorr}   rn   ro   r%   r~   rv   )dealer_routerr'   r(   rH   s       r   test_custom_serialize_errorr      s     DAq 	
C 
y	! 2djj1112 &&
	y	! ,

+++, , 	22 2 +, ,sd   &C(CC CC1C2C#C2C3C7	C CCCCCCc                   K   | \  }}|j                  t        j                        }t        j                  t        j
                        5  | d {    d d d        |j                  d       d {    |j                          d {    |j                  t        j                        }|j                         sJ | d {   }|dk(  sJ y 7 # 1 sw Y   xY w7 m7 W7 w)Ns   ping)	r/   r   DONTWAITr;   r<   r=   r%   r_   r$   )r?   pushpullr)   rH   s        r   test_recv_dontwaitr      s     JD$		#,,A	syy	! 
))G

))+		#,,A668O8'C'>> 	  s`   AC%
CCCC%1C2C%	C!
:C%C#C%CCC%!C%#C%c                 n  K   | \  }}|j                         }|j                         }|j                         sJ |j                         sJ |j                         rJ |j	                  ddg       d {    | d {   }|j                         sJ |j                         sJ |ddgk(  sJ y 7 <7 4wr-   )r/   r#   rZ   r$   r0   	cancelledr>   s         r   test_recv_cancelr      s     DAq	
B	
			B99;;7799wwy=


E8,
---HE<<>>7799UH%%%%	 .s$   A2B54B15	B5>B3?3B53B5c                   K   | \  }}|j                  d      }t        j                  d       d {    |j                         dk(  sJ |j                  d      }|j	                         rJ | d {   }|dk(  sJ |j                  d      }|j	                         rJ |j                  ddg       d {    | d {   }|t        j                  k(  sJ |j                          d {   }|ddgk(  sJ y 7 7 7 I7 A7 w)Nr   rX      r9   r!   r.   )	r_   r   r[   r1   r$   r0   r   POLLINr#   )r?   r'   r(   r)   evtr*   s         r   	test_pollr      s     DAq	qA
--
88:??	qAvvx<'C!8O8	tAvvx<


E8,
---'C#**""$$EUH%%%% 
  .
$sY   0DDAD5D6AD;D<	DD,D2D	3DDDD	Dc                 n  K   t        j                         }d}|j                  t         j                        }|j                  t         j                        }| j                  ||g       |j                  |       |j                  |       t        j                         }|j                  |t         j                         |j                  d      }|j                         rJ |j                  ddg       | d {   }||t         j                  fgk(  sJ |j                         }|ddgk(  sJ y 7 6w)Nzinproc://testr9   rX   r!   r.   )r   r	   r   r   r"   rl   bindconnectr   Pollerregisterr   r_   r$   r0   r#   )	socketsr   urlr'   r(   pollerr)   r   r*   s	            r   test_poll_base_socketr      s     
++-C
C

388A

388ANNAq6FF3KIIcN[[]F
OOAszz"D!Avvx<eX&''CAszz?####EUH%%%% s   C:D5<D3=7D5c                    K   | \  }}|j                  d      }|j                          t        d      D ]1  }t        j                  d       d {    |j                         s1 n |j                         sJ y 7 +w)Nr   rX   rL   r   )r_   closeranger   r[   r   )r?   r'   r(   r)   _s        r   test_poll_on_closed_socketr     sp     DAq	qAGGI 1X mmA;;= ;;== 	s   AA>A<A>&A>winz)Windows does not support polling on filesc                    K   t        j                         } t        j                         \  }}t        j                  |d      }t        j                  |d      }| j                  |t        j                         | j                  |t        j                         | j                  d       d {   }t        |      }|j                         |vsJ |j                         |v sJ ||j                            t        j                  k(  sJ | j                  |       |j                  d       |j                          | j                  d       d {   }t        |      }|j                         |v sJ ||j                            t        j                  k(  sJ |j                  d      dk(  sJ |j!                          |j!                          y 7 &7 w)Nrbwbr   rX      xr9   )r   r   ospipefdopenr   r   r   POLLOUTr_   rO   fileno
unregisterwriteflushreadr   )prwevtss       r   test_poll_rawr   "  sj    
 	A779DAq
		!TA
		!TA JJq#**JJq#++""D:D88:T!!!88:
s{{*** LLOGGDMGGI%%D:D88:
szz)))66!9GGIGGI! # &s&   B-G/G0B$GGBGGc                     | \  fd}t        d      D ]Q  }t        j                         }|j                  t        j                   |       d             |j                          S y )Nc                     K   j                  d       d {    j                          d {   } | dk(  sJ y 7 $7 w)Ns   buf)r%   r/   )rH   r'   r(   s    r   testz!test_multiple_loops.<locals>.testF  s:     ffVnFFHnf}} 	s   A=A?AArV   
   rX   )r   r   new_event_looprun_until_completer`   r   )r?   r   iloopr'   r(   s       @@r   test_multiple_loopsr   C  sZ    DAq
 1X %%' 0 0 DE

r   c                  d   t        j                         5 } | j                  t         j                        }t	        j
                  |      }t        |t        j
                        sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ 	 d d d        y # 1 sw Y   y xY wr   )	r   r	   r   r"   r   r   r   
underlyingr   )r   r   async_ss      r   test_shadowr   Q  s    	 &#JJsxx ++a.'4;;///!!Q\\111||qvv%%%& & &s   BB&&B/c            	        K   t         j                  j                         } | 5  | j                  t         j                        5 }t        |j                        dk(  sJ t        d      D ]m  }t        j                  |j                  dt         j                  j                              }|j                          t        j                  d       d {    o t        j                  d       d {    t        |j                        dk(  sJ 	 d d d        d d d        y 7 O7 2# 1 sw Y   xY w# 1 sw Y   y xY ww)Nr   r   r9   )rY   flagsg?)r   r   r	   r   r"   len_recv_futuresr   ensure_futurer_   	PollEventr   rZ   r[   )r   r   r   r)   s       r   test_poll_leakr   Z  s     
++


C	 )cjj" )a1??#q(((r 	#A%%affTAUAUf&VWAHHJ--"""	#
 mmC   1??#q((() ) )
 # ) ) ) )sY   !D> D2BD&D"
D&1D$2D&D2	D>"D&$D&&D/	+D22D;7D>c                       e Zd Zd Zy)ProcessForTeardownTestc                    t         j                  j                         }|j                  t        j
                        }|j                  d       d }t        j                         }t        j                   ||      d      }	 |j                  |       J d       # t        j                  $ r Y nw xY w	 |j                          y# |j                          w xY w)z;Leave context, socket and event loop upon implicit disposalztcp://127.0.0.1c                 @   K   | j                          d {    y 7 wr   )r/   )r   s    r   never_ending_taskz5ProcessForTeardownTest.run.<locals>.never_ending_tasko  s     ++-s   r   rX   z,never_ending_task was completed unexpectedlyN)r   r	   r   r   r   PAIRbind_to_random_portr   r   r`   r   TimeoutErrorr   )selfr   r   r   r   coros         r   runzProcessForTeardownTest.runh  s     ||$$&SXX&""#45	  %%' 1& 91E	##D) IHH5 ## 		 JJLDJJLs*   B C B2/C 1B22C CN)__name__
__module____qualname__r    r   r   r   r   g  s    r   r   c                     t               }|j                          | j                  |j                         |j	                  d       |j
                  J d       |j
                  dk(  sJ d|j
                          y )Nr   zprocess teardown hangsr   zPython process died with code )r   startaddfinalizer	terminatejoinexitcode)requestprocs     r   test_process_teardownr   ~  si    !#DJJL(IIbM==$>&>>$==AO!?OOr   ),__doc__r   rn   r   r\   concurrent.futuresr   multiprocessingr   r;   r   r   zmq.asyncior   fixturer	   r   r   r   r+   r4   skipifhasattrr@   rD   rI   rS   rb   rf   r   r   r   r   r   r   r   platform
startswithr   r   r   r   r   r   r   r   r   <module>r      sI   
   	 
 - #   
   *
-5
 j))2EF& G& j))2EF, G,		6	  F,"
&&*&* LLE"6  	:&
)W .Pr   