o
    i	
                     @   s   d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
ZddlmZmZ G dd deZG d	d
 d
eZG dd dZG dd dZG dd deeZG dd deeZee_G dd deje ZdS )zUFuture-returning APIs for tornado coroutines.

.. seealso::

    :mod:`zmq.asyncio`

    N)AnyType)Future)IOLoop)_AsyncPoller_AsyncSocketc                   @   s   e Zd ZdS )CancelledErrorN)__name__
__module____qualname__ r   r   O/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/eventloop/future.pyr      s    r   c                   @   s    e Zd ZdZdd Zdd ZdS )_TornadoFuturez2Subclass Tornado Future, reinstating cancellation.c                 C   s   |   rdS | t  dS )NFT)doneset_exceptionr   selfr   r   r   cancel   s   z_TornadoFuture.cancelc                 C   s   |   o
t|  tS N)r   
isinstance	exceptionr   r   r   r   r   	cancelled$   s   z_TornadoFuture.cancelledN)r	   r
   r   __doc__r   r   r   r   r   r   r      s    r   c                   @      e Zd Zdd Zdd ZdS )_CancellableTornadoTimeoutc                 C   s   || _ || _d S r   )looptimeout)r   r   r   r   r   r   __init__)   s   
z#_CancellableTornadoTimeout.__init__c                 C   s   | j | j d S r   )r   remove_timeoutr   r   r   r   r   r   -   s   z!_CancellableTornadoTimeout.cancelN)r	   r
   r   r   r   r   r   r   r   r   (       r   c                   @   s<   e Zd ZU eZeej ed< e	j
Ze	jZdd Zdd ZdS )_AsyncTornado_Futurec                 C   s   t  S r   )r   currentr   r   r   r   _default_loop9   s   z_AsyncTornado._default_loopc                 C   s   |   }|||}t||S r   )	_get_loop
call_laterr   )r   delaycallbackio_loopr   r   r   r   _call_later<   s   
z_AsyncTornado._call_laterN)r	   r
   r   r   r!   r   asyncior   __annotations__r   READ_READWRITE_WRITEr#   r)   r   r   r   r   r    4   s   
 r    c                   @   r   )Pollerc                    s   | | fdd| dS )z"Schedule callback for a raw socketc                     s     S r   r   )argsfr   r   <lambda>E   s    z*Poller._watch_raw_socket.<locals>.<lambda>N)add_handler)r   r   socketevtr3   r   r2   r   _watch_raw_socketC   s   zPoller._watch_raw_socketc                 G   s   |D ]}| | qdS )z$Unschedule callback for a raw socketN)remove_handler)r   r   socketsr6   r   r   r   _unwatch_raw_socketsG   s   zPoller._unwatch_raw_socketsN)r	   r
   r   r8   r;   r   r   r   r   r0   B   r   r0   c                   @   s   e Zd ZeZdS )SocketN)r	   r
   r   r0   _poller_classr   r   r   r   r<   M   s    r<   c                       sB   e Zd ZdZdZedd Zdd dededdf fdd	Z  Z	S )
ContextNc                 C   s
   t | |S r   )r<   )r   socket_typer   r   r   _socket_classZ   s   
zContext._socket_classr   r1   kwargsreturnc                    sD   | dd }|d urtj| jj dtdd t j|i | d S )Nr(   z^(io_loop) argument is deprecated in pyzmq 22.2. The currently active loop will always be used.   )
stacklevel)popwarningswarn	__class__r	   DeprecationWarningsuperr   )r   r1   rA   r(   rH   r   r   r   ^   s   zContext.__init__)
r	   r
   r   	_instancer(   staticmethodr@   r   r   __classcell__r   r   rK   r   r>   T   s    
&r>   )r   r*   rF   typingr   r   tornado.concurrentr   tornado.ioloopr   zmq_zmqzmq._futurer   r   	Exceptionr   r   r   r    r0   r<   r@   r>   r   r   r   r   <module>   s     