
    Ph"                     j   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                  re	dgz  Z	ne	dd	gz  Z	ej                  j                  d
      Zej                         Zdaej                  j#                  d
 e       ej                  rdndefdef       da G d de      Zdad Zd ZeZy)z=Implements the standard threading module, using greenthreads.    N)thread)time)	greenlets)
_start_new_thread_allocate_lock_sleeplocal
stack_sizeLockcurrentThreadcurrent_thread_after_fork	_shutdown
_get_ident	get_ident_set_sentinel	threadingr   _threadr      c                       e Zd ZdZd Zd ZddZd ZeZd Z	e	Z
 eee	      Z ed       Zd	 ZeZ ed
       Zd ZeZy)_GreenThreadzQWrapper for GreenThread objects to provide Thread-like attributes
    and methodsc                 @    || _         dt        z  | _        t        dz  ay )NzGreenThread-%dr   )_g_count_name)selfgs     cC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\eventlet/green/threading.py__init__z_GreenThread.__init__$   s    %.
!    c                 <    d| j                   d| j                  dS )Nz<_GreenThread(z, z)>)r   r   r   s    r   __repr__z_GreenThread.__repr__*   s    +/::tww??r    Nc                 6    | j                   j                         S N)r   wait)r   timeouts     r   joinz_GreenThread.join-   s    ww||~r    c                     | j                   S r%   )r   r"   s    r   getNamez_GreenThread.getName0   s    zzr    c                 $    t        |      | _        y r%   )strr   )r   names     r   setNamez_GreenThread.setName4   s    Y
r    c                 ,    t        | j                        S r%   )idr   r"   s    r   <lambda>z_GreenThread.<lambda>:   s    "TWW+r    c                      yNT r"   s    r   isAlivez_GreenThread.isAlive<   s    r    c                      yr3   r4   r"   s    r   r1   z_GreenThread.<lambda>@   s    4r    c                     | j                   S r%   )daemonr"   s    r   isDaemonz_GreenThread.isDaemonB   s    {{r    r%   )__name__
__module____qualname____doc__r   r#   r(   r*   get_namer.   set_namepropertyr-   identr5   is_aliver8   r9   	is_daemonr4   r    r   r   r       sa    @HHGW%D-.EH'(FIr    r   c                     t         st        d      a t        t         j                  d      rt        | d      s| j                  | _        | S )Nr   r>   )__threading
__import__hasattrThreadr*   r>   )ts    r   _fixup_threadrJ   J   s;      -""J/:&YY
Hr    c                     t        j                         } | st        t        j	                               S 	 t
        j                  t        |       j                        }||S t        2t        j                  j                  t        d      j                        a
t               D cg c]  }|j                   k(  s| }}|r|d   S fd}	 | j#                  |       t%        |       x}<   |S # t        $ r i xt
        _        Y w xY wc c}w # t        $ r! t        t        j	                               }Y |S w xY w)Nr   r   c                     = y r%   r4   )r   activeg_ids    r   cleanupzcurrent_thread.<locals>.cleanupx   s
    4Lr    )greenlet
getcurrentrJ   __orig_threadingr   __threadlocalrM   AttributeErrorr0   get__patched_enumerateeventletpatcherpatch_functionrF   	enumeraterA   linkr   )r   rI   thfoundrO   rM   rN   s        @@r   r   r   [   s6   A-<<>??+%% a5D

4A} "&..==j>U>_>_`-/D/B288t3CR/EDQx+	w (?*F4LHA  +(**%+ E  = *99;< H=s/   C7 +D DD 7DD&EE)r=   rW   eventlet.greenr   r   eventlet.supportr   rP   six__patched__PY2rX   originalrR   r	   rS   rV   injectglobalsr   objectr   rE   rJ   r   r   r4   r    r   <module>rg      s    C  !  2 
= 77L>!KK11K##,,[9  &&(  	    IXi0TN	 
$6 $N ")V r    