o
    U˟iq                     @   s  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 deZe Zejdd	ejZejd
fejdfgZdd ZG dd deZG dd deZG dd deZG dd de
j	Z	G dd de
je	ZG dd deZG dd dee
j e	Z!G dd dee
j"e	Z#G dd de
j$e	Z%e%e& d < G d!d" d"e
j'e	Z(G d#d$ d$e
j)e	Z*G d%d& d&e
j+e	Z,G d'd( d(e
j-e	Z.G d)d* d*e
j/e	Z0G d+d, d,e0Z1G d-d. d.e
j2e	Z3dS )/    N)	_corecffi)watcher)_dbg)_check_fd_validc                   @   s   e Zd ZdZdd ZdS )_ClosingWatchers c                 C   s0   z| |= W d S  t y   tdtjd Y d S 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objr   r   \/var/www/apps/myagent/mysuperagent/venv/lib/python3.10/site-packages/gevent/libuv/watcher.pyremove   s   z_ClosingWatchers.removeN)__name__
__module____qualname__	__slots__r   r   r   r   r   r      s    r   _uv_close_callback)nameREADWRITEc                 C   s   t | tS N)_baseevents_to_str_events)eventsr   r   r   _events_to_str8      r   c                   @   s   e Zd ZdS )UVFuncallErrorN)r   r   r   r   r   r   r   r    =   s    r    c                   @   s   e Zd Zdd Zdd ZdS )libuv_error_wrapperc                 C   
   || _ d S r   )_libuv)r   uvr   r   r   __init__H      
zlibuv_error_wrapper.__init__c                    s2   t | j| t  fdd}t| || |S )Nc                     s   | rt | d tr| dd  } | i |  d urY dk rYt} tjkr+ fdd}|ttt 	dd tt
 	d d t|  d t| d	 t   S )
Nr      c                    s   t t | S r   )OSErrorabs)msgresr   r   <lambda>V       z?libuv_error_wrapper.__getattr__.<locals>.wrap.<locals>.<lambda>ascii z Args: z	 KWARGS: z
 UVError: )
isinstancer   r    libuvUV_EBADFstrffistringuv_err_namedecodeuv_strerrorrepr)argskwargskind
libuv_funcr+   r   wrapN   s6   
z-libuv_error_wrapper.__getattr__.<locals>.wrap)getattrr#   	functoolswrapssetattr)r   r   r@   r   r>   r   __getattr__K   s
   zlibuv_error_wrapper.__getattr__N)r   r   r   r%   rE   r   r   r   r   r!   @   s    r!   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ffi_unwrapperc                 C   r"   r   )_ffi)r   ffr   r   r   r%   i   r&   zffi_unwrapper.__init__c                 C   s   t | j|S r   )rA   rG   )r   r   r   r   r   rE   l   r   zffi_unwrapper.__getattr__c                 C   s   t |tsJ | jt|S r   )r1   r!   rG   	addressofr2   )r   libr   r   r   r   rI   o   s   zffi_unwrapper.addressofN)r   r   r   r%   rE   rI   r   r   r   r   rF   e   s    rF   c                   @   s   e Zd ZeeZeeZdZ	dZ
