
    i5                     f   d dl mZmZ d dlZg dZd dlmZ d dlmZ d dl	m
Z
 e
j        Ze
j        Z eed          r:ej                            d          s
J d	            ej        Zej        Zej        Znd
 xZxZZe                                 d dlmZ d dlmZ  G d de          Z eeee          Zej        Zej        Zej        Zej         Z!ej"        Z#ej$        Z%ej&        Z'ej(        Z)ej*        Z+ej,        Z-ej.        Z/ej0        Z1ej2        Z3ej4        Z5ej6        Z7ej8        Z9ej:        Z;ej<        Z=ej        ej         z  Z>ej?        Z@ejA        ZBejC        ZDejE        ZFejG        ZHejI        ZJejK        ZLejM        ZNejO        ZPejQ        ZRejS        ZTd dlmUZU eUZVd ZWd ZXejC        dfejE        dfejY        dfejZ        dfejG        dfejI        dfejK        dfej[        dfejM        dfejQ        dfejS        dfgZ\ e]d e\D                       Z^d Z_ej`        d          dk    reaebfZcedfZend dlfZfefjc        fZcedefjg        fZed  Zhd! Zid" Zjd# Zkd$ Zld% Zmd& Znd d'lmoZo d d(l	mpZq eqjr        Zr ee           G d) d*eo                      Zset                                d+             Zud, Zvdawejx        ZxdS )-    )absolute_importprint_functionN)get_versionget_header_versionsupported_backendsrecommended_backendsembeddable_backendstimeloop)implementer)ILoop)	_corecffivfd_openwinz$vfd functions only needed on windowsc                     | S N )fds    @/usr/local/lib/python3.11/dist-packages/gevent/libev/corecffi.py<lambda>r   "   s    r     )AbstractCallbacks)assign_standard_callbacksc                   &    e Zd Zd Zd Zd Zd ZdS )
_Callbacksc                 <    |\  }}}t          j        | |           d S r   )r   python_check_callback)selfargs_loopwatcher_ptr_eventss        r   r   z _Callbacks.python_check_callback:   s)     '+#{G/kBBBBBr   c                     |C|j         j        }d|v r|d         S d|v r't          |d                   dk    r|d         d         S t          j        | |          S )Nr!   r         )tb_framef_localslenr   _find_watcher_ptr_in_traceback)r   tbls      r   r)   z)_Callbacks._find_watcher_ptr_in_tracebackD   se    >$A!!''{{s1V9~~22y|# ?bIIIr   c                 0    t          j        | |           d S r   )r   python_prepare_callback)r   	_loop_ptrr!   r"   s       r   r-   z"_Callbacks.python_prepare_callbackM   s    1$DDDDDr   c                 l    t                               d|          j        }|                     |          S )Nzstruct ev_watcher*)fficastdatafrom_handle)r   r!   loop_handles      r   _find_loop_from_c_watcherz$_Callbacks._find_loop_from_c_watcherP   s-    hh3[AAF,,,r   N)__name__
__module____qualname__r   r)   r-   r5   r   r   r   r   r   7   sY        C C CJ J JE E E- - - - -r   r   )EVENTSc                  l    dt                                           t                                           fz  S Nzlibev-%d.%02d)libevev_version_majorev_version_minorr   r   r   r   r   ~   s*    e44668N8N8P8PQQQr   c                  8    dt           j        t           j        fz  S r;   )r<   EV_VERSION_MAJOREV_VERSION_MINORr   r   r   r   r      s    e4e6LMMMr   portkqueuelinux_iouring	linux_aioepollpollselectnoenv	forkchecksignalfd	nosigmaskc              #   $   K   | ]\  }}||fV  d S r   r   ).0flagstrings      r   	<genexpr>rQ      s*      BB$vtnBBBBBBr   c                     g }t           D ])\  }}| |z  r|                    |           | | z  } | s n*| r|                    |            |S r   )_flagsappend)flagsresultcodevalues       r   _flags_to_listrY      st    F  e4< 	!MM%   $ 	E	 eMr   r$   c                    | sdS t          | t                    r| S d}	 t          | t                    r|                     d          } | D ]:}|                                                                }|r|t          |         z  };n^# t          $ rQ}t          d|dd	                    t          t                                                                        d }~ww xY w|S )Nr   ,zInvalid backend or flag: z
Possible values: z, )
isinstanceinteger_types
basestringsplitstriplower_flags_str2intKeyError
ValueErrorjoinsortedkeys)rU   rV   rX   exs       r   _flags_to_intri      s    q%'' F~eZ(( 	%KK$$E 	0 	0EKKMM''))E 0.//	0  ~ ~ ~jrrrSWS\S\]cdrdwdwdydy]z]zS{S{S{|}}}~Ms   A'B 
C"ACC"c                 h    t          | t                    rt          |           S t          |           S r   )r\   r]   hexstr)rO   s    r   _str_hexrm      s,    $&& 4yyt99r   c                 &   g }| t           j        z  } | sd S | t           j        z  st          d| z            | t                                           z  s>d t          |           D             }t          dd                    |          z            d S )NzInvalid value for backend: 0x%xc                 ,    g | ]}t          |          S r   )rm   )rN   xs     r   
<listcomp>z _check_flags.<locals>.<listcomp>   s    >>>18A;;>>>r   zUnsupported backend: %s|)r<   EVBACKEND_MASKEVBACKEND_ALLrd   ev_supported_backendsrY   re   )rU   as_lists     r   _check_flagsrw      s    G	U!!E 5&& D:UBCCC5..000 H>>u(=(=>>>2SXXg5F5FFGGGH Hr   c                  N    t          t                                                    S r   )rY   r<   ru   r   r   r   r   r      s    %5577888r   c                  N    t          t                                                    S r   )rY   r<   ev_recommended_backendsr   r   r   r   r      s    %7799:::r   c                  N    t          t                                                    S r   )rY   r<   ev_embeddable_backendsr   r   r   r	   r	      s    %6688999r   c                  4    t                                           S r   )r<   ev_timer   r   r   r
   r
      s    ==??r   )AbstractLoop)watcherc                       e Zd ZdZdZdZdZdZd*dZd Z	d Z
