
    .Ph}                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZ	 d dlZn# e	$ r dZY nw xY wddZ
ddZd Zd Zd Zd Zd	 Zd
 Zd Zd ZdS )    NTc                 X    |rt           t          |            dS t          |            dS )z2Terminate process and its descendants with SIGKILLN)psutil_kill_process_tree_with_psutil!_kill_process_tree_without_psutilprocess
use_psutils     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/joblib/externals/loky/backend/utils.pykill_process_treer      s7     3f(&w/////)'22222    c                 \    t          j        dt                     t          | |           d S )NzKrecursive_terminate is deprecated in loky 3.2, use kill_process_treeinstead)r	   )warningswarnDeprecationWarningr   r   s     r
   recursive_terminater      s9    M	  
 g*555555r   c                    	 t          j        | j                                      d          }n# t           j        $ r Y d S w xY w|d d d         D ],}	 |                                 # t           j        $ r Y )w xY w	 t          j        | j                                                   n# t           j        $ r Y nw xY w|                                  d S )NT)	recursive)r   ProcesspidchildrenNoSuchProcesskilljoin)r   descendants
descendants      r
   r   r   !   s   nW[11::T:JJ   
 "$$B$'  
	OO# 	 	 	D	w{##((****   LLNNNNNs3   -0 AAA))A;:A;?+B+ +B=<B=c                 @   	 t           j        dk    rt          | j                   nt	          | j                   nN# t
          $ rA t          j                    }t          j	        d|            | 
                                 Y nw xY w|                                  dS )z(Terminate a process and its descendants.win32zqFailed to kill subprocesses on this platform. Please installpsutil: https://github.com/giampaolo/psutil
Details:
N)sysplatform_windows_taskkill_process_treer   _posix_recursive_kill	Exception	traceback
format_excr   r   r   r   )r   detailss     r
   r   r   6   s    <7""*7;7777!'+...   &((# # #	
 	
 	
 	 LLNNNNNs   9< ABBc           	          	 t          j        ddddt          |           gd            d S # t           j        $ r}|j        dvr Y d }~d S d }~ww xY w)Ntaskkillz/Fz/Tz/PID)stderr)      )
subprocesscheck_outputstrCalledProcessError
returncode)r   es     r
   r!   r!   M   s    	tVSXX6t	
 	
 	
 	
 	
 	
 (   <z))  *)))))s   (, A
AAc                     t          t          dt          j                  }	 t          j        | |           d S # t
          $ r!}|j        t          j        k    r Y d }~d S d }~ww xY w)NSIGKILL)getattrsignalSIGTERMosr   OSErrorerrnoESRCH)r   kill_signalr1   s      r
   _killr<   \   s{    
 &)V^<<K
[!!!!!    7ek!! "!!!!!	s   9 
A$AA$c                 6   	 t          j        ddt          |           gdd          }n+# t           j        $ r}|j        dk    rd}n Y d}~nd}~ww xY w|                                D ] }t          |          }t          |           !t          |            dS )z@Recursively kill the descendants of a process before killing it.pgrepz-PNT)r)   text    )	r,   r-   r.   r/   r0   
splitlinesintr"   r<   )r   children_pidsr1   cpids       r
   r"   r"   l   s    	"/dCHH%d
 
 
 (   <1MM MMMM ((** $ $4yyd####	#JJJJJs   '* AAAc                 "   d}d t          |                                           D             }|sR|dk    rL|dz  }d t          |                                           D             }t          j        d           |s|dk    Lt	          |          S )zReturn a formatted string with the exitcodes of terminated workers.

    If necessary, wait (up to .25s) for the system to correctly set the
    exitcode of one terminated worker.
       c                 *    g | ]}|j         	|j         S Nexitcode.0ps     r
   
<listcomp>z3get_exitcodes_terminated_worker.<locals>.<listcomp>   s(       
8N
8N8N8Nr   r   r@   c                 *    g | ]}|j         	|j         S rI   rJ   rL   s     r
   rO   z3get_exitcodes_terminated_worker.<locals>.<listcomp>   s,     
 
 
z% J%%%r   g?)listvaluestimesleep_format_exitcodes)	processespatience	exitcodess      r
   get_exitcodes_terminated_workerrY      s     H
  !1!1!3!344  I  HqLLA
 
)**,,--
 
 
	
 	
4  HqLL Y'''r   c                 P    d | D             }dd                     |          z   dz   S )z@Format a list of exit code with names of the signals if possiblec                 <    g | ]}|t          |           d| dS )N())_get_exitcode_name)rM   r1   s     r
   rO   z%_format_exitcodes.<locals>.<listcomp>   s:       ,-ama  ''1'''mmmr   {z, })r   )rX   str_exitcodess     r
   rU   rU      s>     1:  M =)))C//r   c                     t           j        dk    rdS | dk     r,	 dd l} |j        |            j        S # t
          $ r Y dS w xY w| dk    rdS dS )Nr   UNKNOWNr   r+   EXIT)r   r    r5   Signalsname
ValueError)rK   r5   s     r
   r^   r^      s{    
|w y!||	MMM!6>8),,11 	 	 	99		S v9s   4 
AA)T)r7   r   rS   r9   r5   r   r,   r$   r   ImportErrorr   r   r   r   r!   r<   r"   rY   rU   r^    r   r
   <module>rj      s1   				 



            MMMM   FFF3 3 3 36 6 6 6  *  .       *( ( (40 0 0    s   ' 11