edd Zdd Zdd Zd	d
 Zdd Zejdd Zejdd Zdd Zdd Zdd Zdd ZeeeZdd ZdS )r   r$   z%s_tc                 C   sH   | j d|}tj|_|jr t|s"|t|< t	|tj
 d S d S d S )Nzuv_handle_t*)_FFIcastr5   NULLdatatyper2   uv_is_closing_closing_watchersuv_closer   )clsffi_watcherffi_handle_watcherr   r   r   _watcher_ffi_close{   s   zwatcher._watcher_ffi_closec                 C   r"   r   )refr   rW   r   r   r   _watcher_ffi_set_init_ref   r&   z!watcher._watcher_ffi_set_init_refc                 C   s   | j | jj| jg|R  S r   _watcher_initloopptr_watcherr   r;   r   r   r   _watcher_ffi_init   s
   
zwatcher._watcher_ffi_initc                 C   s   |  | j| j d S r   )_watcher_startr^   _watcher_callbackr   r   r   r   _watcher_ffi_start   s   zwatcher._watcher_ffi_startc                 C   s   | j r| | j  d S d S r   )r^   _watcher_stoprc   r   r   r   _watcher_ffi_stop   s   zwatcher._watcher_ffi_stopc                 C      t | j d S r   )r2   uv_refr^   rc   r   r   r   _watcher_ffi_ref      zwatcher._watcher_ffi_refc                 C   rg   r   )r2   uv_unrefr^   rc   r   r   r   _watcher_ffi_unref   rj   zwatcher._watcher_ffi_unrefc                 C      d S r   r   rc   r   r   r   _watcher_ffi_start_unref      z watcher._watcher_ffi_start_unrefc                 C   rm   r   r   rc   r   r   r   _watcher_ffi_stop_ref   ro   zwatcher._watcher_ffi_stop_refc                 C   s   | j d u rd S tt| j S r   )r^   boolr2   
uv_has_refrc   r   r   r   _get_ref   s   
zwatcher._get_refc                 C   s   |r|    d S |   d S r   )ri   rl   )r   valuer   r   r   _set_ref   s   zwatcher._set_refc                 G   s   t d)NzNot implemented)	Exception)r   _revents	_callback_argsr   r   r   feed      zwatcher.feedN)r   r   r   rF   r5   rK   r!   r2   _LIB_watcher_prefix_watcher_struct_patternclassmethodrV   rY   r`   rd   rf   r   only_if_watcherri   rl   rn   rp   rs   ru   propertyrW   rz   r   r   r   r   r   t   s*    
(


r   c                       s   e Zd ZdZdZdZejejB ej	B Z
dZd* fdd	Zd	d
 Zejdd Zdd Zdd ZeeeZdd ZejdrBejjZG dd deZdd Zdd Z dd Z!dd Z"dd Z# fd d!Z$d"d# Z%d$d% Z&d&d' Z'd(d) Z(  Z)S )+iopoll_gevent_poll_callback2Fr   TNc                    s4   t t| j||||||fd || _|| _g | _d S )N)rW   priorityry   )superr   r%   _fdr   _multiplex_watchers)r   r\   fdr   rW   r   	__class__r   r   r%     s   
zio.__init__c                 C      | j S r   )r   rc   r   r   r   _get_fd     z
io._get_fdc                 C   s   || _ | |f d S r   )r   r`   )r   r   r   r   r   _set_fd  s   z
io._set_fdc                 C   r   r   r   rc   r   r   r   _get_events  r   zio._get_eventsc                 C   sD   || j krd S || _ | jr | jd usJ | | j| j | j d S d S r   )r   active_handlera   r^   rb   )r   r   r   r   r   _set_events  s   
zio._set_eventsc                 C      |  | j| j| j d S r   )ra   r^   r   rb   rc   r   r   r   rd     s   zio._watcher_ffi_startwin32c                   @   s~   e Zd ZdZdZdZdZdd Zedd e	
d	d Zd
d Zdd Zdd Zedd Zedd Zedd dd ZdS )zio._multiplexwatcherNr   FTc                 C   s   || _ || _d S r   )r   _watcher_refr   r   r   r   r   r   r%   F  s   
zio._multiplexwatcher.__init__c                 C   r   r   r   rc   r   r   r   r-   Q  s    zio._multiplexwatcher.<lambda>c                 C   s   t | d|S )Nr   )rD   r   nvr   r   r   r-   R      c                 O   sH   | d| _|| _|| _| j}|d ur"|js|  d S |  d S d S )Npass_events)getr   callbackr;   r   r   	_io_start_calc_and_update_events)r   r   r;   r<   r   r   r   r   startT  s   zio._multiplexwatcher.startc                 C   s0   d | _ d | _d | _| j}|d ur|  d S d S r   )r   r   r;   r   _io_maybe_stopr   r   r   r   r   stopa  s   zio._multiplexwatcher.stopc                 C   s    | j d ur| j |  d | _ d S r   )r   _multiplex_closedrc   r   r   r   closei  s   

