§
    ØjÁ  ã                   ó¬   — 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     ú˜/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.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 t           j        ¬¦  «         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Úcreationflags)é€   éÿ   )Ú
subprocessÚcheck_outputÚstrÚCREATE_NO_WINDOWÚCalledProcessErrorÚ
returncode)r   Úes     r
   r!   r!   M   s’   € ðÝÔØ˜˜t V­S°©X¬XÐ6ØÝ$Ô5ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
øõ
 Ô(ð ð ð àŒ<˜zÐ)Ð)ð ð *Ð)Ð)Ð)Ð)Ð)øøøøðøøøs   ‚37 ·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_signalr3   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/   r1   r2   Ú
splitlinesÚintr"   r>   )r   Úchildren_pidsr3   Úcpids       r
   r"   r"   n   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   rB   c                 ó*   — g | ]}|j         ®	|j         ‘ŒS rK   rL   rN   s     r
   rQ   z3get_exitcodes_terminated_worker.<locals>.<listcomp>“   s,   € ð 
ð 
ð 
àØŒzÐ%ð ŒJà%Ð%Ð%r   gš™™™™™©?)ÚlistÚvaluesÚtimeÚsleepÚ_format_exitcodes)Ú	processesÚpatienceÚ	exitcodess      r
   Úget_exitcodes_terminated_workerr[   ƒ   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)rO   r3   s     r
   rQ   z%_format_exitcodes.<locals>.<listcomp>Ÿ   s:   € ð ð ð Ø,-¸a¸mÕ˜aÑ Ô Ð'Ð' 1Ð'Ð'Ð'¸m¸m¸mr   Ú{z, Ú})r   )rZ   Ústr_exitcodess     r
   rW   rW   �   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    r7   ÚSignalsÚnameÚ
ValueError)rM   r7   s     r
   r`   r`   ¥   s{   € Ý
„|�wÒÐð ˆyà�!‚|€|ð	ØˆMˆMˆMà!�6”> 8 )Ñ,Ô,Ô1Ð1øÝð 	ð 	ð 	Ø�9�9ð	øøøà	�SŠˆð ˆvàˆ9s   š4 ´
AÁA)T)r9   r   rU   r;   r7   r   r-   r$   r   ÚImportErrorr   r   r   r   r!   r>   r"   r[   rW   r`   © r   r
   ú<module>rl      s1  ðØ 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð ðØ€M€M€M€MøØð ð ð Ø€F€F€Fðøøøð3ð 3ð 3ð 3ð6ð 6ð 6ð 6ðð ð ð*ð ð ð.ð ð ð"ð ð ð ð ð ð*(ð (ð (ð40ð 0ð 0ðð ð ð ð s   ¢' §1°1