o
    tPf3l                     @   s  d dl mZmZ 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 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j0eZ1G d+d, d,e1Z2G d-d. d.ej3eZ4dS )/    )absolute_importprint_functionN)	_corecffi)watcher)_dbgc                   @   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   U/var/www/html/humari/django-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__F      
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rF|dk rFtttt|dd tt	|d d t
|  d t
| |S )Nr      ascii z Args: z	 KWARGS: )
isinstancer   r!   strffistringlibuvuv_err_namedecodeuv_strerrorrepr)argskwargsres
libuv_funcr   r   wrapL   s(   z-libuv_error_wrapper.__getattr__.<locals>.wrap)getattrr$   	functoolswrapssetattr)r   r   r9   r   r7   r   __getattr__I   s
   zlibuv_error_wrapper.__getattr__N)r   r   r   r&   r>   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&   c   r'   zffi_unwrapper.__init__c                 C   s   t | j|S r   )r:   r@   )r   r   r   r   r   r>   f   r    zffi_unwrapper.__getattr__c                 C   s   t |tsJ | jt|S r   )r+   r"   r@   	addressofr/   )r   libr   r   r   r   rB   i   s   zffi_unwrapper.addressofN)r   r   r   r&   r>   rB   r   r   r   r   r?   _   s    r?   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castr-   NULLdatatyper/   uv_is_closing_closing_watchersuv_closer   )clsffi_watcherffi_handle_watcherr   r   r   _watcher_ffi_closeu   s   zwatcher._watcher_ffi_closec                 C   r#   r   )refr   rP   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   r4   r   r   r   _watcher_ffi_init   s
   
