
    Mh                    V    d dl mZ d dlZd dlmZ d dlZd dlmZ  G d de          ZdS )    )annotationsN)select)Pollerc                  .     e Zd ZdZdZd Zd fd	Z xZS )_PollerzReplacement for :class:`zmq.Poller`

    Ensures that the greened Poller below is used in calls to
    :meth:`zmq.Poller.poll`.
    gHzG?c                   g }g }g }| j         D ]9\  }}t          |t          j                  r3|                    |                    t          j                             St          |t                    r|}nbt          |d          r@	 t          |	                                          }n/# t          $ r t          d          w xY wt          d|          |t          j        z  r|                    |           |t          j        z  r|                    |           |t          j        z  r|                    |           ;|||fS )zdReturns three elements tuple with socket descriptors ready
        for gevent.select.select
        filenoz(fileno() must return an valid integer fdzFSocket must be a 0MQ socket, an integer fd or have a fileno() method: )sockets
isinstancezmqSocketappend
getsockoptFDinthasattrr	   	Exception
ValueError	TypeErrorPOLLINPOLLOUTPOLLERR)selfrlistwlistxlistsocketflagsfds          N/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/zmq/green/poll.py_get_descriptorsz_Poller._get_descriptors   sp    !\ 	! 	!MFE&#*-- V..sv66777FC(( ** 	QV]]__--BB  Q Q Q$%OPPPQ  =28= =  
 sz! !R   s{" !R   s{" !R   ue$$s   
!B,,Cc                   |d}|dk     rd}d}d}d}|dk    r#t           j                            |dz            }nd}	 |                                 \  }}}	 t	                                          d          }|s|dk    r||dk    r|                                 S S t           j                            | j                  }	 t          j        |||           n!# t           j        $ r}||ur Y d}~nd}~ww xY w|                                 n# |                                 w xY w# t           j        $ r,}||ur g cY d}~|dk    r|                                 S S d}~ww xY w# |dk    r|                                 w w xY w)zOverridden method to ensure that the green version of
        Poller is used.

        Behaves the same as :meth:`zmq.core.Poller.poll`
        Nr"   r   g     @@)	geventTimeout	start_newr!   superpollcancel_gevent_bug_timeoutr   )
r   timeoutr   r   r   toutevents_bug_timeoutt	__class__s
            r    r(   z_Poller.poll5   s    ?GQ;;GQ;;>++Gf,<==DDD	"&"7"7"9"9E5%*a "W\\!& {{   &~778PQQ*M%6666~   ,, -,,,, !''))))L''))))*" ~ 	 	 	}}IIIII{{ 	
 {{ ss    AD+ $D+ C D C9*C4/D 4C99D <D+ D''D+ +E&:E! E&E) !E&&E) )F)r"   )__name__
__module____qualname____doc__r*   r!   r(   __classcell__)r0   s   @r    r   r   
   s_           %  %  %D0 0 0 0 0 0 0 0 0 0    r   )
__future__r   r$   r   r   r   _original_Pollerr    r6   r    <module>r:      s    " " " " " "        



 * * * * * *[ [ [ [ [ [ [ [ [ [r6   