
    iq                     h   d dl Z d dlZd dlmZ g Zej        Zej        Zd dlm	Z
 d dlmZ d dlmZ  G d de          Z e            Z e                    d	          ej                  Zej        d
fej        dfgZd Z G d de          Z G d de          Z G d de          Z G d de
j	                  Z	 G d de
j        e	          Z G d de          Z G d dee
j         e	          Z! G d dee
j"        e	          Z# G d de
j$        e	          Z%e% e&            d<    G d  d!e
j'        e	          Z( G d" d#e
j)        e	          Z* G d$ d%e
j+        e	          Z, G d& d'e
j-        e	          Z. G d( d)e
j/        e	          Z0 G d* d+e0          Z1 G d, d-e
j2        e	          Z3dS ).    N)	_corecffi)watcher)_dbg)_check_fd_validc                       e Zd ZdZd ZdS )_ClosingWatchers c                 f    	 | |= d S # t           $ r t          dt          j                   Y d S w xY w)Nzgevent error: Unable to remove closing watcher from keepaliveset. Has the module state been corrupted or executed more than once?)file)KeyErrorprintsysstderr)selfobjs     ?/usr/local/lib/python3.11/dist-packages/gevent/libuv/watcher.pyremovez_ClosingWatchers.remove   s`    		S			 	 	 	 RZ      	s    %00N)__name__
__module____qualname__	__slots__r   r	       r   r   r      s(        I
 
 
 
 
r   r   _uv_close_callback)nameREADWRITEc                 6    t          j        | t                    S N)_baseevents_to_str_events)eventss    r   _events_to_strr#   8   s    vw///r   c                       e Zd ZdS )UVFuncallErrorN)r   r   r   r	   r   r   r%   r%   =   s        Dr   r%   c                       e Zd Zd Zd ZdS )libuv_error_wrapperc                     || _         d S r   )_libuv)r   uvs     r   __init__zlibuv_error_wrapper.__init__H   s    r   c                     t          | j        |          t          j                  fd            }t	          | ||           |S )Nc            
      j   | r%t          | d         t                    r
| dd          }  | i |dk     rt          }t          j        k    rfd} |t          t                              t                                                  	                    d          dz   t                              t          
                                        	                    d          z             dz   t          |           z   dz   t          |          z   dz   t                    z             S )	Nr      c                 >    t          t                    |           S r   )OSErrorabs)msgress    r   <lambda>z?libuv_error_wrapper.__getattr__.<locals>.wrap.<locals>.<lambda>V   s    ws3xx'='= r   ascii z Args: z	 KWARGS: z
 UVError: )
