§
    ‹Ÿj  ã                   óÖ  — 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 d dlm	Z	 d dl
mZ d dlmZ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 d	Zn# e$ r d
ZY nw xY w ej        ¦   «         dk    Z ej        de¦  «         d„ Z ej        ed¬¦  «        Z ej         ej         ¦   «         dk     d¬¦  «        Z!d„ Z" G d„ de¦  «        Z# G d„ de#¦  «        Z$ G d„ d¦  «        Z%d„ Z&dS )é    N)Úpartial)ÚThread)ÚList)ÚSkipTestÚTestCase)Úmark)Újsonapi)ÚgreenTFÚPyPyzYzmq.tests is deprecated in pyzmq 25, we recommend managing your own contexts and sockets.c                 ó   — | S ©N© )Úxs    ú_/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/zmq/tests/__init__.pyÚ_idr   )   s   € Ø€Hó    zDoesn't work on PyPy)Úreason)é   zrequires zmq >= 4c                 ó  — t          | j        ¬¦  «        }d|_        |                     ¦   «          |                     |¬¦  «         |                     ¦   «         r*dt          j        j        j	        _
        t          d¦  «        ‚dS )z"Terminate a context with a timeout)ÚtargetT©ÚtimeoutNú?context could not terminate, open sockets likely remain in test)r   ÚtermÚdaemonÚstartÚjoinÚis_aliveÚzmqÚsugarÚcontextÚContextÚ	_instanceÚRuntimeError)Úctxr   Úts      r   Úterm_contextr'   5   s{   € å�c”hÐÑÔ€AØ€A„HØ‡G‚G�I„I€IØ‡F‚F�7€FÑÔÐØ‡z‚z�|„|ð 
à.2�Œ	ÔÔ!Ô+ÝØMñ
ô 
ð 	
ð
ð 
r   c                   ó6  ‡ — e Zd ZU dZdZ eej                             d¦  «        pd¦  «        Z	e
ej                 ed<   ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd	„ Zd
„ Zˆ fd„Zˆ fd„Zej        ej        dfd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚBaseZMQTestCaseFé
   ÚZMQ_TEST_TIMEOUTé<   Úsocketsc                 ó”   — | j         j                             dd¦  «        d         t                               dd¦  «        d         k    S )Nú.é   r   )Ú	__class__Ú
__module__ÚsplitÚ__name__©Úselfs    r   Ú_is_pyzmq_testzBaseZMQTestCase._is_pyzmq_testI   s<   € àŒ~Ô(×.Ò.¨s°AÑ6Ô6°qÔ9½X¿^º^ÈCÐQRÑ=SÔ=SÐTUÔ=VÒVÐVr   c                 óH   — | j         ot          t          d¦  «        o| j        S )NÚSIGALRM)r7   ÚhasattrÚsignalÚtest_timeout_secondsr5   s    r   Ú_should_test_timeoutz$BaseZMQTestCase._should_test_timeoutM   s,   € ð Ôð *Ý� 	Ñ*Ô*ð*àÔ)ð	
r   c                 ó@   — | j         rt          j        S t          j        S r   )r
   Úgzmqr"   r   r5   s    r   r"   zBaseZMQTestCase.ContextU   s   € àŒ:ð 	Ý”<Ðå”;Ðr   c                 ón   — | j                              |¦  «        }| j                             |¦  «         |S r   )r!   Úsocketr-   Úappend)r6   Úsocket_typeÚss      r   rA   zBaseZMQTestCase.socket\   s2   € ØŒL×Ò Ñ,Ô,ˆØŒ×Ò˜AÑÔÐØˆr   c                 ó(   — t          d|› d�¦  «        ‚)NzTest did not complete in z seconds)ÚTimeoutError)r6   r   Úargss      r   Ú_alarm_timeoutzBaseZMQTestCase._alarm_timeouta   s   € ÝÐH°wÐHÐHÐHÑIÔIÐIr   c                 ó~  •— t          ¦   «                              ¦   «          | j        rt          st	          d¦  «        ‚| j                             ¦   «         | _        g | _        | j	        rRt          j
        t          j        t          | j        | j        ¦  «        ¦  «         t          j        | j        ¦  «         d S d S )Nzrequires gevent)ÚsuperÚsetUpr
   Úhave_geventr   r"   Úinstancer!   r-   r=   r;   r9   r   rH   r<   Úalarm)r6   r1   s    €r   rK   zBaseZMQTestCase.setUpd   s«   ø€ Ý‰Œ�Š‰ŒˆØŒ:ð 	.�kð 	.ÝÐ,Ñ-Ô-Ð-à”|×,Ò,Ñ.Ô.ˆŒØˆŒØÔ$ð 	4åŒMÝ”¥¨Ô(;¸TÔ=VÑ WÔ Wñô ð õ ŒL˜Ô2Ñ3Ô3Ð3Ð3Ð3ð	4ð 	4r   c                 óÄ  •— | j         rt          j        d¦  «         | j        h}| j        rO| j                             ¦   «         }|                     |j        ¦  «         |                     d¦  «         | j        °O|D ]B}	 t          || j	        ¦  «         Œ# t          $ r d t          j        j        j        _        ‚ w xY wt          ¦   «                              ¦   «          d S )Nr   )r=   r;   rN   r!   r-   ÚpopÚaddÚcloser'   Úteardown_timeoutÚ	Exceptionr   r    r"   r#   rJ   ÚtearDown)r6   ÚcontextsÚsockr%   r1   s       €r   rU   zBaseZMQTestCase.tearDownr   sè   ø€ ØÔ$ð 	åŒL˜‰OŒOˆOØ”L�>ˆØŒlð 	Ø”<×#Ò#Ñ%Ô%ˆDØ�LŠL˜œÑ&Ô&Ð&Ø�JŠJ�q‰MŒMˆMð Œlð 	ð ð 	ð 	ˆCðÝ˜S $Ô"7Ñ8Ô8Ð8Ð8øÝð ð ð à6:•”	Ô!Ô)Ô3Øðøøøõ
 	‰Œ×ÒÑÔÐÐÐs   Â BÂ'B=ztcp://127.0.0.1c                 óˆ  — | j                              |¦  «        }|                     t          j        d¦  «         |                     |¦  «        }| j                              |¦  «        }|                     t          j        d¦  «         |                     |› d|› �¦  «         | j                             ||g¦  «         ||fS )z/Create a bound socket pair using a random port.r   ú:)	r!   rA   Ú
