U
    Ã@Ûf;  ã                   @   sh   d Z ddlZddlZddlZdai Zi Zdd„ ZG dd„ dƒZG dd„ dƒZ	G d	d
„ d
e
ƒZdd„ ZdS )zn
Support for using stackless python.  Broken and riddled with print statements
at the moment.  Please fix it!
é    Nc                   C   s   t t ¡  S ©N)Útasklet_to_greenletÚ	stacklessÚ
getcurrent© r   r   úU/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/support/stacklesss.pyr      s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚFirstSwitchc                 C   s
   || _ d S r   )Úgr)Úselfr	   r   r   r   Ú__init__   s    zFirstSwitch.__init__c                 O   sH   | j }|`|jd  }|_t |¡}||_|t|< |j||Ž | ¡  d S r   )r	   ÚswitchÚrunr   ZtaskletÚtr   Úsetup)r
   ÚargsÚkwr	   r   r   r   r   r   Ú__call__   s    
zFirstSwitch.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   r   c                   @   s.   e Zd Zd
dd„Zdd„ Zdd„ Zdd	„ ZdS )ÚgreenletNc                 C   s6   d| _ |d krtƒ }|| _|d k	r(|| _t| ƒ| _d S )NF)Údeadr   Úparentr   r   r   )r
   r   r   r   r   r   r   %   s    zgreenlet.__init__c                 G   s@   t  ¡ a|t| < | j ¡  t  ¡  t| jk	r4t ¡  t|  }|S r   )r   r   ÚcallerÚ	coro_argsr   ÚinsertZscheduleÚremove)r
   r   Úrvalr   r   r   r   0   s    

zgreenlet.switchc                 C   s   d S r   r   ©r
   r   r   r   r   <   s    zgreenlet.runc                 C   s   | j d ko| j S r   )r   r   r   r   r   r   Ú__bool__?   s    zgreenlet.__bool__)NN)r   r   r   r   r   r   r   r   r   r   r   r   $   s   
r   c                   @   s   e Zd ZdS )ÚGreenletExitN)r   r   r   r   r   r   r   r    C   s   r    c                  C   sZ   t  d¡} | tjd< t| _t| _t| _t ¡ }d t|< tƒ }|t|< ||_	|`
d t|< d S )Nr   )ÚtypesÚ
ModuleTypeÚsysÚmodulesr   r   r    r   r   r   r   r   )Úmoduler   Z	main_coror   r   r   ÚemulateG   s    

r&   )Ú__doc__r#   r!   r   r   r   r   r   r   r   Ú	Exceptionr    r&   r   r   r   r   Ú<module>   s   