
    id                        d Z ddlZddlm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 G d d          Zd Zd dZd!dZd"dZeZd Zd ZeZ d Z!ej"        Z"d Z# eed          rej$        Z%ddZ$ddl&m'Z(  eed          rej)        Z) eed          r	ej*        Z*dS dS )#z:Implements the standard thread module, using greenthreads.    N)	greenletsgreenthread)with_timeout)Lock)r   LockType_ThreadHandle_count_get_main_thread_ident_local_make_thread_handleallocateallocate_lockexit	get_identinterrupt_main
stack_sizestart_joinable_thread	start_newstart_new_thread_is_main_interpreterc                      t                      S N)r        @/usr/local/lib/python3.11/dist-packages/eventlet/green/thread.py_set_sentinelr      s     ??r   c                      t           S r   __threadcountr   r   r   r
   r
   !   s    r   c                 d    |  t          t          j                              S t          |           S r   )idgreenlet
getcurrent)grs    r   r   r   %   s)    	z(%''((("vvr   c                 ^    t           dz  a 	  | |i | t           dz  a d S # t           dz  a w xY wN   r   )funcargskwargss      r   __thread_bodyr,   ,   sF    QMdfs     ,c                   @    e Zd ZddZd Zd Zed             ZddZdS )r	   Nc                 "    || _         d| _        d S )NF)_greenthread_done)selfr   s     r   __init__z_ThreadHandle.__init__6   s    '


r   c                     d| _         d S NT)r0   r1   s    r   	_set_donez_ThreadHandle._set_done:   s    


r   c                 6    | j         | j         j        S | j        S r   )r/   deadr0   r5   s    r   is_donez_ThreadHandle.is_done=   s    ($))zr   c                 *    t          | j                  S r   )r   r/   r5   s    r   identz_ThreadHandle.identB   s    *+++r   c                     t          | j        d          sd S |t          || j        j                  S | j                                        S )Nwait)hasattrr/   r   r=   )r1   timeouts     r   joinz_ThreadHandle.joinF   sM    t(&11 	F):)?@@@ %%'''r   r   )	__name__
__module____qualname__r2   r6   r9   propertyr;   r@   r   r   r   r	   r	   5   su               
 , , X,( ( ( ( ( (r   r	   c                 r    t          j                    }| t          |          k    sJ t          |          S )Nr   )r#   r$   r   r	   )r;   r   s     r   r   r   N   s:    %''KIk******[1111r   r   Fc                    dt           j        cxk    rdk     rCn n@t          | dd          dk    r+t          | d          r| j        j        fd}|_        |pi }|rt          j        nt          j        } |t          | ||          S )N)      )rG      rB    	threading__self__c                      	                t          dd           j                                         d S d S # t          dd           j                                         w w xY w)N_tstate_lock)getattrrN   release)bootstrap_innerthreads   r   wrap_bootstrap_innerz+__spawn_green.<locals>.wrap_bootstrap_innerb   s    2!!! 6>488D'//11111 ED76>488D'//1111 Es	   
; -A()
sysversion_inforO   r>   rL   _bootstrap_innerr   spawnspawn_nr,   )functionr*   r+   joinablerS   
spawn_funcrQ   rR   s         @@r   __spawn_greenr\   T   s    #",,,,W,,,,,,33{BB*-- C " 1	2 	2 	2 	2 	2 	2 #7\rF&.G""K4GJ:mXtV<<<r   Tc                 \    t          | d          }|t          |          }n||_        |S )NT)rZ   r   )r\   r	   r/   )rY   handledaemongs       r   r   r   q   s8    h...A~1---Mr   c                 D    t          | ||          }t          |          S )N)r*   r+   )r\   r   )rY   r*   r+   r`   s       r   r   r   z   s"    hT&999AQ<<r   c                  p    t          j                    } | j        | j        } | j        t          |           S r   )r#   r$   parentr   r   s    r   r   r      s:    %''K


(!( 

([!!!r   c                       t          d          S r'   )r   )as    r   r   r      s    A;;r   c                      t           j        r   )r#   GreenletExitr   r   r   r   r      s    

r   c                      t          j                    } | j        r4| j        j        s(| j                            t                                 d S t                      r   )r#   r$   rc   r8   throwKeyboardInterrupt)currs    r   r   r      sU      D{ "4;+ "+--.....!!!r   r   c                 h    | t                      S | t                      k    rt          |           S d S r   )__original_stack_size__)sizes    r   r   r      s8    <*,,,)++++*4000Dr   )localdaemon_threads_allowed	_shutdownr   )r   NFr4   )r   N)+__doc___thread__threadeventlet.supportr   r#   eventletr   eventlet.timeoutr   eventlet.lockr   rT   __patched__errorr   r    r>   r   r   TIMEOUT_MAXr
   r   r,   r	   r   r\   r   r   r   r   r   r   r   exit_threadr   r   rm   eventlet.corolocalro   r   rp   rq   r   r   r   <module>r~      sK   @ @     2 2 2 2 2 2             ) ) ) ) ) )       



0 0 0 	
78+,, 9#8   "       ( ( ( ( ( ( ( (22 2 2= = = =:      
 	" " "         "" " " 78\"" 	&1    / . . . . .
78-.. =%<
78[!! #"III# #r   