setsockoptr   ÚLINGERÚbind_to_random_portÚconnectr-   Úextend)r6   Útype1Útype2Ú	interfaceÚs1ÚportÚs2s          r   Úcreate_bound_pairz!BaseZMQTestCase.create_bound_pair…   s°   € ð Œ\× Ò  Ñ'Ô'ˆØ
�Š•c”j !Ñ$Ô$Ð$Ø×%Ò% iÑ0Ô0ˆØŒ\× Ò  Ñ'Ô'ˆØ
�Š•c”j !Ñ$Ô$Ð$Ø
�
Š
�iÐ(Ð( $Ð(Ð(Ñ)Ô)Ð)ØŒ×Ò˜R ˜HÑ%Ô%Ð%Ø�2ˆvˆr   c                 óª   — |                      |¦  «         |                     ¦   «         }|                      |¦  «         |                     ¦   «         }|S r   )ÚsendÚrecv)r6   rb   rd   ÚmsgÚmsg2Úmsg3s         r   Ú	ping_pongzBaseZMQTestCase.ping_pong’   s?   € Ø
�Š�‰ŒˆØ�wŠw‰yŒyˆØ
�Š�‰ŒˆØ�wŠw‰yŒyˆØˆr   c                 óà   — t           j        €t          d¦  «        ‚|                     |¦  «         |                     ¦   «         }|                     |¦  «         |                     ¦   «         }|S )NzNo json library)r	   Újsonmodr   Ú	send_jsonÚ	recv_json©r6   rb   rd   ÚoÚo2Úo3s         r   Úping_pong_jsonzBaseZMQTestCase.ping_pong_json™   sY   € ÝŒ?Ð"ÝÐ,Ñ-Ô-Ð-Ø
�Š�Q‰ŒˆØ�\Š\‰^Œ^ˆØ
�Š�RÑÔÐØ�\Š\‰^Œ^ˆØˆ	r   c                 óª   — |                      |¦  «         |                     ¦   «         }|                      |¦  «         |                     ¦   «         }|S r   )Ú
send_pyobjÚ
recv_pyobjrq   s         r   Úping_pong_pyobjzBaseZMQTestCase.ping_pong_pyobj¢   sE   € Ø
�Š�aÑÔÐØ�]Š]‰_Œ_ˆØ
�Š�bÑÔÐØ�]Š]‰_Œ_ˆØˆ	r   c                 ó  — 	  ||i |¤Ž |                       d¦  «         d S # t          j        $ rW}|                      |j        |dt          j        |¦  «        › dt          j        |j        ¦  «        › d�¦  «         Y d }~d S d }~ww xY w)Nú Function did not raise any errorúwrong error raised, expected 'ú' got 'ú')Úfailr   ÚZMQErrorÚassertEqualÚerrno©r6   r‚   ÚfuncrG   ÚkwargsÚes         r   ÚassertRaisesErrnoz!BaseZMQTestCase.assertRaisesErrno©   sÑ   € ð
	:ØˆD�$Ð!˜&Ð!Ð!Ð!ð �IŠIÐ8Ñ9Ô9Ð9Ð9Ð9øõ Œ|ð 	ð 	ð 	Ø×ÒØ”Øðµ´¸eÑ1DÔ1Dð ð Ý	„l�1”7ÑÔðð ð ñô ð ð ð ð ð ð ð øøøøð	øøøs   ‚! ¡B°ABÂBc           	      óB  — t          j        d¦  «         t          j        |gg g |                     dd¦  «        ¬¦  «        \  }}}t          |¦  «        dk    s
