o
    oi'                  	   @   s"  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d e d< e
je d< ddgZG dd de
ZG dd deZdd ZeZzeeerfed ZnejZW n eefyw   eZY nw dd Zdd Ze  ddl m!Z! e!e" d dS )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                   C   s   d S N r   r   r   Z/var/www/html/pca-backend/venv/lib/python3.10/site-packages/gevent/_greenlet_primitives.py<lambda>   s    r   greenlet_init_greenlet_switchTrackedRawGreenletSwitchOutGreenletWithLoopc                   @   s   e Zd Zdd ZdS )r   c                 C   s\   t | || t }t|| _z|j| _W d S  ty-   i | _|jr*| j|_Y d S Y d S w r   )r   __init__r   wrefspawning_greenletspawn_tree_localsAttributeErrorparent)selffunctionr   currentr   r   r   r   %   s   
zTrackedRawGreenlet.__init__N)__name__
__module____qualname__r   r   r   r   r   r   #   s    c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s$   t t dd }|d ur|  t| S )N
switch_out)getattrr   r   )r   r    r   r   r   switch=   s   z SwitchOutGreenletWithLoop.switchc                 C   s   t d)Nz?Impossible to call blocking function in the event loop callbackr	   )r   r   r   r   r    C   s   z$SwitchOutGreenletWithLoop.switch_outN)r   r   r   r"   r    r   r   r   r   r   6   s    c                   C   s   dd t  D S )Nc                 S   s&   g | ]}t |trt|d ds|qS )greenlet_tree_is_ignoredF)
isinstancer   r!   ).0xr   r   r   
<listcomp>P   s    
z+get_reachable_greenlets.<locals>.<listcomp>r   r   r   r   r   get_reachable_greenletsG   s   	r(   bufferc                 C   sR   zt | ts
t| n| }|jr|W S | W S  ty(   ttu r" t|  Y S w r   )r$   _memoryviewshapetobytes	TypeError_buffer)datamvr   r   r   
get_memoryb   s   

r1   c                   C   s
   t   d S r   )r   r   r   r   r   _init~   s   
r2   )import_c_accelzgevent.__greenlet_primitivesN)#__doc__
__future__r   r   r   weakrefr   r   gcr   r   gevent.exceptionsr
   
__import__r   localsr"   __all__r   r   r(   
memoryviewr*   r$   __builtins__dictr.   r)   r   KeyErrorr1   r2   gevent._utilr3   globalsr   r   r   r   <module>   s>   

