
    <|h'                        d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
m
Z
 ddlmZ  ed	      j                   e       d
<   d  e       d<   e
j                    e       d<   ddgZ G d de
      Z G d de      Zd ZeZ	  eee      red   Znej6                  Zd Zd Z e        ddl m!Z!  e! e"       d       y# eef$ r eZY -w xY w)zz
A collection of primitives used by the hub, and suitable for
compilation with Cython because of their frequency of use.

    )absolute_import)division)print_function)ref)get_objects)greenletBlockingSwitchOutErrorr   
getcurrentc                       y N r       Z/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/_greenlet_primitives.py<lambda>r      s    r   greenlet_init_greenlet_switchTrackedRawGreenletSwitchOutGreenletWithLoopc                       e Zd Zd Zy)r   c                     t        j                  | ||       t               }t        |      | _        	 |j
                  | _        y # t        $ r) i | _        |j                  r| j
                  |_        Y y Y y w xY wr   )r   __init__r   wrefspawning_greenletspawn_tree_localsAttributeErrorparent)selffunctionr   currents       r   r   zTrackedRawGreenlet.__init__%   sp    $&1
 ,!%g	C%,%>%>D" 	C%'D"~~,0,B,B) 	Cs   A -A76A7N)__name__
__module____qualname__r   r   r   r   r   r   #   s    Cr   c                       e Zd Zd Zd Zy)r   c                 T    t        t               dd       }| |        t        |       S )N
switch_out)getattrr   r   )r   r&   s     r   switchz SwitchOutGreenletWithLoop.switch=   s(    Z\<>
!L%%r   c                     t        d      )Nz?Impossible to call blocking function in the event loop callbackr	   )r   s    r   r&   z$SwitchOutGreenletWithLoop.switch_outC   s    $%fggr   N)r!   r"   r#   r(   r&   r   r   r   r   r   6   s    &hr   c                  v    t               D  cg c]!  } t        | t              rt        | dd      s| # c} S c c} w )Ngreenlet_tree_is_ignoredF)r   
isinstancer   r'   )xs    r   get_reachable_greenletsr.   G   s=     =a"716PRW+X 	
  s   &6bufferc                     	 t        | t              st        |       n| }|j                  r|S |j                         S # t        $ r t
        t        u r t        |       cY S w xY wr   )r,   _memoryviewshapetobytes	TypeError_buffer)datamvs     r   
get_memoryr8   b   s\    &0{&C[88I zz|  k!t}s   *= = !A! A!c                      t                y r   )r   r   r   r   _initr:   ~   s    Or   )import_c_accelzgevent.__greenlet_primitivesN)#__doc__
__future__r   r   r   weakrefr   r   gcr   r   gevent.exceptionsr
   
__import__r   localsr(   __all__r   r   r.   
memoryviewr1   r,   __builtins__dictr5   r/   r   KeyErrorr8   r:   gevent._utilr;   globalsr   r   r   <module>rJ      s   
 '  %    4 $J/:: ( '	  
C C&h 2 h" 	,%x( %%
8  ' wy8 9M 	! Gs   C 	CC