o
    ÑtPf'  ã                	   @   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   ú\/var/www/html/humari/django-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>   þ

€þ