HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/zmq/__pycache__/_future.cpython-310.pyc
o

;j_�@s�dZddlmZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
mZmZmZmZmZddlZdd	lmZmZmZGd
d�de�ZGdd
�d
�ZGdd�deej�ZGdd�d�Zeddd�ZGdd�deeje�ZdS)z%Future-returning APIs for coroutines.�)�annotationsN)�Future)�deque)�partial)�chain)�Any�	Awaitable�Callable�
NamedTuple�TypeVar�cast)�EVENTS�POLLIN�POLLOUTc@s>eZdZUded<ded<ded<ded<d	ed
<d	ed<dS)
�_FutureEventr�future�str�kind�tuple�args�dict�kwargsr�msg�timerN)�__name__�
__module__�__qualname__�__annotations__�rr�?/opt/saltstack/salt/lib/python3.10/site-packages/zmq/_future.pyrs
rc@sFeZdZUdZdZded<ded<ddd	�Zdd
d�Zddd
d�ZdS)�_AsynczMixin for common async logicNr�
_current_loopztype[Future]�_Future�returncCsL|jdur|��|_|�|j�|jS|��}||jur$||_|�|�|S)z�Get event loop

        Notice if event loop has changed,
        and register init_io_state on activation of a new event loop
        N)r!�
_default_loop�_init_io_state)�selfZcurrent_looprrr�	_get_loop1s



z_Async._get_loopcCstd��)Nz!Must be implemented in a subclass��NotImplementedError)r&rrrr$Bsz_Async._default_loop�NonecC�dS�Nr�r&�looprrrr%Esz_Async._init_io_state)r#rr,)r#r*)	rrr�__doc__r!rr'r$r%rrrrr +s


r csZeZdZUdZded<ded<ded<ded<ddd�Zddd�Zdd�fdd�
Z�ZS)�_AsyncPollerz:Poller that returns a Future on poll, instead of blocking.ztype[_AsyncSocket]�
_socket_class�int�_READ�_WRITEz	list[Any]�raw_socketsr.r�socket�evt�fr	r#r*cC�t��)z"Schedule callback for a raw socketr()r&r.r6r7r8rrr�_watch_raw_socketQ�z_AsyncPoller._watch_raw_socket�socketscGr9)z$Unschedule callback for a raw socketr()r&r.r<rrr�_unwatch_raw_socketsUr;z!_AsyncPoller._unwatch_raw_sockets���� Awaitable[list[tuple[Any, int]]]c