d	 Zd
 Zd Zd Z fdZd Z fdZd Zd Zed             Zed             Z fdZd+dZd Zd Zd Zej        fdZd Zd Z d Z!d Z"ed             Z#ed              Z$ed!             Z%ed"             Z&ed#             Z'd$ Z(e)j*        d%k    rd& Z+d' Z,d( Z-ed)             Z. xZ/S ),r   gh㈵>Nzstruct ev_check *zstruct ev_prepare *zstruct ev_timer *c                     t          j        | t          t          t          ||           t          t                              | j                            | _        d S r   )	r   __init__r0   r<   	_watchersboolev_is_default_loop_ptr_default)r   rU   defaults      r   r   zloop.__init__  s@    dC	5'JJJU55di@@AAr   c                    t          |          }t          |           |t          j        z  }|t          j        z  }|d}|r0t                              |          }|st          d|d          n/t                              |          }|st          d|d          |st          t          | j
                   t                              ||           |S )NTzev_default_loop(z) failedzev_loop_new()ri   rw   r<   EVFLAG_NOENVEVFLAG_FORKCHECKgevent_ev_default_loopSystemErrorev_loop_newSYSERR_CALLBACKset_syserr_cb_handle_syserrev_set_userdata)r   rU   r   c_flagsptrs        r   
_init_loopzloop._init_loop  s    &&W5%%5))?G 	J..w77C N!k'''"LMMMN ##G,,C J!kggg"HIII 	/o-$-... 	c3'''
r   c                     t                               | j        t           j                   | j        | j        _        t                               | j        | j                   |                                  d S r   )	r<   ev_check_init_checkr   _handle_to_selfr2   ev_check_startr   unrefr   s    r   _init_and_start_checkzloop._init_and_start_check  sU    DK)DEEE/TY444

r   c                     t                               | j        t           j                   t                               | j        | j                   |                                  d S r   )r<   ev_prepare_init_preparer-   ev_prepare_startr   r   r   s    r   _init_and_start_preparezloop._init_and_start_prepare!  sH    dmU-JKKKty$-888

r   c                 ^    t                               | j        t           j        dd           d S )Ng        )r<   ev_timer_init_timer0gevent_noopr   s    r   _init_callback_timerzloop._init_callback_timer&  s'    DL%*;S#FFFFFr   c                 P    t                               | j        | j                   d S r   )r<   ev_timer_stopr   r   r   s    r   _stop_callback_timerzloop._stop_callback_timer)  s"    DIt|44444r   c                 P    t                               | j        | j                   d S r   )r<   ev_timer_startr   r   r   s    r   _start_callback_timerzloop._start_callback_timer,  s"    TY55555r   c                 6   t          t          |                                            t                              | j                  r9|                                  t                              | j        | j                   t                              | j	                  r9|                                  t          
                    | j        | j	                   t                              | j                  r!t                              | j                   d S d S r   )superr   _stop_aux_watchersr<   ev_is_activer   refev_prepare_stopr   r   ev_check_stopr   r   r   	__class__s    r   r   zloop._stop_aux_watchers/  s    dD,,...dm,, 	<HHJJJ!!$)T];;;dk** 	8HHJJJ	4;777dl++ 	.-----	. 	.r   c                 .    |                                   d S r   )r   r   s    r   _setup_for_run_callbackzloop._setup_for_run_callback:  s    
 	