isinstancer   r%   libuvUV_EBADFstrffistringuv_err_namedecodeuv_strerrorrepr)argskwargskindr3   
libuv_funcs      @r   wrapz-libuv_error_wrapper.__getattr__.<locals>.wrapN   sL     
47G44  ABBx*d-f--C377%%.((====Dd

5#4#4S#9#9::AA'JJ**U%6%6s%;%;<<CCGLLM N N    #'t**- 0;; >B&\\J #	# &)XX	.   Jr   )getattrr)   	functoolswrapssetattr)r   r   rE   rD   s      @r   __getattr__zlibuv_error_wrapper.__getattr__K   s[    T[$//
		$	$	 	 	 	 
%	$	" 	dD!!!r   N)r   r   r   r+   rJ   r	   r   r   r'   r'   @   s2              r   r'   c                        e Zd Zd Zd Zd ZdS )ffi_unwrapperc                     || _         d S r   )_ffi)r   ffs     r   r+   zffi_unwrapper.__init__i   s    			r   c                 ,    t          | j        |          S r   )rF   rN   )r   r   s     r   rJ   zffi_unwrapper.__getattr__l   s    ty$'''r   c                 p    t          |t                    sJ | j                            t          |          S r   )r7   r'   rN   	addressofr8   )r   libr   s      r   rR   zffi_unwrapper.addressofo   s1    #233333y""5$///r   N)r   r   r   r+   rJ   rR   r	   r   r   rL   rL   e   sA          ( ( (0 0 0 0 0r   rL   c                       e Zd Z ee          Z ee          ZdZ	dZ
ed             Zd Zd Zd Zd Zej        d             Zej        d	             Zd
 Zd Zd Zd Z eee          Zd ZdS )r   r*   z%s_tc                    | j                             d|          }t          j        |_        |j        rKt                              |          s3|t          |<   t          	                    |t          j
                   d S d S d S )Nzuv_handle_t*)_FFIcastr;   NULLdatatyper8   uv_is_closing_closing_watchersuv_closer   )clsffi_watcherffi_handle_watchers      r   _watcher_ffi_closezwatcher._watcher_ffi_close{   s    < !X]]>;GG"%(" 	B5+>+>{+K+K 	B
 5@01NN;(@AAAAA	B 	B 	B 	Br   c                     || _         d S r   )refr   rc   s     r   _watcher_ffi_set_init_refz!watcher._watcher_ffi_set_init_ref   s    r   c                 >     | j         | j        j        | j        g|R  S r   _watcher_initloopptr_watcherr   rA   s     r   _watcher_ffi_initzwatcher._watcher_ffi_init   s1    !t!$)-"&-)#') ) ) 	)r   c                 F    |                      | j        | j                   d S r   )_watcher_startrk   _watcher_callbackr   s    r   _watcher_ffi_startzwatcher._watcher_ffi_start   s#    DM4+ABBBBBr   c                 L    | j         r|                     | j                    d S d S r   )rk   _watcher_stoprq   s    r   _watcher_ffi_stopzwatcher._watcher_ffi_stop   s4    = 	.
 t}-----	. 	.r   c                 D    t                               | j                   d S r   )r8   uv_refrk   rq   s    r   _watcher_ffi_refzwatcher._watcher_ffi_ref   s    T]#####r   c                 D    t                               | j                   d S r   )r8   uv_unrefrk   rq   s    r   _watcher_ffi_unrefzwatcher._watcher_ffi_unref   s    t}%%%%%r   c                     d S r   r	   rq   s    r   _watcher_ffi_start_unrefz watcher._watcher_ffi_start_unref       r   c                     d S r   r	   rq   s    r   _watcher_ffi_stop_refzwatcher._watcher_ffi_stop_ref   r~   r   c                 l    | j         d S t          t                              | j                             S r   )rk   boolr8   