zio._multiplexwatcher.closec                 C   s
   | j d uS r   )r   rc   r   r   r   r   n     
zio._multiplexwatcher.activec                 C      | j jS r   )r   r^   rc   r   r   r   r^   r  s   zio._multiplexwatcher._watcherc                 C   s   t | jddS )Nr   )rA   r   rc   r   r   r   r-   y  r.   c                 C   s   | j |S r   )r   r   r   r   r   r   r-   z  r   )r   r   r   r   r;   r   rW   r%   r   r   not_while_activer   r   r   r   r   r^   r   r   r   r   r   _multiplexwatcher?  s(    


r   c                 C   s0   |    | jD ]
}|jd ur d S q|   d S r   )r   r   r   r   r   wr   r   r   r   |  s   

zio._io_maybe_stopc                 C   s   |    | j| jdd d S )NT)r   )r   r   _io_callbackrc   r   r   r   r     s   zio._io_startc                 C   s2   d}| j D ]}|jd ur||jO }q| | d S )Nr   )r   r   r   r   r   r   r   r   r     s   


zio._calc_and_update_eventsc                 C   s   t | j d S r   )r   r   rc   r   r   r   r     s   zio._check_fd_validc                 C   s,   |    | || }| j| |   |S r   )r   r   r   appendr   r   r   r   r   	multiplex  s
   zio.multiplexc                    s.   t t|   z| `W d S  ty   Y d S w r   )r   r   r   r   AttributeErrorrc   r   r   r   r     s   
zio.closec                 C   s6   t | jD ]
}|  |  q| jrJ |   d S r   )listr   r   r   r   r   r   r   	close_all  s
   

zio.close_allc                 C   sT   z| j | W n
 ty   Y d S w | j s$|   |   |   d S |   d S r   )r   r   r   r   _no_more_watchersr   r   r   r   r   r   r     s   zio._multiplex_closedc                 C   rm   r   r   rc   r   r   r   r     s   zio._no_more_watchersc              	   C   s   |dk rt d| jtt|tt| | jD ]1}|js!q|j	| u s-J | |j	f||j
@ p5|dk }|rL|jsB|j|j  q|j|g|jR   qd S )Nr   zCallback error on)r   r   r5   r6   r2   r7   r9   r   r   r   r   r   r;   )r   r   r   
send_eventr   r   r   r     s    
zio._io_callback)TN)*r   r   r   _watcher_type_watcher_callback_name&_watcher_registers_with_loop_on_creater2   UV_READABLEUV_WRITABLEUV_DISCONNECT
EVENT_MASKr   r%   r   r   r   r   r   r   r   r   rd   r   platform
startswithr   r|   uv_poll_init_socketr[   objectr   r   r   r   r   r   r   r   r   r   r   __classcell__r   r   r   r   r      s6    "


=	
r   c                       sx   e Zd ZdZ fddZdd Zedd Zdd	 Zd
d Z	edd Z
dd Zdd Zdd Zdd Zdd Z  ZS )_SimulatedWithAsyncMixinTc                    sB   |  | _ztt| j|g|R i | W d S    | j   r   )async__asyncr   r   r%   r   )r   r\   r;   r<   r   r   r   r%     s   
$
z!_SimulatedWithAsyncMixin.__init__c                 C   rm   r   r   r   ry   r   r   r   _watcher_create  ro   z(_SimulatedWithAsyncMixin._watcher_createc                 C   rm   r   r   rc   r   r   r   _watcher_handle     z(_SimulatedWithAsyncMixin._watcher_handlec                 C   rm   r   r   r   r   r   r   r`   	  ro   z*_SimulatedWithAsyncMixin._watcher_ffi_initc                 C   s   || j _d S r   )r   rW   rX   r   r   r   rY     r   z2_SimulatedWithAsyncMixin._watcher_ffi_set_init_refc                 C   r   r   )r   r   rc   r   r   r   r     r{   z_SimulatedWithAsyncMixin.activec                 G   s:   | j d usJ |   || _|| _| j j|g|R   d S r   )r   _register_loop_callbackr   r;   r   )r   cbr;   r   r   r   r     s
   z_SimulatedWithAsyncMixin.startc                 C   s0   |    d | _d | _| jd ur| j  d S d S r   )_unregister_loop_callbackr   r;   r   r   rc   r   r   r   r     s   