s�����|dkr0zt��d�}Wnty(}z��|�WYd}~�Sd}~ww��|��S��������g��fdd�}�����fdd��g��fdd�}�jD]W\}}t	|t
j�r�t	|�j�sq�j�
|�}��|�|t
j@r}|jd	�d
�|t
j@r�|jd	�d
�qV��|�d}|t
j@r�|�jO}|t
j@r�|�jO}���|||�qV����fdd�}	��|	��r�|�|dur�|dkr�fd
d�}
��d||
����fdd�}��|��fdd�}��|��S)z Return a Future for a poll eventrNc����s��d�dSdSr,��done�
set_result)r��watcherrr�wake_rawm��z#_AsyncPoller.poll.<locals>.wake_rawcs�j�g��R�Sr,)r=�r8)r.r5r&rr�<lambda>rsz#_AsyncPoller.poll.<locals>.<lambda>cs�D]}|��qdSr,)�_clear_io_state)r8�s)�wrapped_socketsrr�_clear_wrapper_iows
�z,_AsyncPoller.poll.<locals>._clear_wrapper_io�poll�rc
s����rdS���rz���WdStyYdSw���r)������dSz
tt���d�}Wnt	yK}z��|�WYd}~dSd}~ww��
|�dS�Nr)rB�	cancelled�cancel�RuntimeError�	exception�
set_exception�superr0rN�	ExceptionrC)r8�result�e)�	__class__rr&rErr�
on_poll_ready�s&
����z(_AsyncPoller.poll.<locals>.on_poll_readycr@r,rArrDrr�trigger_timeout�rGz*_AsyncPoller.poll.<locals>.trigger_timeout���MbP?cs$t�d�r���dS����dS)NrR)�hasattrrRZremove_timeoutrH)r.�timeout_handlerr�cancel_timeout�s
z)_AsyncPoller.poll.<locals>.cancel_timeoutcs���s
���dSdSr,)rBrRrHrDrr�cancel_watcher�s�z)_AsyncPoller.poll.<locals>.cancel_watcher)r"rVrNrWrUrCr'�add_done_callbackr<�
isinstance�_zmq�Socketr1�from_socket�appendr�_add_recv_eventr�_add_send_eventr3r4r:�
call_later)
r&�timeoutrXrYrFrMr6�maskr7r[r\r`ra�rZ)rr.r5r&r_rErLrrNYsb��
�


�








z_AsyncPoller.poll)
r.rr6rr7r2r8r	r#r*)r.rr<rr#r*)r>)r#r?)	rrrr/rr:r=rN�
__classcell__rrrmrr0Is


r0c@seZdZedd��ZdS)�_NoTimercCr+r,rrrrrrR�sz_NoTimer.cancelN)rrr�staticmethodrRrrrrro�sro�T�_AsyncSocket)�boundcs|eZdZUdZdZdZded<eZdZ					d]d^�fd
d�
Z
ed_d`dd��Zd_da�fdd�
Z
ejj
je
_�fdd�Zejjje_	dbdcd"d#�Z	dbddd%d&�Zddd'�ded*d+�Z	dbdfd.d/�Z			dbdgd2d3�Zd4d5�Zdejfdhd6d7�Zd8d9�Zd:d;�Zed_d<d=��Zdddd>�didGdH�ZdjdIdJ�ZdKdL�Z dMdN�Z!dkdOdP�Z"d_dQdR�Z#dSdT�Z$dUdV�Z%dWdX�Z&d_dYdZ�Z'd[d\�Z(�Z)S)lrrNr�_zmq.Socket�_shadow_sockr>�_from_socket�_zmq.Socket | Noner#r*cs�t|tj�rd|}}|durt�j|jd�||_nt�j||fi|��tj�|j�|_|dur?tj	|j
j�d�tdd�t
�|_t
�|_d|_|jj|_dS)N)�shadowz^(io_loop) argument is deprecated in pyzmq 22.2. The currently active loop will always be used.�)�
stacklevelr)rcrdrerV�__init__Z
underlyingrurx�warnings�warnrZr�DeprecationWarningr�
_recv_futures�
_send_futures�_stateZFD�_fd)r&�contextZsocket_type�io_looprvrrmrrr{�s"
�z_AsyncSocket.__init__�cls�type[T]r6r�rrqcCs|||d�S)z.Create an async socket from an existing Socket)rvr�r)r�r6r�rrrrf�sz_AsyncSocket.from_socket�linger�
int | Nonec	sz|js4|jdur4tt|jpg|jpg��}|D]}|j��s/z|j��Wqt	y.Yqwq|�
�t�j|d�dS)N)r�)
�closedr��listrrr�rrBrRrSrJrV�close)r&r��
event_list�eventrmrrr��s�
��z_AsyncSocket.closecs"t��|�}|tkr|�|�|Sr,)rV�getr
�_schedule_remaining_events)r&�keyrXrmrrr�s
z_AsyncSocket.getTF�flagsr2�copy�bool�track�)Awaitable[list[bytes] | list[_zmq.Frame]]cC�|jdt|||d�d�S)zvReceive a complete multipart zmq message.

        Returns a Future whose result will be a multipart message.
        �recv_multipart�r�r�r��r�rhr�r&r�r�r�rrrr�s�z_AsyncSocket.recv_multipart�Awaitable[bytes | _zmq.Frame]cCr�)z�Receive a single zmq frame.

        Returns a Future, whose result will be the received frame.

        Recommend using recv_multipart instead.
        �recvr�r�r�r�rrrr�s	�z_AsyncSocket.recv��nbytesr�r��Awaitable[int]cCs|jd|ft||d�d�S)z�Receive a single zmq frame into a pre-allocated buffer.

        Returns a Future, whose result will be the number of bytes received.
        �	recv_intor�)rrr�)r&�bufr�r�rrrr�&s�z_AsyncSocket.recv_into�	msg_parts�%Awaitable[_zmq.MessageTracker | None]cKs(||d<||d<||d<|jd||d�S)zqSend a complete multipart zmq message.

        Returns a Future that resolves when sending is complete.
        r�r�r��send_multipart�rr)ri)r&r�r�r�r�rrrrr�1sz_AsyncSocket.send_multipart�datarcKs<||d<||d<||d<|�t|||d��|jd||d�S)z�Send a single zmq frame.

        Returns a Future that resolves when sending is complete.

        Recommend using send_multipart instead.
        r�r�r�r��sendr�)�updaterri)r&r�r�r�r�rrrrr�=s
