
    h                     2    d Z ddlZddlmZ  G d de      Zy)z[
The implementation of thread patching for Python versions
after 3.13.

Internal use only.
    N   )BasePatcherc                       e Zd Zd Zd Zy)Patcherc                    ddl m} | j                  j                  j	                         D ]  }| |       k(  rddlm} ddlm} dd|_	         |       |_
        |j                  j                   |              |j                  j                  |_        |j                  |j                  j                  k(  sJ | j                  |d | j                        |_         y )Nr   )main_native_thread)
getcurrent)_ThreadHandlec                     | S N )	new_idents    \/var/www/html/engine/venv/lib/python3.12/site-packages/gevent/monkey/_patch_thread_gte313.py<lambda>z.Patcher.patch_active_threads.<locals>.<lambda>   s    I     r   )gevent.threadingr   threading_mod_activevaluesgreenletr	   gevent.threadr
   _after_fork_handle_set_greenletident_ident(_make_existing_non_main_thread_join_funcjoin)selfr   threadr	   r
   s        r   patch_active_threadszPatcher.patch_active_threads   s    7((00779 	\F+--/7%E"!.,,Z\: & 4 4||v~~';';;;;GGHLHLHZHZ\FK	\r   c                      dd l }ddlm  j                   j                   j
                  |j                         x_         fd}  j                  d|       y )Nr   r   )
patch_itemc                  v   j                   j                          ddlm}  	  |          G d d      } |       _         j                         sJ t        	j                               D ]Q  }|j                  s|u r|j                         s%	 |j                   j                  d       |j                         r-S           	dj                         y #  ddlm}   |       j
                  gt        j                           Y xY w# t        $ r |j                   j                          Y w xY w)Nr   )sleep)get_hubc                       e Zd Zd Zd Zd Zy)jPatcher.patch_threading_shutdown_on_main_thread_not_already_patched.<locals>._shutdown.<locals>.FakeHandlec                      y)NFr   r   s    r   is_donezrPatcher.patch_threading_shutdown_on_main_thread_not_already_patched.<locals>._shutdown.<locals>.FakeHandle.is_done=   s     r   c                      y r   r   r*   s    r   	_set_doneztPatcher.patch_threading_shutdown_on_main_thread_not_already_patched.<locals>._shutdown.<locals>.FakeHandle._set_done?       r   c                      y r   r   r*   s    r   r   zoPatcher.patch_threading_shutdown_on_main_thread_not_already_patched.<locals>._shutdown.<locals>.FakeHandle.joinA   r.   r   N)__name__
__module____qualname__r+   r-   r   r   r   r   
FakeHandler(   <   s    !r   r3   gMbP?	_shutdown)r   r-   geventr%   r&   print_exceptionsysexc_infois_alivelist	enumeratedaemonr   RuntimeErrororig_shutdown)
r%   r&   r3   t	_greenletmain_threadr>   r#   r   r   s
       r   r4   zVPatcher.patch_threading_shutdown_on_main_thread_not_already_patched.<locals>._shutdown*   s    ))+$F  #-,K''))) -1134 	88qK/jjl		u- jjl	 O}k43E3EFQF ,)	)))EcllnE: ( 		++-s   C D2D#D87D8r4   )r   apir#   rA   r   r>   r	   r@   )r   r   r4   r@   rA   r>   r#   r   s   `  @@@@@r   ;patch_threading_shutdown_on_main_thread_not_already_patchedzCPatcher.patch_threading_shutdown_on_main_thread_not_already_patched!   sa    #&&****,4,?,?,AA	K)/	G /	Gb 	4%%{I>r   N)r0   r1   r2   r!   rC   r   r   r   r   r      s    \":?r   r   )__doc__r7   _patch_thread_commonr   r   r   r   r   <module>rF      s"     .N?k N?r   