U
    @f                     @   s  d Z ddlZddlmZ ddlmZ ddlm	Z	 ddl
Z
dddd	d
dddddddgZejZe	ZdaeedrrejZdd ZejZdd Zd!ddZdd Zd"ddZeZdd	 ZeZdd ZejZdd ZeedrejZd#ddZddlm Z! eed rej"Z"dS )$z:Implements the standard thread module, using greenthreads.    N)	greenlets)greenthread)Lock	get_identstart_new_thread	start_newallocate_lockallocateexitinterrupt_main
stack_size_localLockTyper   _count_is_main_interpreterc                   C   s   t  S N)r    r   r   O/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/green/thread.py_set_sentinel   s    r   c                   C   s   t S r   __threadcountr   r   r   r   r      s    c                 C   s    | d krt t S t | S d S r   )idgreenlet
getcurrent)grr   r   r   r   "   s    c                 C   s&   t d7 a z| || W 5 t d8 a X d S N   r   )funcargskwargsr   r   r   __thread_body)   s    r    r   c                    sd   t jdkrDt| dddkrDt| drD| jj  fdd}|_|pJi }tt| ||}t	|S )N)      
__module__ 	threading__self__c                      s&   z
   W 5 j d k	r j   X d S r   )_tstate_lockreleaser   Zbootstrap_innerthreadr   r   wrap_bootstrap_inner@   s    

z.start_new_thread.<locals>.wrap_bootstrap_inner)
sysversion_infogetattrhasattrr&   _bootstrap_innerr   Zspawn_nr    r   )functionr   r   r+   gr   r)   r   r   2   s    

c                  G   s   t dS r   )r   )ar   r   r   r   R   s    c                   C   s
   t jd S r   )r   ZGreenletExitr   r   r   r   r
   Y   s    c                  C   s0   t  } | jr&| jjs&| jt  nt d S r   )r   r   parentZdeadthrowKeyboardInterrupt)currr   r   r   r   `   s    c                 C   s$   | d krt  S | t  kr t | S d S r   )__original_stack_size__)sizer   r   r   r   k   s
    
)localdaemon_threads_allowed)N)r   N)N)#__doc___threadZ__threadZeventlet.supportr   r   Zeventletr   Zeventlet.lockr   r,   Z__patched__errorr   r   r/   r   r   TIMEOUT_MAXr   r   r    r   r   r   r	   r
   exit_threadr   r   r8   Zeventlet.corolocalr:   r   r;   r   r   r   r   <module>   sL         

	



