o
    tf                     @  s   d Z ddlmZ ddlmZ G dd deZG dd deZG dd	 d	eZG d
d deZ	G dd deZ
G dd deZG dd deeZd ddZdadaG dd deZ	d!d"ddZg dZdS )#z 0MQ Error classes and functions.    )annotations)EINTRc                   @     e Zd ZdZdS )ZMQBaseErrorz.Base exception class for 0MQ errors in Python.N__name__
__module____qualname____doc__ r   r   R/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/zmq/error.pyr   
       r   c                   @  s>   e Zd ZU dZdZded< ddddZdddZdddZdS )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msg
str | Nonec                 C  sn   ddl m}m} |du r| }t|tr'|| _|du r"||| _dS || _dS |du r2t|| _dS || _dS )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   )strerror	zmq_errnoN)zmq.backendr   r   
isinstanceintr   str)selfr   r   r   r   r   r   r   __init__   s   


zZMQError.__init__returnr   c                 C  s   | j S N)r   r   r   r   r   __str__<   s   zZMQError.__str__c                 C  s   | j j dt|  dS )Nz('z'))	__class__r   r   r   r   r   r   __repr__?   s   zZMQError.__repr__)NN)r   r   r   r   )r   r   )	r   r   r	   r
   r   __annotations__r   r   r    r   r   r   r   r      s   
 
 r   c                   @  r   )ZMQBindErrorznAn error for ``Socket.bind_to_random_port()``.

    See Also
    --------
    .Socket.bind_to_random_port
    Nr   r   r   r   r   r"   C   r   r"   c                   @  r   )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   r   r#   L   r   r#   c                      "   e Zd ZdZd fdd	Z  ZS )ContextTerminatedz6Wrapper for zmq.ETERM

    .. versionadded:: 13.0
    ignoredc                      ddl m} t | d S )Nr   )ETERM)zmqr(   superr   )r   r   r   r(   r   r   r   r   [      zContextTerminated.__init__r&   r&   r   r   r	   r
   r   __classcell__r   r   r+   r   r%   U       r%   c                      r$   )Againz7Wrapper for zmq.EAGAIN

    .. versionadded:: 13.0
    r&   c                   r'   )Nr   )EAGAIN)r)   r2   r*   r   )r   r   r   r2   r+   r   r   r   g   r,   zAgain.__init__r-   r.   r   r   r+   r   r1   a   r0   r1   c                      s2   e Zd ZdZeZd fdd	Z fddZ  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&   c                   s   t  t d S r   )r*   r   r   )r   r   r   r+   r   r   r   x   s   zInterruptedSystemCall.__init__c                   s   t   }|d S )NzB: This call should have been retried. Please report this to pyzmq.)r*   r   )r   sr+   r   r   r   {   s   
zInterruptedSystemCall.__str__r-   )	r   r   r	   r
   r   r   r   r   r/   r   r   r+   r   r3   m   s
    r3   NTc                 C  s~   | dkr=|du rddl m} | }|dkr|sdS ddlm}m} |tkr)t|||kr1t|||kr9t|t	|dS )zhinternal utility for checking zmq return condition

    and raising the appropriate Exception class
    Nr   )r   )r2   r(   )
r   r   r)   r2   r(   r   r3   r1   r%   r   )rcr   Zerror_without_errnor   r2   r(   r   r   r   	_check_rc   s   r7   c                   @  s0   e Zd ZdZdZddddZd	d
 Zdd ZdS )ZMQVersionErrorzgRaised when a feature is not provided by the linked version of libzmq.

    .. versionadded:: 14.2
    NFeaturemin_versionr   r   c                 C  s0   t d u rddlm} | a || _|| _t | _d S )Nr   )zmq_version)_zmq_versionr)   r;   r   r:   version)r   r:   r   r;   r   r   r   r      s   
zZMQVersionError.__init__c                 C  s   dt |  S )NzZMQVersionError('%s')r   r   r   r   r   r       s   zZMQVersionError.__repr__c                 C  s   | j  d| j d| j S )Nz requires libzmq >= z, have )r   r:   r=   r   r   r   r   r      s   zZMQVersionError.__str__r9   )r:   r   r   r   )r   r   r	   r
   r:   r   r    r   r   r   r   r   r8      s    
r8   r9   min_version_info3tuple[int] | tuple[int, int] | tuple[int, int, int]r   r   c                 C  sD   t du rddlm} | a t | k r ddd | D }t||dS )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                 s  s    | ]}t |V  qd S r   r>   ).0vr   r   r   	<genexpr>   s    z!_check_version.<locals>.<genexpr>)_zmq_version_infor)   rB   joinr8   )r@   r   rB   r:   r   r   r   _check_version   s   
rI   )r   r"   r   r#   r%   r3   r1   r8   )NTr?   )r@   rA   r   r   )r
   
__future__r   r   r   	Exceptionr   r   r"   r#   r%   r1   InterruptedErrorr3   r7   rG   r<   NotImplementedErrorr8   rI   __all__r   r   r   r   <module>   s"    5		
