
    Zd              	       x   d Z ddlmZ ddlmZmZ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	e          ZddZdada G d de          Z	 ddeee         eeef         eeeef         f         defdZg dZdS )z 0MQ Error classes and functions.    )EINTR)OptionalTupleUnionc                       e Zd ZdZdS )ZMQBaseErrorz.Base exception class for 0MQ errors in Python.N__name__
__module____qualname____doc__     )lib/python3.11/site-packages/zmq/error.pyr   r   
   s        8888r   r   c                   p    e Zd ZU dZdZee         ed<   d	dee         dee         fdZ	defdZ
def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 : string
        Description of the error or None.
    Nerrnomsgc                     ddl m}m} |
 |            }t          |t                    r$|| _        | ||          | _        dS || _        dS |t          |          | _        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   s        r   __init__zZMQError.__init__   s     	43333333=IKKEeS!! 
	$DJ{ ( #{ #E

 #r   returnc                     | j         S N)r   r   s    r   __str__zZMQError.__str__<   s
    }r   c                 @    | j         j         dt          |            dS )Nz('z'))	__class__r
   r   r!   s    r   __repr__zZMQError.__repr__?   s$    .)::SYY::::r   )NN)r
   r   r   r   r   r   r   __annotations__r   r   r"   r%   r   r   r   r   r      s         	 	  E8C=$ $hsm $# $ $ $ $@    ;# ; ; ; ; ; ;r   r   c                       e Zd ZdZdS )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                       e Zd ZdZdS )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   r+   c                   $     e Zd ZdZd fd	Z xZS )ContextTerminatedz6Wrapper for zmq.ETERM

    .. versionadded:: 13.0
    ignoredc                 V    ddl m} t                                          |           d S )Nr   )ETERM)zmqr0   superr   )r   r   r   r0   r$   s       r   r   zContextTerminated.__init__[   s3    r   r.   r.   r
   r   r   r   r   __classcell__r$   s   @r   r-   r-   U   sG         
                   r   r-   c                   $     e Zd ZdZd fd	Z xZS )Againz7Wrapper for zmq.EAGAIN

    .. versionadded:: 13.0
    r.   c                 V    ddl m} t                                          |           d S )Nr   )EAGAIN)r1   r:   r2   r   )r   r   r   r:   r$   s       r   r   zAgain.__init__g   s3         r   r3   r4   r6   s   @r   r8   r8   a   sG         
! ! ! ! ! ! ! ! ! !r   r8   c                   2     e Zd ZdZeZ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.   c                 T    t                                          t                     d S r    )r2   r   r   )r   r   r   r$   s      r   r   zInterruptedSystemCall.__init__x   s!    r   c                 N    t                                                      }|dz   S )NzB: This call should have been retried. Please report this to pyzmq.)r2   r"   )r   sr$   s     r   r"   zInterruptedSystemCall.__str__{   s"    GGOOWWWr   r3   )	r
   r   r   r   r   r   r   r"   r5   r6   s   @r   r<   r<   m   sp          E           X X X X X X X X Xr   r<   NTc                     | dk    rw|ddl m}  |            }|dk    r|sdS ddlm}m} |t
          k    rt          |          ||k    rt          |          ||k    rt          |          t          |          dS )zhinternal utility for checking zmq return condition

    and raising the appropriate Exception class
    Nr   )r   )r:   r0   )
r   r   r1   r:   r0   r   r<   r8   r-   r   )rcr   error_without_errnor   r:   r0   s         r   	_check_rcrD      s    
 
Rxx=------IKKEA::1:F%%%%%%%%E>>'...f__,,e^^#E***5//!! xr   c                   4    e Zd ZdZdZd	dedefdZd Zd ZdS )
ZMQVersionErrorzgRaised when a feature is not provided by the linked version of libzmq.

    .. versionadded:: 14.2
    NFeaturemin_versionr   c                 h    t           ddlm}  |            a || _        || _        t           | _        d S )Nr   )zmq_version)_zmq_versionr1   rJ   r   rH   version)r   rH   r   rJ   s       r   r   zZMQVersionError.__init__   s?    ''''''&;==L&#r   c                 &    dt          |           z  S )NzZMQVersionError('%s')r   r!   s    r   r%   zZMQVersionError.__repr__   s    &T22r   c                 N    d                     | j        | j        | j                  S )Nz!{} requires libzmq >= {}, have {})formatr   rH   rL   r!   s    r   r"   zZMQVersionError.__str__   s*    299HL
 
 	
r   rG   )	r
   r   r   r   rH   r   r   r%   r"   r   r   r   rF   rF      sj         
 K$ $C $c $ $ $ $3 3 3
 
 
 
 
r   rF   rG   min_version_infor   c                     t           ddlm}  |            a t           | k     r/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              3   4   K   | ]}t          |          V  d S r    rN   ).0vs     r   	<genexpr>z!_check_version.<locals>.<genexpr>   s(      @@!s1vv@@@@@@r   )_zmq_version_infor1   rT   joinrF   )rR   r   rT   rH   s       r   _check_versionr\      sp      ((((((,,..+++hh@@/?@@@@@k3/// ,+r   )r   r(   r   r+   r-   r<   r8   rF   )NTrQ   )r   r   r   typingr   r   r   	Exceptionr   r   r(   r+   r-   r8   InterruptedErrorr<   rD   rZ   rK   NotImplementedErrorrF   r   r   r\   __all__r   r   r   <module>rb      s!   & &
       ) ) ) ) ) ) ) ) ) )9 9 9 9 99 9 9 92; 2; 2; 2; 2;| 2; 2; 2;j    <       l   	  	  	  	  	  	  	  	 	! 	! 	! 	! 	!H 	! 	! 	!X X X X XH&6 X X X&" " " "0  
 
 
 
 
) 
 
 
> 0 0E#Jc3hsC}9MMN0	0 0 0 0(	 	 	r   