z_SimulatedWithAsyncMixin.stopc                 C   s&   | j d ur| j }d | _ |  d S d S r   )r   r   )r   ar   r   r   r   #  s
   
z_SimulatedWithAsyncMixin.closec                 C      t  r   NotImplementedErrorrc   r   r   r   r   )     z0_SimulatedWithAsyncMixin._register_loop_callbackc                 C   r   r   r   rc   r   r   r   r   -  r   z2_SimulatedWithAsyncMixin._unregister_loop_callback)r   r   r   _watcher_skip_ffir%   r   r   r   r`   rY   r   r   r   r   r   r   r   r   r   r   r   r     s    

	r   c                   @   (   e Zd ZdZdd Zdd Zdd ZdS )	forkFc                 C   s   | j j|  d S r   )r\   _fork_watchersaddrc   r   r   r   r   7     zfork._register_loop_callbackc                 C   s*   z
| j j|  W d S  ty   Y d S w r   )r\   r   r   r	   rc   r   r   r   r   :  s
   zfork._unregister_loop_callbackc                 C   s   | j   d S r   )r   sendrc   r   r   r   _on_forkA  s   zfork._on_forkN)r   r   r   r   r   r   r   r   r   r   r   r   1  s
    r   c                   @   r   )	childTc                 C      | j |  d S r   )r\   _register_child_watcherrc   r   r   r   r   S     zchild._register_loop_callbackc                 C   r   r   )r\   _unregister_child_watcherrc   r   r   r   r   V  r   zchild._unregister_loop_callbackc                 C   s   || _ || _| j  d S r   )_rpid_rstatusr   r   )r   pidstatusr   r   r   _set_waitpid_statusY  s   zchild._set_waitpid_statusN)r   r   r   r   r   r   r   r   r   r   r   r   E  s
    r   c                   @   sD   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	dd Z
dS )r   _gevent_async_callback0c                   C   rm   r   r   r   r   r   r   r-   q  s    zasync_.<lambda>c                 C   s   |  | jj| j| jS r   )r[   r\   r]   r^   rb   r_   r   r   r   r`   s  s   zasync_._watcher_ffi_initc                 C   rm   r   r   rc   r   r   r   rd   {  ro   zasync_._watcher_ffi_startc                 C   rm   r   r   rc   r   r   r   rf   ~  ro   zasync_._watcher_ffi_stopc                 C   s8   | j tj us
J dt| jrtdt| j d S )NzSending to a closed watcherzClosing handle)rx   r   r2   rP   r^   rv   uv_async_sendrc   r   r   r   r     s   zasync_.sendc                 C   rm   r   r   rc   r   r   r   pending  r   zasync_.pendingN)r   r   r   r   rx   r`   rd   rf   r   r   r   r   r   r   r   r   _  s    r   asyncc                   @   s,   e Zd ZdZdZdd Zdd Zdd Zd	S )
timer_gevent_timer_callback0Fc                 C   s   |  | jj| j |\| _| _| jr%| jdk r%dd l}|jddd d| _| jr=| jdk r?dd l}|jd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)r[   r\   r]   r^   _after_repeatwarningswarn)r   r;   r   r   r   r   r`     s   
ztimer._watcher_ffi_initc                 C   sZ   | j rt| j d S z| | j| jt| jd t| jd  W d S  t	y,   t
 w Ni  )_againr2   uv_timer_againr^   ra   rb   intr   r   