z_AsyncSocket.sendcs>|������fdd�}��|���fdd�}��|��S)zDeserialize with Futuresc
s����r���s���durt�d��d��d�t�dS���r*������dS���}z�|�}WntyL}z��|�WYd}~dSd}~ww��	|�dS)z+Chain result through serialization to recvdNzFuture z completed while awaiting z. A message has been dropped!)
rBrQrTr|r}�RuntimeWarningrUrXrWrC)�_r�ZloadedrY�r8�load�recvdrr�_chainUs"���z)_AsyncSocket._deserialize.<locals>._chaincs$���rdS���r���dSdS)z"Chain cancellation from f to recvdN)rBrQrR)r�)r8r�rr�
_chain_cancelps
�z0_AsyncSocket._deserialize.<locals>._chain_cancel)r"rb)r&r�r�r�r�rr�r�_deserializeQs

z_AsyncSocket._deserializecs��jr	t�tj�����}|��|�tt|�|�����	�����fdd�}��
�r0|��n��|��fdd�}��|��S)zSpoll the socket for events

        returns a Future for the poll results.
        cst���rdS���rz���WdStyYdSw|��r)������dSt����}��|�	�d��dSrP)
rBrQrRrSrTrUrrXrCr�)r8Zevts�r�poll_futurer&rr�
unwrap_result�s
��z(_AsyncSocket.poll.<locals>.unwrap_resultcs0���sz���WdStyYdSwdS)z4Cancel underlying poll if request has been cancelledN)rBrRrSrO)r�rr�cancel_poll�s��z&_AsyncSocket.poll.<locals>.cancel_poll)r�rdZZMQError�ENOTSUP�
_poller_class�registerrrrNr"rBrb)r&rkr��pr�r�rr�rrN{s


	z_AsyncSocket.pollcs�fdd�}|�||�S)z'Add a timeout for a send or recv Futurecs���rdS��t���dSr,)rBrUrd�AgainrrOrr�future_timeout�sz1_AsyncSocket._add_timeout.<locals>.future_timeout)�_call_later)r&rrkr�rrOr�_add_timeout�sz_AsyncSocket._add_timeoutcCs|���||�S)z�Schedule a function to be called later

        Override for different IOLoop implementations

        Tornado and asyncio happen to both have ioloop.call_later
        with the same signature.
        )r'rj)r&�delay�callbackrrrr��sz_AsyncSocket._call_latercCs.|sdSz|�|�WdStyYdSw)z�Make sure that futures are removed from the event list when they resolve

        Avoids delaying cleanup until the next send/recv event,
        which may never come.
        N)�remove�
ValueError)rr�r�rrr�_remove_finished_future�s�z$_AsyncSocket._remove_finished_future)rrrrrr�tuple | None�dict[str, Any] | Noner�
Future | Nonerc
Cs:|p|��}|durd}|duri}|�d�rO|�dd�tj@rOt|j|�}z	||i|��}WntyG}z|�|�WYd}~|Sd}~ww|�	|�|St
}	ttd�rf|jj}
|
dkrf|�
||
d�}	t||||d|	d�}|j�|�|j�t�t@r�|��|jr�||jvr�|�t|j|j|d	��|�t�|S)
z4Add a recv event, returning the corresponding FutureNrr�r�rZRCVTIMEOr]�rrrr�r�r�)r"�
startswithr�rd�DONTWAIT�getattrrurWrUrCror^Zrcvtimeor�rrrgr
r�_handle_recvrbrr��
_add_io_state)r&rrrrr8r��rrYr�
timeout_ms�
_future_eventrrrrh�sJ	��

