
    PhI                       d Z ddlmZ ddlmZ  G d de      Z G d de      Z G d d	e      Z	 G d
 de      Z
 G d de      Z G d de	      Z G d de	      Z G d de	e      ZddZdada G d de      Z	 d	 	 	 ddZg dZy)z 0MQ Error classes and functions.    )annotations)EINTRc                  $     e Zd ZdZd fd	Z xZS )DraftFDWarningzRWarning for using experimental FD on draft sockets.

    .. versionadded:: 27
    c                ,    |sd}t         |   |       y )Na!  pyzmq's back-fill socket.FD support on thread-safe sockets is experimental, and may be removed. This warning will go away automatically if/when libzmq implements socket.FD on thread-safe sockets. You can suppress this warning with `warnings.simplefilter('ignore', zmq.error.DraftFDWarning))super__init__)selfmsg	__class__s     C/var/www/html/saasai/venv/lib/python3.12/site-packages/zmq/error.pyr	   zDraftFDWarning.__init__   s     q 
 	    ) __name__
__module____qualname____doc__r	   __classcell__r   s   @r   r   r   
   s    
 r   r   c                      e Zd ZdZy)ZMQBaseErrorz.Base exception class for 0MQ errors in Python.Nr   r   r   r    r   r   r   r      s    8r   r   c                  D    e Zd ZU dZdZded<   ded<   d
ddZddZdd	Zy)ZMQErrorzWrap an errno style error.

    Parameters
    ----------
    errno : int
        The ZMQ errno or None.  If None, then ``zmq_errno()`` is called and
        used.
    msg : str
        Description of the error or None.
    N
int | Noneerrnostrstrerrorc                    ddl m}m} | |       }t        |t              r|| _        | ||      | _        y|| _        y|t        |      | _        y|| _        y)a  Wrap an errno style error.

        Parameters
        ----------
        errno : int
            The ZMQ errno or None.  If None, then ``zmq_errno()`` is called and
            used.
        msg : string
            Description of the error or None.
        r   )r    	zmq_errnoN)zmq.backendr    r"   
isinstanceintr   r   )r
   r   r   r    r"   s        r   r	   zZMQError.__init__-   sR     	4=KEeS!DJ{ ( #{ #E
 #r   c                    | j                   S N)r    r
   s    r   __str__zZMQError.__str__M   s    }}r   c                L    | j                   j                   dt        |        dS )Nz(''))r   r   r   r(   s    r   __repr__zZMQError.__repr__P   s$    ..))*"SYKr::r   )NN)r   r   r   z
str | None)returnr   )	r   r   r   r   r   __annotations__r	   r)   r,   r   r   r   r   r      s(    	 E:M$@;r   r   c                      e Zd ZdZy)ZMQBindErrorznAn error for ``Socket.bind_to_random_port()``.

    See Also
    --------
    .Socket.bind_to_random_port
    Nr   r   r   r   r0   r0   T       r   r0   c                      e Zd ZdZy)NotDonezRaised when timeout is reached while waiting for 0MQ to finish with a Message

    See Also
    --------
    .MessageTracker.wait : object for tracking when ZeroMQ is done
    Nr   r   r   r   r3   r3   ]   r1   r   r3   c                  $     e Zd ZdZd fd	Z xZS )ContextTerminatedz6Wrapper for zmq.ETERM

    .. versionadded:: 13.0
    c                0    ddl m} t        |   |       y )Nr   )ETERM)zmqr7   r   r	   )r
   r   r   r7   r   s       r   r	   zContextTerminated.__init__l   s    r   ignoredr:   r   r   s   @r   r5   r5   f   s    
   r   r5   c                  $     e Zd ZdZd fd	Z xZS )Againz7Wrapper for zmq.EAGAIN

    .. versionadded:: 13.0
    c                0    ddl m} t        |   |       y )Nr   )EAGAIN)r8   r>   r   r	   )r
   r   r   r>   r   s       r   r	   zAgain.__init__x   s     r   r9   r   r   s   @r   r<   r<   r   s    
! !r   r<   c                  >     e Zd ZU dZeZded<   d fd	Z fdZ xZ	S )InterruptedSystemCallzWrapper for EINTR

    This exception should be caught internally in pyzmq
    to retry system calls, and not propagate to the user.

    .. versionadded:: 14.7
    r   r    c                ,    t         |   t               y r'   )r   r	   r   )r
   r   r   r   s      r   r	   zInterruptedSystemCall.__init__   s    r   c                *    t         |          }|dz   S )NzB: This call should have been retried. Please report this to pyzmq.)r   r)   )r
   sr   s     r   r)   zInterruptedSystemCall.__str__   s    GOWWWr   r9   )
r   r   r   r   r   r   r.   r	   r)   r   r   s   @r   r@   r@   ~   s%     EM X Xr   r@   Nc                    | dk(  r^|ddl m}  |       }|dk(  r|syddlm}m} |t
        k(  rt        |      ||k(  rt        |      ||k(  rt        |      t        |      y)zhinternal utility for checking zmq return condition

    and raising the appropriate Exception class
    Nr   )r"   )r>   r7   )
r#   r"   r8   r>   r7   r   r@   r<   r5   r   )rcr   error_without_errnor"   r>   r7   s         r   	_check_rcrH      sn    
 
Rx=-KEA:1%E>'..f_,e^#E**5/!! r   c                  *    e Zd ZdZdZdddZd Zd Zy)ZMQVersionErrorzgRaised when a feature is not provided by the linked version of libzmq.

    .. versionadded:: 14.2
    Nc                \    t         ddlm}  |       a || _        || _        t         | _        y )Nr   )zmq_version)_zmq_versionr8   rL   r   min_versionversion)r
   rN   r   rL   s       r   r	   zZMQVersionError.__init__   s(    '&=L&#r   c                     dt        |        dS )NzZMQVersionError('r+   r   r(   s    r   r,   zZMQVersionError.__repr__   s    "3t9+R00r   c                R    | j                    d| j                   d| j                   S )Nz requires libzmq >= z, have )r   rN   rO   r(   s    r   r)   zZMQVersionError.__str__   s)    ((/0@0@/AWWr   Feature)rN   r   r   r   )r   r   r   r   rN   r	   r,   r)   r   r   r   rJ   rJ      s    
 K$1Xr   rJ   c                    t         ddlm}  |       a t         | k  r$dj                  d | D              }t	        ||      y)zCheck for libzmq

    raises ZMQVersionError if current zmq version is not at least min_version

    min_version_info is a tuple of integers, and will be compared against zmq.zmq_version_info().
    Nr   )zmq_version_info.c              3  2   K   | ]  }t        |        y wr'   rQ   ).0vs     r   	<genexpr>z!_check_version.<locals>.<genexpr>   s     @/?!s1v/?s   )_zmq_version_infor8   rV   joinrJ   )min_version_infor   rV   rN   s       r   _check_versionr_      sF      (,.++hh@/?@@k3// ,r   )	r   r   r0   r   r3   r5   r@   r<   rJ   )NTrS   )r^   z3tuple[int] | tuple[int, int] | tuple[int, int, int]r   r   )r   
__future__r   r   r   RuntimeWarningr   	Exceptionr   r   r0   r3   r5   r<   InterruptedErrorr@   rH   r\   rM   NotImplementedErrorrJ   r_   __all__r   r   r   <module>rf      s    & # ^  99 93;| 3;l< l 	  	 	!H 	!XH&6 X("0  X) X6 0I0	0(
r   