
    CNh                     d   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
g dZej                  Ze	Zda eed      rej                   Zd Zej$                  Zd	 Zdd
Zd ZddZeZd ZeZd Zej6                  Zd Z eed      rej:                  ZddZddlm Z!  eed      rejD                  Z"yy)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                      t               S N)r	        7/usr/lib/python3/dist-packages/eventlet/green/thread.py_set_sentinelr      s     ?r   c                      t         S r   __threadcountr   r   r   r   r      s    r   c                 V    | t        t        j                               S t        |       S r   )idgreenlet
getcurrent)grs    r   r   r   "   s$    	z(%%'(("vr   c                 V    t         dz  a 	  | |i | t         dz  a y # t         dz  a w xY wN   r   )funcargskwargss      r   __thread_bodyr&   )   s3    QMdfs    (c                    t         j                  dk\  rAt        | dd      dk(  r1t        | d      r%| j                  j
                  fd}|_        |xs i }t        j                  t        | ||      }t        |      S )N)      
__module__ 	threading__self__c                      	           j                   j                   j                          y y # j                   j                   j                          w w xY wr   )_tstate_lockrelease)bootstrap_innerthreads   r   wrap_bootstrap_innerz.start_new_thread.<locals>.wrap_bootstrap_inner@   sW    2! &&2''//1 36&&2''//1 3s	   2 )A)
sysversion_infogetattrhasattrr-   _bootstrap_innerr   spawn_nr&   r   )functionr$   r%   r3   gr1   r2   s        @@r   r   r   2   s|    F",3{B*- "" 11	2 #7\rFM8T6BAQ<r   c                      t        d      S r!   )r   )as    r   r	   r	   R   s    A;r   c                  "    t         j                  r   )r   GreenletExitr   r   r   r   r   Y   s    


r   c                      t        j                         } | j                  r:| j                  j                  s$| j                  j	                  t                      y t               r   )r   r   parentdeadthrowKeyboardInterrupt)currs    r   r   r   `   sB     D{{4;;+++-.!!r   r   c                 L    | 
t               S | t               kD  rt        |       S y r   )__original_stack_size__)sizes    r   r   r   k   s*    <*,,)++*400r   )localdaemon_threads_allowedr   )r   N)#__doc___thread__threadeventlet.supportr   r   eventletr   eventlet.lockr   r4   __patched__errorr   r   r7   r   r   TIMEOUT_MAXr   r   r&   r   r   r	   r
   r   exit_threadr   r   rG   eventlet.corolocalrI   r   rJ   r   r   r   <module>rV      s    @  2    
- 	
8+,#88 "": 	   """ 8\"&11 /
8-.%<< /r   