J d¦   «         ‚t          j        |                     dd¦  «        z  |d<   |r|j        n|j	        } |di |¤ŽS )	zIcall recv[_multipart] in a way that raises if there is nothing to receivegš™™™™™¹?r   é   r   r   zShould have received a messageÚflagsr   )
ÚtimeÚsleepr   ÚselectrP   ÚlenÚDONTWAITÚgetÚrecv_multipartrh   )r6   Ú	multipartrA   r…   ÚrÚwr   rh   s           r   Ú_select_recvzBaseZMQTestCase._select_recv¶   s�   € õ
 	Œ
�3‰Œˆå”*˜f˜X r¨2°v·z²zÀ)ÈQÑ7OÔ7OÐPÑPÔP‰ˆˆ1ˆaÝ�1‰vŒv˜ŠzˆzˆzÐ;‰zŒzˆzÝœ,¨¯ª°G¸QÑ)?Ô)?Ñ?ˆˆw‰à(1ÐBˆvÔ$Ð$°v´{ˆØˆtˆ~ˆ~�fˆ~ˆ~Ðr   c                 ó    —  | j         d|fi |¤ŽS )z=call recv in a way that raises if there is nothing to receiveF©r•   ©r6   rA   r…   s      r   rh   zBaseZMQTestCase.recvÄ   s   € à ˆtÔ  ¨Ð9Ð9°&Ð9Ð9Ð9r   c                 ó    —  | j         d|fi |¤ŽS )zGcall recv_multipart in a way that raises if there is nothing to receiveTr—   r˜   s      r   r‘   zBaseZMQTestCase.recv_multipartÈ   s   € à ˆtÔ   vÐ8Ð8°Ð8Ð8Ð8r   ) r4   r2   Ú__qualname__r
   rS   ÚintÚosÚenvironr�   r<   r   r   ÚSocketÚ__annotations__Úpropertyr7   r=   r"   rA   rH   rK   rU   ÚPAIRre   rl   ru   ry   r‡   r•   rh   r‘   Ú__classcell__)r1   s   @r   r)   r)   C   s“  ø€ € € € € € Ø€EØÐØ˜3˜rœzŸ~š~Ð.@ÑAÔAÐGÀRÑHÔHÐØ�#”*ÔÐÐÑàðWð Wñ „XðWð ð
ð 
ñ „Xð
ð ðð ñ „Xððð ð ð
Jð Jð Jð4ð 4ð 4ð 4ð 4ðð ð ð ð ð( ”H C¤HÐ8Iðð ð ð ðð ð ðð ð ðð ð ð:ð :ð :ðð ð ð:ð :ð :ð9ð 9ð 9ð 9ð 9ð 9ð 9r   r)   c                   ó   — e Zd ZdS )ÚPollZMQTestCaseN)r4   r2   rš   r   r   r   r¤   r¤   Í   s   € € € € € Ø€Dr   r¤   c                   ó,   — e Zd ZdZdZdZd„ Zd„ Zd„ ZdS )Ú	GreenTestz/Mixin for making green versions of test classesTr*   c                 óv  — |t           j        k    rt          d¦  «        ‚	  ||i |¤Ž |                      d¦  «         d S # t           j        $ ri t          j        ¦   «         d         }|                      |j        |dt          j        |¦  «        › dt          j        |j        ¦  «        › d�¦  «         Y d S w xY w)NzSkipping because we're green.r{   r0   r|   r}   r~   )	r   ÚEAGAINr   r   r€   ÚsysÚexc_infor�   r‚   rƒ   s         r   r‡   zGreenTest.assertRaisesErrno×   sê   € Ø•C”JÒÐÝÐ:Ñ;Ô;Ð;ð	:ØˆD�$Ð!˜&Ð!Ð!Ð!ð �IŠIÐ8Ñ9Ô9Ð9Ð9Ð9øõ Œ|ð 	ð 	ð 	Ý”‘”˜qÔ!ˆAØ×ÒØ”Øðµ´¸eÑ1DÔ1Dð ð Ý	„l�1”7ÑÔðð ð ñô ð ð ð ð ð	øøøs   ¡A  Á A4B8Â7B8c                 óˆ  — | j         rt          j        d¦  «         | j        h}| j        rN| j                             ¦   «         }|                     |j        ¦  «         |                     ¦   «          | j        °N	 t          j	        d„ |D ¦   «         | j
        d¬¦  «         d S # t          j        $ r t          d¦  «        ‚w xY w)Nr   c                 ó@   — g | ]}t          j        |j        ¦  «        ‘ŒS r   )ÚgeventÚspawnr   )Ú.0r%   s     r   ú