r   c                     | j         rUt          t          |                                            t	                      d         | j        k    rt          d            d S d S d S )Nr   )r   r   r   destroyglobalsr   r   r   s    r   r   zloop.destroyA  sh    9 	$$%%'''yy*+t/BBBd#####		$ 	$ CBr   c                 6    t                               |          S r   )r<   ev_userdatar   r   s     r   _can_destroy_loopzloop._can_destroy_loopI  s      %%%r   c                 J   t                               |t          j                   t                               |           t                               | j                   t                               | j                   t           	                    | j
                   | `| `| `
d S r   )r<   r   r0   NULLev_loop_destroygevent_zero_preparer   gevent_zero_checkr   gevent_zero_timerr   r   s     r   _destroy_loopzloop._destroy_loopM  s    c38,,,c"""!!$-000,,,---MKLLLr   c                     t           j        S r   )r<   	EV_MAXPRIr   s    r   MAXPRIzloop.MAXPRI[  
    r   c                     t           j        S r   )r<   	EV_MINPRIr   s    r   MINPRIzloop.MINPRI_  r   r   c                     t          t          |                               ||||           t                              | j        t          j                   d S r   )r   r   _default_handle_errorr<   ev_breakr   EVBREAK_ONE)r   contexttyperX   r*   r   s        r   r   zloop._default_handle_errorc  sF    dD//ubIIIty%"344444r   Fc                     d}|r|t           j        z  }|r|t           j        z  }t                               | j        |           d S Nr   )r<   EVRUN_NOWAIT
EVRUN_ONCEev_runr   )r   nowaitoncerU   s       r   runzloop.rung  sM     	(U''E 	&U%%ETY&&&&&r   c                 D    t                               | j                   d S r   )r<   ev_loop_forkr   r   s    r   reinitzloop.reinitp  s    49%%%%%r   c                 D    t                               | j                   d S r   )r<   ev_refr   r   s    r   r   zloop.refs  s    TYr   c                 D    t                               | j                   d S r   )r<   ev_unrefr   r   s    r   r   z
loop.unrefv  s    ty!!!!!r   c                 F    t                               | j        |           d S r   )r<   r   r   )r   hows     r   break_zloop.break_y  s    ty#&&&&&r   c                 D    t                               | j                   d S r   )r<   	ev_verifyr   r   s    r   verifyzloop.verify|  s    	"""""r   c                 @    t                               | j                  S r   )r<   ev_nowr   r   s    r   nowzloop.now  s    ||DI&&&r   c                 D    t                               | j                   d S r   )r<   ev_now_updater   r   s    r   
update_nowzloop.update_now  s    DI&&&&&r   c                 d    d| j         j        t          |           |                                 fz  S )Nz<%s at 0x%x %s>)r   r6   id_formatr   s    r   __repr__zloop.__repr__  s'     DN$;RXXt||~~#VVVr   c                 @    t                               | j                  S r   )r<   ev_iterationr   r   s    r   	iterationzloop.iteration  s    !!$),,,r   c                 @    t                               | j                  S r   )r<   ev_depthr   r   s    r   depthz
loop.depth  s    ~~di(((r   c                 @    t                               | j                  S r   )r<   
ev_backendr   r   s    r   backend_intzloop.backend_int  s    	***r   c                 r    t                               | j                  }t          D ]\  }}||k    r|c S |S r   )r<   r   r   rS   )r   backendkeyrX   s       r   r   zloop.backend  sF    ""49--  	 	JCg~~ r   c                 @    t                               | j                  S r   )r<   ev_pending_countr   r   s    r   
pendingcntzloop.pendingcnt  s    %%di000r   c                     t                               | j                  }t                               | j        |d           t                               | j                  }||k    S )Ni  )r<   r  r   ev_feed_fd_event)r   r   pending_beforepending_afters       r   
closing_fdzloop.closing_fd  sQ    //	::ty"f555..ty99~--r   win32c                 8    t                                            d S r   )r<   gevent_install_sigchld_handlerr   s    r   install_sigchldzloop.install_sigchld  s    0022222r   c                 8    t                                            d S r   )r<   gevent_reset_sigchld_handlerr   s    r   reset_sigchldzloop.reset_sigchld  s    ..00000r   c                 R    | j         rt          r| j         j        }|dk    r|S d S d S d S r   )r   LIBEV_EMBED
backend_fd)r   r   s     r   filenozloop.fileno  sH    9 	 	 %BQww		 	 	 	 wr   c                 X    | j         st          d          t          r| j         j        S dS )Nzoperation on destroyed loop)r   rd   r  	activecntr   s    r   r  zloop.activecnt  s3    y 	<:;;; 	'9&&rr   )NN)FF)0r6   r7   r8   approx_timer_resolutionerror_handler_CHECK_POINTER_PREPARE_POINTER_TIMER_POINTERr   r   r   r   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r   r<   r   r   r   r   r   r   r   r   r   r   r  r  sysplatformr  r  r  r  __classcell__)r   s   @r   r   r      s        &M(N,(NB B B B  ,    
G G G5 5 56 6 6	. 	. 	. 	. 	.  $ $ $ $ $& & &     X   X5 5 5 5 5' ' ' '& & &     " " " * ' ' ' '# # #' ' '' ' 'W W W - - X- ) ) X) + + X+   X 1 1 X1. . . |w	3 	3 	3	1 	1 	1     X    r   r   c                     	 t                               |           } t          | t           j                   d S #  t	          d             xY wr   )r0   rP   r   errnor   )msgs    r   
_syserr_cbr"    sH    jjooSY'''''ds	   48 A
c                     | (t                               t          j                   d ad S t          |           r(t                               t           j                   | ad S t          d|           )NzExpected callable or None, got )r<   ev_set_syserr_cbr0   r   r   callabler"  	TypeError)callbacks    r   r   r     sm    sx(((	(		 Lu/000"ixxJKKKr   )y
__future__r   r   r  __all__zope.interfacer   gevent._interfacesr   gevent.libevr   r0   libr<   hasattrr  
startswithr   vfd_freevfd_getgevent_set_ev_allocgevent._ffi.loopr   r   r   
_callbacksEV_UNDEFUNDEFEV_NONENONEEV_READREADEV_WRITEWRITEEV_TIMERTIMEREV_PERIODICPERIODIC	EV_SIGNALSIGNALEV_CHILDCHILDEV_STATSTATEV_IDLEIDLE
EV_PREPAREPREPAREEV_CHECKCHECKEV_EMBEDEMBEDEV_FORKFORK
EV_CLEANUPCLEANUPEV_ASYNCASYNC	EV_CUSTOMCUSTOMEV_ERRORERROR	READWRITEr   r   r   r   EVBACKEND_PORTBACKEND_PORTEVBACKEND_KQUEUEBACKEND_KQUEUEEVBACKEND_EPOLLBACKEND_EPOLLEVBACKEND_POLLBACKEND_POLLEVBACKEND_SELECTBACKEND_SELECTr   	FORKCHECKEVFLAG_NOINOTIFY	NOINOTIFYEVFLAG_SIGNALFDSIGNALFDEVFLAG_NOSIGMASK	NOSIGMASKr9   GEVENT_CORE_EVENTSr   r   EVBACKEND_IOURINGEVBACKEND_LINUXAIOr   rS   dictrb   rY   version_infobytesrl   r^   intr]   __builtin__longri   rm   rw   r   r   r	   r
   r   r   r   _events_to_strr   
def_externr"  r   r   r  r   r   r   <module>rv     s   7 6 6 6 6 6 6 6 



   ' & & & & & $ $ $ $ $ $ " " " " " "m
75* 2 <""5))QQ+QQQQ~H~HmGG$1M1H1x'        / . . . . . 6 6 6 6 6 6- - - - -" - - -: '&sE:>>
 	}}	}}

}

	MEN*			#'%#'"	"	 "	 $ # # # # # R R RN N N 6"
X&
o.
{+
G$
6"
X&
!
[)
J'
[)
  BB6BBBBB
 
 
 A!JFMM(*J+*+M  &  	H 	H 	H9 9 9; ; ;: : :   * ) ) ) ) ) . - - - - -) UP P P P P< P P Pf   	L 	L 	L r   