uv_has_refrq   s    r   _get_refzwatcher._get_ref   s-    = 4E$$T]33444r   c                 ^    |r|                                   d S |                                  d S r   )rx   r{   )r   values     r   _set_refzwatcher._set_ref   s:     	&!!#######%%%%%r   c                      t          d          )NzNot implemented)	Exception)r   _revents	_callback_argss       r   feedzwatcher.feed   s    )***r   N)r   r   r   rL   r;   rV   r'   r8   _LIB_watcher_prefix_watcher_struct_patternclassmethodra   re   rm   rr   ru   r   only_if_watcherrx   r{   r}   r   r   r   propertyrc   r   r	   r   r   r   r   t   s6       =Du%%DO$&B &B [&BP  ) ) )C C C. . . $ $ $ & & &    5 5 5& & & (8X
&
&C+ + + + +r   r   c                   V    e Zd ZdZdZdZej        ej        z  ej	        z  Z
dZd fd	Zd Zej        d	             Zd
 Zd Z eee          Zd Zej                            d          rej        j        Z G d de          Zd Zd Z d Z!d Z"d Z# fdZ$d Z%d Z&d Z'd Z( xZ)S )iopoll_gevent_poll_callback2Fr	   TNc                     t          t          |                               ||||||f           || _        || _        g | _        d S )N)rc   priorityr   )superr   r+   _fdr!   _multiplex_watchers)r   ri   fdr"   rc   r   	__class__s         r   r+   zio.__init__  sL    b$  r6sXVXUZ [[[#%   r   c                     | j         S r   )r   rq   s    r   _get_fdz
io._get_fd  s	    xr   c                 @    || _         |                     |f           d S r   )r   rm   )r   r   s     r   _set_fdz
io._set_fd  s%    u%%%%%r   c                     | j         S r   r!   rq   s    r   _get_eventszio._get_events  s
    |r   c                     || j         k    rd S || _         | j        r1| j        J |                     | j        | j         | j                   d S d S r   )r!   active_handlero   rk   rp   )r   r"   s     r   _set_eventszio._set_events  sg    T\!!F; 	U <+++t|T=STTTTT		U 	Ur   c                 R    |                      | j        | j        | j                   d S r   )ro   rk   r!   rp   rq   s    r   rr   zio._watcher_ffi_start  s'    DM4<9OPPPPPr   win32c                       e Zd ZdZdZdZdZd Z ed  e	j
        d                     Zd Zd	 Zd
 Zed             Zed             Z ed d           ZdS )io._multiplexwatcherNr	   FTc                 "    || _         || _        d S r   )r!   _watcher_refr   r"   r   s      r   r+   zio._multiplexwatcher.__init__F  s    !DL !(Dr   c                     | j         S r   r   rq   s    r   r4   zio._multiplexwatcher.<lambda>Q  s     r   c                 $    t          | d|          S )Nr!   )rI   r   nvs     r   r4   zio._multiplexwatcher.<lambda>R  s    GD)R4P4P r   c                     |                     d          | _        || _        || _        | j        }|3|j        s|                                 d S |                                 d S d S )Npass_events)getr   callbackrA   r   r   	_io_start_calc_and_update_events)r   r   rA   rB   r   s        r   startzio._multiplexwatcher.startT  sv    %zz-88D$DMDI'G"~ 6%%''''' 3355555 #"r   c                 n    d | _         d | _        d | _        | j        }||                                 d S d S r   )r   r   rA   r   _io_maybe_stopr   r   s     r   stopzio._multiplexwatcher.stopa  sF     DM#DDI'G"&&((((( #"r   c                 V    | j         | j                             |            d | _         d S r   )r   _multiplex_closedrq   s    r   closezio._multiplexwatcher.closei  s0     ,!33D999 $Dr   c                     | j         d uS r   )r   rq   s    r   r   zio._multiplexwatcher.activen  s    =,,r   c                     | j         j        S r   )r   rk   rq   s    r   rk   zio._multiplexwatcher._watcherr  s     $--r   c                 .    t          | j        dd          S )Nr   )rF   r   rq   s    r   r4   zio._multiplexwatcher.<lambda>y  s    74+<eR#H#H r   c                 6    | j                             |          S r   )r   r   r   s     r   r4   zio._multiplexwatcher.<lambda>z  s    t'8'@'@'D'D r   )r   r   r   r   rA   r   rc   r+   r   r   not_while_activer"   r   r   r   r   rk   r   r	   r   r   _multiplexwatcherr   ?  s        	( 	( 	( %%"E"#P#PQQS S	6 	6 	6	) 	) 	)	% 	% 	%
 
	- 	- 
	- 
	. 	. 
	. XHHDDF Fr   r   c                 ~    |                                   | j        D ]}|j         d S |                                  d S r   )r   r   r   r   r   ws     r   r   zio._io_maybe_stop|  sO    $$&&&) 	 	Az%  & 			r   c                 f    |                                   |                     | j        d           d S )NT)r   )r   r   _io_callbackrq   s    r   r   zio._io_start  s3    $$&&&

4$$
77777r   c                 j    d}| j         D ]}|j        
||j        z  }|                     |           d S )Nr   )r   r   r"   r   r   s      r   r   zio._calc_and_update_events  sI    / 	) 	)G+'.(     r   c                 .    t          | j                   d S r   )r   r   rq   s    r   r   zio._check_fd_valid  s     	!!!!!r   c                     |                                   |                     ||           }| j                            |           |                                  |S r   )r   r   r   appendr   r   s      r   	multiplexzio.multiplex  sY     	((66 ''000$$&&&r   c                 ~    t          t          |                                            	 | `d S # t          $ r Y d S w xY wr   )r   r   r   r   AttributeError)r   r   s    r   r   zio.close  sP    b$	((( 	 	 	DD	s   . 
<<c                     t          | j                  D ]*}|                                 |                                 +| j        rJ |                                  d S r   )listr   r   r   r   s     r   	close_allzio.close_all  sX    d.// 	 	AFFHHHGGIIII++++

r   c                    	 | j                             |           n# t          $ r Y d S w xY w| j         s>|                                  |                                  |                                  d S |                                  d S r   )r   r   r   r   _no_more_watchersr   r   r   s     r   r   zio._multiplex_closed  s    	$++G4444 	 	 	 FF	 ' 	+IIKKK""$$$ JJLLLLL((*****s    
++c                     d S r   r	   rq   s    r   r   zio._no_more_watchers  s	     	r   c           
         |dk     rwt          d| j        t                              t                              |                    t                              t                              |                               | j        D ]`}|j        s
|j	        | u sJ | |j	        f            ||j
        z  p|dk     }|r*|j        s |j        |j          M |j        |g|j        R   ad S )Nr   zCallback error on)r   r   r;   r<   r8   r=   r?   r   r   r   r"   r   rA   )r   r"   r   
send_events       r   r   zio._io_callback  s	   A::$dhE--f5566E--f55668 8 8" / 	< 	<G# '4///$8L1M/// 7>1@fqjJ <* <$G$gl333$G$V;gl;;;;	< 	<r   )TN)*r   r   r   _watcher_type_watcher_callback_name&_watcher_registers_with_loop_on_creater8   UV_READABLEUV_WRITABLEUV_DISCONNECT
EVENT_MASKr   r+   r   r   r   r   r   r   r   r"   rr   r   platform
startswithr   r   uv_poll_init_socketrh   objectr   r   r   r   r   r   r   r   r   r   r   __classcell__r   s   @r   r   r      s       M5D .3*"U%669LLJ& & & & & &   & & &  U U U Xk;//FQ Q Q |w'' 94  8;F ;F ;F ;F ;FF ;F ;F ;Fz	 	 	8 8 8! ! !" " "
  	 	 	 	 	  + + +8  
< < < < < < <r   r   c                   ~     e Zd ZdZ fdZd Zed             Zd Zd Z	ed             Z
d Zd	 Zd
 Zd Zd Z xZS )_SimulatedWithAsyncMixinTc                     |                                 | _        	  t          t          |           j        |g|R i | d S #  | j                                          xY wr   )async__asyncr   r   r+   r   )r   ri   rA   rB   r   s       r   r+   z!_SimulatedWithAsyncMixin.__init__  sk    kkmm	:E*D11:4Q$QQQ&QQQQQ	Ks   $A Ac                     d S r   r	   r   r   s     r   _watcher_createz(_SimulatedWithAsyncMixin._watcher_create      r   c                     d S r   r	   rq   s    r   _watcher_handlez(_SimulatedWithAsyncMixin._watcher_handle      tr   c                     d S r   r	   r   s     r   rm   z*_SimulatedWithAsyncMixin._watcher_ffi_init	  r   r   c                     || j         _        d S r   )r   rc   rd   s     r   re   z2_SimulatedWithAsyncMixin._watcher_ffi_set_init_ref  s    r   c                     | j         j        S r   )r   r   rq   s    r   r   z_SimulatedWithAsyncMixin.active  s    {!!r   c                     | j         J |                                  || _        || _         | j         j        |g|R   d S r   )r   _register_loop_callbackr   rA   r   )r   cbrA   s      r   r   z_SimulatedWithAsyncMixin.start  sS    {&&&$$&&&	"$t$$$$$$r   c                     |                                   d | _        d | _        | j        | j                                         d S d S r   )_unregister_loop_callbackr   rA   r   r   rq   s    r   r   z_SimulatedWithAsyncMixin.stop  sN    &&(((	;" K #"r   c                 \    | j         $| j         }d | _         |                                 d S d S r   )r   r   )r   as     r   r   z_SimulatedWithAsyncMixin.close#  s1    ;"ADKGGIIIII #"r   c                     t                      r   NotImplementedErrorrq   s    r   r   z0_SimulatedWithAsyncMixin._register_loop_callback)      !###r   c                     t                      r   r  rq   s    r   r   z2_SimulatedWithAsyncMixin._unregister_loop_callback-  r  r   )r   r   r   _watcher_skip_ffir+   r   r   r   rm   re   r   r   r   r   r   r   r   r   s   @r   r   r     s                 X     " " X"% % %    $ $ $$ $ $ $ $ $ $r   r   c                   $    e Zd ZdZd Zd Zd ZdS )forkFc                 D    | j         j                            |            d S r   )ri   _fork_watchersaddrq   s    r   r   zfork._register_loop_callback7  s!    	 $$T*****r   c                 h    	 | j         j                            |            d S # t          $ r Y d S w xY wr   )ri   r
  r   r   rq   s    r   r   zfork._unregister_loop_callback:  sH    	I$++D11111 	 	 	DD	s   # 
11c                 8    | j                                          d S r   )r   sendrq   s    r   _on_forkzfork._on_forkA  s    r   N)r   r   r   r  r   r   r  r	   r   r   r  r  1  sI         + + +      r   r  c                   $    e Zd ZdZd Zd Zd ZdS )childTc                 :    | j                             |            d S r   )ri   _register_child_watcherrq   s    r   r   zchild._register_loop_callbackS  s    	))$/////r   c                 :    | j                             |            d S r   )ri   _unregister_child_watcherrq   s    r   r   zchild._unregister_loop_callbackV  s    	++D11111r   c                 T    || _         || _        | j                                         d S r   )_rpid_rstatusr   r  )r   pidstatuss      r   _set_waitpid_statuszchild._set_waitpid_statusY  s*    
r   N)r   r   r   r  r   r   r  r	   r   r   r  r  E  sI         0 0 02 2 2    r   r  c                   F    e Zd ZdZd Zd Zd Zd Zd Ze	d             Z
dS )	r   _gevent_async_callback0c                      d S r   r	   r	   r   r   r4   zasync_.<lambda>q  s     r   c                 X    |                      | j        j        | j        | j                  S r   )rh   ri   rj   rk   rp   rl   s     r   rm   zasync_._watcher_ffi_inits  s,    
 !!$)-"&"8: : 	:r   c                     d S r   r	   rq   s    r   rr   zasync_._watcher_ffi_start{  r~   r   c                     d S r   r	   rq   s    r   ru   zasync_._watcher_ffi_stop~  r~   r   c                     | j         t          j         us
J d            t                              | j                  rt          d          t                              | j                   d S )NzSending to a closed watcherzClosing handle)r   r   r8   r[   rk   r   uv_async_sendrq   s    r   r  zasync_.send  sd    ~V%55557T555t}-- 	.,---DM*****r   c                     d S r   r	   rq   s    r   pendingzasync_.pending  r   r   N)r   r   r   r   r   rm   rr   ru   r  r   r%  r	   r   r   r   r   _  sz        6" I: : :    + + +   X  r   r   asyncc                   (    e Zd ZdZdZd Zd Zd ZdS )timer_gevent_timer_callback0Fc                 F   |                      | j        j        | j                   |\  | _        | _        | j        r-| j        dk     r"dd l}|                    dd           d| _        | j        r/| j        dk     r&dd l}|                    dd           d| _        d S d S d S )NgMbP?r   zTlibuv only supports millisecond timer resolution; all times less will be set to 1 ms   )
stacklevel)rh   ri   rj   rk   _after_repeatwarningswarn)r   rA   r/  s      r   rm   ztimer._watcher_ffi_init  s    49=$-888$(!T\; 		 4;..OOO MM ?%&  ( ( (
  DK< 	!DL500OOOMM ?%&  ( ( ( !DLLL	! 	!00r   c           	      (   | j         r!t                              | j                   d S 	 |                     | j        | j        t          | j        dz            t          | j        dz                       d S # t          $ r t                      w xY wNi  )_againr8   uv_timer_againrk   ro   rp   intr-  r.  
ValueError	TypeErrorrq   s    r   rr   ztimer._watcher_ffi_start  s    ; 		"  /////"##DM43I$'d(:$;$;$'t(;$<$<> > > > >  " " "kk!"s   AA8 8Bc                 ~    | j         s | j        |g|R i | d S d| _        	  | j        |g|R i | | `d S # | `w xY w)NT)r   r   r3  )r   r   rA   kws       r   againztimer.again  sy    { 	 DJx-$---"---F	DJx-$---"---OOOOs   8 <N)r   r   r   r   r3  rm   rr   r:  r	   r   r   r(  r(    sN        6( F! ! !(
" 
" 
"    r   r(  c                   r    e Zd ZdZdZdZd Zd ZdZd Z	e
d             Ze
d	             Ze
d
             ZdS )statfs_pollgevent_fs_poll_t_gevent_fs_poll_callback3c                     ||j         _        |S r   )handlerY   )r   the_watcherrY   s      r   _watcher_set_datazstat._watcher_set_data  s    "&r   c                 L    |                      | j        j        | j                  S r   rg   rl   s     r   rm   zstat._watcher_ffi_init  s    !!$)-???r   g`--g?c           	          t          | j        | j                  | _        |                     | j        | j        | j        t          | j        dz                       d S r2  )max	_intervalMIN_STAT_INTERVALro   rk   rp   _cpathr5  rq   s    r   rr   zstat._watcher_ffi_start  sZ    T^T-CDDDM4+A K 566	8 	8 	8 	8 	8r   c                 $    | j         j        j        S r   )rk   rA  rY   rq   s    r   r   zstat._watcher_handle  s    }#((r   c                 @    | j         j        j        sd S | j         j        S r   )rk   currst_nlinkrq   s    r   attrz	stat.attr  "    }!* 	F}!!r   c                 @    | j         j        j        sd S | j         j        S r   )rk   prevrM  rq   s    r   rQ  z	stat.prev  rO  r   N)r   r   r   r   _watcher_struct_namer   rC  rm   rH  rr   r   r   rN  rQ  r	   r   r   r<  r<    s        M-8  @ @ @ "8 8 8 ) ) X) " " X"
 " " X" " "r   r<  c                       e Zd ZdZd Zd ZdS )signal_gevent_signal_callback1c                 ^    |                      | j        j        | j                   d| _        d S )NF)rh   ri   rj   rk   rc   rl   s     r   rm   zsignal._watcher_ffi_init  s)    49=$-888r   c                 R    |                      | j        | j        | j                   d S r   )ro   rk   rp   
_signalnumrq   s    r   rr   zsignal._watcher_ffi_start  s2    DM4+A O	- 	- 	- 	- 	-r   N)r   r   r   r   rm   rr   r	   r   r   rT  rT    s8        7  
- - - - -r   rT  c                       e Zd ZdZdS )idle_gevent_idle_callback0Nr   r   r   r   r	   r   r   rZ  rZ    s         6r   rZ  c                       e Zd ZdZdS )check_gevent_check_callback0Nr\  r	   r   r   r^  r^    s        6r   r^  c                       e Zd ZdZd Zd ZdS )OneShotCheckTc                 X    | j         t          j                  fd            }|S )Nc                  "                   |  S r   r	   )rA   funcr   s    r   r   z"OneShotCheck.__make_cb.<locals>.cb  s    DFFF4;r   )r   rG   rH   )r   rd  r   r   s    ` @r   	__make_cbzOneShotCheck.__make_cb  sE    y				 	 	 	 	 
		 	r   c                 N    t          j        | |                     |          g|R  S r   )r^  r   _OneShotCheck__make_cb)r   r   rA   s      r   r   zOneShotCheck.start  s(    {4!9!9ADAAAAr   N)r   r   r   r  rg  r   r	   r   r   ra  ra    s=          B B B B Br   ra  c                       e Zd ZdZdS )prepare_gevent_prepare_callback0Nr\  r	   r   r   ri  ri    s        8r   ri  )4rG   r   gevent.libuvr   __all__r;   rS   r8   gevent._ffir   r   r   	gevent.osr   dictr   r\   
def_externr   r   r   r   r!   r#   r6  r%   r   r'   rL   IoMixinr   r   	ForkMixinr  
ChildMixinr  
AsyncMixinr   locals
TimerMixinr(  	StatMixinr<  SignalMixinrT  	IdleMixinrZ  
CheckMixinr^  ra  PrepareMixinri  r	   r   r   <module>r|     s(       



 " " " " " " m ( ( ( ( ( (       % % % % % %    t    %$&&  ?S^^)=^>>  
 v&w')0 0 0
	 	 	 	 	Z 	 	 	" " " " "& " " "J0 0 0 0 0F 0 0 0b+ b+ b+ b+ b+em b+ b+ b+H]< ]< ]< ]< ]< ]< ]< ]<~8$ 8$ 8$ 8$ 8$v 8$ 8$ 8$t    #?  (    $  4+ + + + +Uw + + +Z  C C C C CEg C C CL#" #" #" #" #"5?G #" #" #"L
- 
- 
- 
- 
-U 
- 
- 
-6 6 6 6 65?G 6 6 67 7 7 7 7Eg 7 7 7B B B B B5 B B B9 9 9 9 9e ' 9 9 9 9 9r   