<listcomp>z&GreenTest.tearDown.<locals>.<listcomp>ò   s$   € Ð<Ð<Ð<¨C•”˜cœhÑ'Ô'Ð<Ð<Ð<r   T)r   Úraise_errorr   )r=   r;   rN   r!   r-   rP   rQ   rR   r­   ÚjoinallrS   ÚTimeoutr$   )r6   rV   rW   s      r   rU   zGreenTest.tearDownç   sã   € ØÔ$ð 	åŒL˜‰OŒOˆOØ”L�>ˆØŒlð 	Ø”<×#Ò#Ñ%Ô%ˆDØ�LŠL˜œÑ&Ô&Ð&Ø�JŠJ‰LŒLˆLð Œlð 	ð		ÝŒNØ<Ð<°8Ð<Ñ<Ô<ØÔ-Ø ðñ ô ð ð ð øõ
 Œ~ð 	ð 	ð 	ÝØQñô ð ð	øøøs   Á:&B" Â"Cc                 ó    — t          d¦  «        ‚©NzSkipping because we are green)r   r5   s    r   Ú
skip_greenzGreenTest.skip_greenû   s   € ÝÐ6Ñ7Ô7Ð7r   N)	r4   r2   rš   Ú__doc__r
   rS   r‡   rU   r¶   r   r   r   r¦   r¦   Ñ   sR   € € € € € Ø9Ð9à€EØÐð:ð :ð :ð ð ð ð(8ð 8ð 8ð 8ð 8r   r¦   c                 ó   ‡ — ˆ fd„}|S )Nc                 óH   •— | j         rt          d¦  «        ‚ ‰| g|¢R i |¤ŽS rµ   )r
   r   )r6   rG   r…   Úfs      €r   Úskipping_testz!skip_green.<locals>.skipping_test   s<   ø€ ØŒ:ð 	,ÝÐ:Ñ;Ô;Ð;à�1�TÐ+˜DÐ+Ð+Ð+ FÐ+Ð+Ð+r   r   )rº   r»   s   ` r   r¶   r¶   ÿ   s$   ø€ ð,ð ,ð ,ð ,ð ,ð Ðr   )'rœ   Úplatformr;   r©   r‹   ÚwarningsÚ	functoolsr   Ú	threadingr   Útypingr   Úunittestr   r   Úpytestr   r   Ú	zmq.utilsr	   r­   r
   r?   rL   ÚImportErrorÚpython_implementationÚPYPYÚwarnÚDeprecationWarningr   ÚskipifÚ	skip_pypyÚzmq_version_infoÚrequire_zmq_4r'   r)   r¤   r¦   r¶   r   r   r   ú<module>rÍ      s6  ðð 
€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à Ð Ð Ð Ð Ð à 
€
€
€
Ø Ð Ð Ð Ð Ð ðØ€M€M€Mà!Ð!Ð!Ð!Ð!Ð!à€K€KøØð ð ð Ø€K€K€Kðøøøð &€xÔ%Ñ'Ô'¨6Ò1€ð
 €„Ø_Øñô ð ðð ð ð ˆDŒK˜Ð%;Ð<Ñ<Ô<€	Ø�”Ð0˜CÔ0Ñ2Ô2°TÒ9ÐBUÐVÑVÔV€ð
ð 
ð 
ðG9ð G9ð G9ð G9ð G9�hñ G9ô G9ð G9ðT	ð 	ð 	ð 	ð 	�oñ 	ô 	ð 	ð+8ð +8ð +8ð +8ð +8ñ +8ô +8ð +8ð\ð ð ð ð s   ÁA ÁAÁA