§
    dŠtj}  ã                   ó¬   — 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     úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/joblib/externals/loky/backend/utils.pyÚkill_process_treer      s7   € àð 3•fÐ(Ý& 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  € ðÝ”n W¤[Ñ1Ô1×:Ò:ÀTÐ:ÑJÔJˆˆøÝÔð ð ð Øˆˆðøøøð
 " $ $ B $Ô'ð ð ˆ
ð	Ø�OŠOÑÔÐÐøÝÔ#ð 	ð 	ð 	ØˆDð	øøøðÝŒ�w”{Ñ#Ô#×(Ò(Ñ*Ô*Ð*Ð*øÝÔð ð ð Øˆðøøøà‡L‚L�N„N€N€N€Ns3   ‚-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å! '¤+Ñ.Ô.Ð.øøÝð ð ð ÝÔ&Ñ(Ô(ˆÝŒð#à ð#ð #ñ	
ô 	
ð 	
ð 	�Š‰Œˆˆˆðøøøð ‡L‚L�N„N€N€N€Ns   ‚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‹   € ð	ÝÔØ˜˜t V­S°©X¬XÐ6¸tð	
ñ 	
ô 	
ð 	
ð 	
ð 	
øõ Ô(ð ð ð àŒ<˜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ðÝ
Œ��[Ñ!Ô!Ð!Ð!Ð!øÝð ð ð ð Œ7•e”kÒ!Ð!Øð "Ð!Ð!Ð!Ð!Ð!øøøøð	øøø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Ä   € ð	Ý"Ô/Ø�d�C ™HœHÐ%¨d¸ð
ñ 
ô 
ˆˆøõ Ô(ð ð ð àŒ<˜1ÒÐØˆMˆMàð ˆMˆMˆMˆMøøøøðøøøð ×(Ò(Ñ*Ô*ð $ð $ˆÝ�4‰yŒyˆÝ˜dÑ#Ô#Ð#Ð#å	ˆ#�J„J€J€J€Js   ‚'* ª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 )z¸Return 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ˆŒ
Ð8NÐ8NÐ8Nr   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ð ð ˜H qšL˜LØ�A‰ˆð
ð 
å˜)×*Ò*Ñ,Ô,Ñ-Ô-ð
ñ 
ô 
ˆ	õ
 	Œ
�4ÑÔÐð ð ˜H qšL˜Lõ ˜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:   € ð ð ð Ø,-¸a¸mÕ˜aÑ Ô Ð'Ð' 1Ð'Ð'Ð'¸m¸m¸mr   Ú{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à�!‚|€|ð	ØˆMˆMˆMà!�6”> 8 )Ñ,Ô,Ô1Ð1øÝð 	ð 	ð 	Ø�9�9ð	øøøà	�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  ðØ 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð ðØ€M€M€M€MøØð ð ð Ø€F€F€Fðøøøð3ð 3ð 3ð 3ð6ð 6ð 6ð 6ðð ð ð*ð ð ð.ð ð ðð ð ð ð ð ð*(ð (ð (ð40ð 0ð 0ðð ð ð ð s   ¢' §1°1