���
z_AsyncSocket._add_recv_eventc
Csh|p|��}|dvrw|jsw|�dd�}|��}|tjB|d<t|j|�}d}	z
||fi|��}
Wn6tjyP}z|tj@rD|�	|�nd}	WYd}~n d}~wt
yf}z|�	|�WYd}~n
d}~ww|�|
�|	rw|jru|�
�|St}ttd�r�|j�tj�}
|
dkr�|�||
d�}t||d	|||d
�}|j�|�|�t|j|j|d��|�t�|S)z4Add a send event, returning the corresponding Future)r�r�r�rTFN�SNDTIMEOr]rr�r�)r"r�r�r�rdr�r�rur�rUrWrCrr�ror^r�r�rrgrbrr�r�r)r&rrrrr8r�Z
nowait_kwargsr�Zfinish_earlyr�rYrr�r�rrrri
sR
���

���
z_AsyncSocket._add_send_eventc

Cs,|j�t�t@s
dSd}|jr%|j��\}}}}}}|��r!d}nn|js|js-|�t�|dur3dS|��|dkrB|�	d�dS|dkrK|jj
}n|dkrT|jj}n|dkr]|jj}nt
d|����|dtjO<z	||i|��}Wnty�}	z|�|	�WYd}	~	dSd}	~	ww|�	|�dS)zHandle recv eventsNrNr�r�r�zUnhandled recv event type: r�)rur�r
rr�popleftrB�_drop_io_staterRrCr�r�r�r�rdr�rWrU)
r&r8rrrr�rr�rXrYrrrr�Js@�




��z_AsyncSocket._handle_recvc

Cs|j�t�t@s
dSd}|jr%|j��\}}}}}}|��r!d}nn|js|js-|�t�|dur3dS|��|dkrB|�	d�dS|dkrK|jj
}n|dkrT|jj}ntd|����|dt
jO<z
||fi|��}Wnty�}	z|�|	�WYd}	~	dSd}	~	ww|�	|�dS)NrNr�r�zUnhandled send event type: r�)rur�r
rr�r�rBr�rRrCr�r�r�rdr�rWrU)
r&r8rrrrrr�rXrYrrr�_handle_sendus<�



��z_AsyncSocket._handle_sendcCsH|jjrdS|j�t�}|tj@r|��|tj@r|��|�	�dS)z(Dispatch IO events to _handle_recv, etc.N)
rur�r�r
rdrr�rr�r�)r&�fd�eventsZ
zmq_eventsrrr�_handle_events�s

z_AsyncSocket._handle_eventscCsB|jdkrdS|dur|j�t�}||j@r|�d|j�dSdS)zkSchedule a call to handle_events next loop iteration

        If there are still events to handle.
        rN)r�rur�r
r�r�)r&r�rrrr��s

�z'_AsyncSocket._schedule_remaining_eventscCs*|j|kr
|j|B}|_|�|j�dS)zAdd io_state to poller.N�r��_update_handler�r&�staterrrr��s
z_AsyncSocket._add_io_statecCs(|j|@r|j|@|_|�|j�dS)z&Stop poller from watching an io_state.Nr�r�rrrr��s
z_AsyncSocket._drop_io_statecCs|r|��|��dS)zOUpdate IOLoop handler with state.

        zmq FD is always read-only.
        N)r'r�r�rrrr��sz_AsyncSocket._update_handlercCs6|dur|��}|�|j|j|j�|�d|j�dS)z#initialize the ioloop event handlerNr)r'Zadd_handlerrur�r3r�r-rrrr%�sz_AsyncSocket._init_io_statecCs2|j}|jjr
|j}|jdur|j�|�dSdS)zNunregister the ioloop event handler

        called once during close
        N)rur�r�r!Zremove_handler)r&r�rrrrJ�s
�z_AsyncSocket._clear_io_state)Nr>NN)rvrwr#r*r,)r�r�r6rtr�rr#rq)r�r�r#r*)rTF)r�r2r�r�r�r�r#r�)r�r2r�r�r�r�r#r�)r�r2r�r2r#r�)r�rr�r2r�r�r#r�)r�rr�r2r�r�r�r�rrr#r�)r#r�)
rrrr�rr�rr�r#r)NNN)rr)*rrrrr�r�rr0r�r�r{�classmethodrfr�rdrer/r�r�r�r�r�r�r�rrNr�r�rpr�rhrir�r�r�r�r�r�r�r%rJrnrrrmrrr�sd
������*2

�
7=+
)

) r/�
__future__rr|Zasyncior�collectionsr�	functoolsr�	itertoolsr�typingrrr	r
rrZzmqrdr
rrrr ZPollerr0rorqrerrrrrr�<module>s  	w