ValueError	TypeErrorrc   r   r   r   rd     s   
ztimer._watcher_ffi_startc                 O   sR   | j s| j|g|R i | d S d| _z| j|g|R i | W | `d S | `w )NT)r   r   r   )r   r   r;   kwr   r   r   again  s   ztimer.againN)r   r   r   r   r   r`   rd   r   r   r   r   r   r     s    r   c                   @   sX   e Zd ZdZdZdZdd Zdd ZdZd	d
 Z	e
dd Ze
dd Ze
dd ZdS )statfs_pollgevent_fs_poll_t_gevent_fs_poll_callback3c                 C   s   ||j _|S r   )handlerN   )r   the_watcherrN   r   r   r   _watcher_set_data  s   zstat._watcher_set_datac                 C   s   |  | jj| jS r   rZ   r_   r   r   r   r`     r   zstat._watcher_ffi_initg`--g?c                 C   s4   t | j| j| _| | j| j| jt| jd  d S r   )max	_intervalMIN_STAT_INTERVALra   r^   rb   _cpathr   rc   r   r   r   rd     s
   zstat._watcher_ffi_startc                 C   s
   | j jjS r   )r^   r   rN   rc   r   r   r   r     r   zstat._watcher_handlec                 C      | j jjsd S | j jS r   )r^   currst_nlinkrc   r   r   r   attr     
z	stat.attrc                 C   r  r   )r^   prevr  rc   r   r   r   r    r  z	stat.prevN)r   r   r   r   _watcher_struct_namer   r   r`   r   rd   r   r   r  r  r   r   r   r   r     s    

r   c                   @       e Zd ZdZdd Zdd ZdS )signal_gevent_signal_callback1c                 C   s   |  | jj| j d| _d S )NF)r[   r\   r]   r^   rW   r_   r   r   r   r`     s   
zsignal._watcher_ffi_initc                 C   r   r   )ra   r^   rb   
_signalnumrc   r   r   r   rd     s   zsignal._watcher_ffi_startN)r   r   r   r   r`   rd   r   r   r   r   r
    s    r
  c                   @      e Zd ZdZdS )idle_gevent_idle_callback0Nr   r   r   r   r   r   r   r   r    s    r  c                   @   r  )check_gevent_check_callback0Nr  r   r   r   r   r        r  c                   @   r	  )OneShotCheckTc                    s"   | j t  fdd}|S )Nc                     s      |  S r   r   )r;   funcr   r   r   r     s   z"OneShotCheck.__make_cb.<locals>.cb)r   rB   rC   )r   r  r   r   r  r   	__make_cb  s   zOneShotCheck.__make_cbc                 G   s   t j| | |g|R  S r   )r  r   _OneShotCheck__make_cb)r   r   r;   r   r   r   r     s   zOneShotCheck.startN)r   r   r   r   r  r   r   r   r   r   r    s    r  c                   @   r  )prepare_gevent_prepare_callback0Nr  r   r   r   r   r    r  r  )4rB   r   gevent.libuvr   __all__r5   rJ   r2   gevent._ffir   r   r   	gevent.osr   dictr   rQ   
def_externr   r   r   r   r   r   r   r    r   r!   rF   IoMixinr   r   	ForkMixinr   
ChildMixinr   
AsyncMixinr   locals
TimerMixinr   	StatMixinr   SignalMixinr
  	IdleMixinr  
CheckMixinr  r  PrepareMixinr  r   r   r   r   <module>   sV   
%d  !:
-F&