zwatcher._watcher_ffi_initc                 C   s   |  | j| j d S r   )_watcher_startrW   _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   )rW   _watcher_stopr\   r   r   r   _watcher_ffi_stop   s   zwatcher._watcher_ffi_stopc                 C      t | j d S r   )r/   uv_refrW   r\   r   r   r   _watcher_ffi_ref      zwatcher._watcher_ffi_refc                 C   r`   r   )r/   uv_unrefrW   r\   r   r   r   _watcher_ffi_unref   rc   zwatcher._watcher_ffi_unrefc                 C      d S r   r   r\   r   r   r   _watcher_ffi_start_unref      z watcher._watcher_ffi_start_unrefc                 C   rf   r   r   r\   r   r   r   _watcher_ffi_stop_ref   rh   zwatcher._watcher_ffi_stop_refc                 C   s   | j d u rd S tt| j S r   )rW   boolr/   
uv_has_refr\   r   r   r   _get_ref   s   
zwatcher._get_refc                 C   s   |r|    d S |   d S r   )rb   re   )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   r?   r-   rD   r"   r/   _LIB_watcher_prefix_watcher_struct_patternclassmethodrO   rR   rY   r]   r_   r   only_if_watcherrb   re   rg   ri   rl   rn   propertyrP   rs   r   r   r   r   r   n   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" f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)rP   priorityrr   )superr{   r&   _fdr   _multiplex_watchers)r   rU   fdr   rP   r~   	__class__r   r   r&      s   
zio.__init__c                 C      | j S r   )r   r\   r   r   r   _get_fd     z
io._get_fdc                 C   s   || _ | |f d S r   )r   rY   )r   r   r   r   r   _set_fd  s   z
io._set_fdc                 C   r   r   r   r\   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_handlerZ   rW   r[   )r   r   r   r   r   _set_events  s   
zio._set_eventsc                 C      |  | j| j| j d S r   )rZ   rW   r   r[   r\   r   r   r   r]     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&   @  s   
zio._multiplexwatcher.__init__c                 C   r   r   r   r\   r   r   r   <lambda>K  s    zio._multiplexwatcher.<lambda>c                 C   s   t | d|S )Nr   )r=   r   nvr   r   r   r   L      c                 O   sH   | d| _|| _|| _| j}|d ur"|js|  d S |  d S d S )Npass_events)getr   callbackr4   r   r   	_io_start_calc_and_update_events)r   r   r4   r5   r   r   r   r   startN  s   zio._multiplexwatcher.startc                 C   s0   d | _ d | _d | _| j}|d ur|  d S d S r   )r   r   r4   r   _io_maybe_stopr   r   r   r   r   stop[  s   zio._multiplexwatcher.stopc                 C   s    | j d ur| j |  d | _ d S r   )r   _multiplex_closedr\   r   r   r   closec  s   

zio._multiplexwatcher.closec                 C   s
   | j d uS r   )r   r\   r   r   r   r   h     
zio._multiplexwatcher.activec                 C      | j jS r   )r   rW   r\   r   r   r   rW   l  s   zio._multiplexwatcher._watcherc                 C   s   t | jddS )Nr   )r:   r   r\   r   r   r   r   s  s    c                 C   s   | j |S r   )r   r   r   r   r   r   r   t  r   )r   r   r   r   r4   r   rP   r&   rz   r   not_while_activer   r   r   r   r   rW   r   r   r   r   r   _multiplexwatcher9  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   v  s   

zio._io_maybe_stopc                 C   s   |    | j| jdd d S )NT)r   )r   r   _io_callbackr\   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$   |  || }| j| |   |S r   )r   r   appendr   r   r   r   r   	multiplex  s   zio.multiplexc                    s   t t|   | `d S r   )r   r{   r   r   r\   r   r   r   r     s   zio.closec                 C   s:   | j | | j s|   |   |   d S |   d S r   )r   r   r   _no_more_watchersr   r   r   r   r   r   r     s   zio._multiplex_closedc                 C   rf   r   r   r\   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   r-   r.   r/   r0   r2   r   r   r   r   r   r4   )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_creater/   UV_READABLEUV_WRITABLEUV_DISCONNECT
EVENT_MASKr   r&   r   r   r   r   r   r   rz   r   r]   r   platform
startswithr   ru   uv_poll_init_socketrT   objectr   r   r   r   r   r   r   r   r   __classcell__r   r   r   r   r{      s2    "


=	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   rU   r4   r5   r   r   r   r&     s   
$
z!_SimulatedWithAsyncMixin.__init__c                 C   rf   r   r   r   rr   r   r   r   _watcher_create  rh   z(_SimulatedWithAsyncMixin._watcher_createc                 C   rf   r   r   r\   r   r   r   _watcher_handle     z(_SimulatedWithAsyncMixin._watcher_handlec                 C   rf   r   r   r   r   r   r   rY     rh   z*_SimulatedWithAsyncMixin._watcher_ffi_initc                 C   s   || j _d S r   )r   rP   rQ   r   r   r   rR     r    z2_SimulatedWithAsyncMixin._watcher_ffi_set_init_refc                 C   r   r   )r   r   r\   r   r   r   r     rt   z_SimulatedWithAsyncMixin.activec                 G   s:   | j d usJ |   || _|| _| j j|g|R   d S r   )r   _register_loop_callbackr   r4   r   )r   cbr4   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   r4   r   r   r\   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   NotImplementedErrorr\   r   r   r   r        z0_SimulatedWithAsyncMixin._register_loop_callbackc                 C   r   r   r   r\   r   r   r   r     r   z2_SimulatedWithAsyncMixin._unregister_loop_callback)r   r   r   _watcher_skip_ffir&   r   rz   r   rY   rR   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   )rU   _fork_watchersaddr\   r   r   r   r        zfork._register_loop_callbackc                 C   s*   z
| j j|  W d S  ty   Y d S w r   )rU   r   r   r
   r\   r   r   r   r     s
   zfork._unregister_loop_callbackc                 C   s   | j   d S r   )r   sendr\   r   r   r   _on_fork  s   zfork._on_forkN)r   r   r   r   r   r   r   r   r   r   r   r     s
    r   c                   @   r   )	childTc                 C      | j |  d S r   )rU   _register_child_watcherr\   r   r   r   r   -     zchild._register_loop_callbackc                 C   r   r   )rU   _unregister_child_watcherr\   r   r   r   r   0  r   zchild._unregister_loop_callbackc                 C   s   || _ || _| j  d S r   )_rpid_rstatusr   r   )r   pidstatusr   r   r   _set_waitpid_status3  s   zchild._set_waitpid_statusN)r   r   r   r   r   r   r   r   r   r   r   r     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   rf   r   r   r   r   r   r   r   K  s    zasync_.<lambda>c                 C   s   |  | jj| j| jS r   )rT   rU   rV   rW   r[   rX   r   r   r   rY   M  s   zasync_._watcher_ffi_initc                 C   rf   r   r   r\   r   r   r   r]   U  rh   zasync_._watcher_ffi_startc                 C   rf   r   r   r\   r   r   r   r_   X  rh   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)rq   r   r/   rI   rW   ro   uv_async_sendr\   r   r   r   r   [  s   zasync_.sendc                 C   rf   r   r   r\   r   r   r   pendingb  r   zasync_.pendingN)r   r   r   r   rq   rY   r]   r_   r   rz   r   r   r   r   r   r   9  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)rT   rU   rV   rW   _after_repeatwarningswarn)r   r4   r   r   r   r   rY     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  )_againr/   uv_timer_againrW   rZ   r[   intr   r   
ValueError	TypeErrorr\   r   r   r   r]     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   r4   kwr   r   r   again  s   ztimer.againN)r   r   r   r   r   rY   r]   r   r   r   r   r   r   h  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   )handlerG   )r   the_watcherrG   r   r   r   _watcher_set_data  s   zstat._watcher_set_datac                 C   s   |  | jj| jS r   rS   rX   r   r   r   rY     r   zstat._watcher_ffi_initg`--g?c                 C   s8   | j | jk r
| j| _ | | j| j| jt| j d  d S r   )	_intervalMIN_STAT_INTERVALrZ   rW   r[   _cpathr   r\   r   r   r   r]     s   zstat._watcher_ffi_startc                 C   s
   | j jjS r   )rW   r   rG   r\   r   r   r   r     r   zstat._watcher_handlec                 C      | j jjsd S | j jS r   )rW   currst_nlinkr\   r   r   r   attr     
z	stat.attrc                 C   r   r   )rW   prevr   r\   r   r   r   r     r   z	stat.prevN)r   r   r   r   _watcher_struct_namer   r   rY   r   r]   rz   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)rT   rU   rV   rW   rP   rX   r   r   r   rY     s   
zsignal._watcher_ffi_initc                 C   r   r   )rZ   rW   r[   
_signalnumr\   r   r   r   r]     s   zsignal._watcher_ffi_startN)r   r   r   r   rY   r]   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   )r4   funcr   r   r   r     s   z"OneShotCheck.__make_cb.<locals>.cb)r   r;   r<   )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   r4   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  )5
__future__r   r   r;   r   gevent.libuvr   __all__r-   rC   r/   gevent._ffir   r   r   dictr   rJ   
def_externr   r   r   r   r   r   r   r!   r   r"   r?   IoMixinr{   r   	ForkMixinr   
ChildMixinr   
AsyncMixinr   locals
TimerMixinr   	StatMixinr   SignalMixinr   	IdleMixinr  
CheckMixinr  r	  PrepareMixinr  r   r   r   r   <module>   sV   
!d  :
-F'