
    g                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZ ddlmZmZmZ dgZ G d	 d
      Z G d d      Zedk(  rd dlZ ej,                  d      Zej1                  dedd       ej1                  dedd       ej7                         Zi ZdZ	  e j>                  ej@                  d      5 Z!d ejD                         _#        	  ejH                  e!      Z% ejL                  e%        ejH                  e!      Z' ejD                         `#	 ddd       e'jQ                         Ze!e!j]                           ej^                  e       yy#  ejD                         `#w xY w# 1 sw Y   UxY w# e)$ rK  e*d        e*ejV                   d        e*d       d dl,Z, e* e,jZ                                 e*d       Y w xY w# e!e!j]                           ej^                  e       w xY w)    N)BytesIO)utilprocess)wait)set_spawning_popen   )	reductionresource_trackerspawnPopenc                       e Zd Zd Zd Zy)_DupFdc                 8    t        j                  |      | _        y N)r	   _mk_inheritablefdselfr   s     c/var/www/openai/venv/lib/python3.12/site-packages/joblib/externals/loky/backend/popen_loky_posix.py__init__z_DupFd.__init__   s    ++B/    c                     | j                   S r   )r   r   s    r   detachz_DupFd.detach   s    wwr   N)__name__
__module____qualname__r   r    r   r   r   r      s    0r   r   c                   b    e Zd ZdZeZd Zd Zej                  fdZ
d
dZd Zd Zed	        Zy)r   lokyc                     t         j                  j                          t         j                  j                          d | _        g | _        | j                  |       y r   )sysstdoutflushstderr
returncode_fds_launch)r   process_objs     r   r   zPopen.__init__+   s<    



	[!r   c                 b    | j                   j                  |       t        j                  |      S r   )r'   appendr	   r   r   s     r   duplicate_for_childzPopen.duplicate_for_child2   s%    		((,,r   c                    | j                   	 	 t        j                  | j                  |      \  }}	 || j                  k(  rmt        j
                  |      r't        j                  |       | _         | j                   S t        j                  |      sJ t        j                  |      | _         | j                   S # t        $ r Y y w xY wr   )	r&   oswaitpidpidOSErrorWIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS)r   flagr0   stss       r   pollz
Popen.poll6   s    ??"!zz$((D9HC dhh>>#&'){{3'7&7DO  <<,,,&(nnS&9DO      s   #B; ;	CCNc                     | j                   D|t        | j                  g|      sy | j                  |dk(  rt        j
                        S d      S | j                   S )Ng        r   )r&   r   sentinelr8   r.   WNOHANG)r   timeouts     r   r   z
Popen.waitI   sP    ??""T]]OW5997c>RZZAAqAAr   c                     | j                   0	 t        j                  | j                  t        j
                         y y # t        $ r Y y t        $ r | j                  d       Y y w xY w)Ng?)r<   )	r&   r.   killr0   signalSIGTERMProcessLookupErrorr1   r   r   s    r   	terminatezPopen.terminateR   sa    ??"&..1 # &  99S9)1 2s   .> 	A'	A'&A'c                    t         j                  j                         }t               }t	        |        	 t        j                  |j                  t        |dd            }t        j                  ||       t        j                  ||       t	        d        	 t        j                         \  }}t        j                         \  }}t        j                  g}	|	d| j                  gz  }	|	dt!        |j"                        gz  }	|	dt!        t        j$                  |            gz  }	t        j$                  |       t        j$                  |       | xj&                  |||gz  c_        t        j(                  dk\  r,t        j"                  dk(  r|d   d	   }
| j+                  |
       d
dlm}  ||	| j&                  |j.                        }t1        j2                  d| d|	        || _        d}t7        ||      sd}t        j8                  |d      5 }|j;                   t        ||                    d d d        || _        |&t1        j>                  | t        j@                  |f       ||fD ]  }|t        j@                  |        y # t	        d        w xY w# 1 sw Y   jxY w# &t1        j>                  | t        j@                  |f       fD ]  }|t        j@                  |        w xY w)Ninit_main_moduleTz-m--process-name--pipe)      posixmp_tracker_argsr   r   )	fork_exec)envzlaunched python with pid z
 and cmd:
	getbuffergetvaluewb)!r
   _resource_trackergetfdr   r   r   get_preparation_data_namegetattrr	   dumpr.   piper"   
executabler   strnamer   r'   version_infor,   rK   rL   r   debugr:   hasattrfdopenwriter0   Finalizeclose)r   r)   
tracker_fdfp	prep_dataparent_rchild_wchild_rparent_w
cmd_pythonmp_tracker_fdrK   r0   methodfr   s                   r   r(   zPopen._launch\   sv   %77==?
Y4 		%22!!%7>I NN9b)NN;+ t$$	! "	Hg "	GX ..)J411J+S1A1A-BCCJ8S)B)B7)K%LMMJ%%g.%%j1II'7J77I6)bgg.@ )*; <T B((7,J		{GCJJ+C5J<H %DM F2v&#8T*a+F+-. +DH#dBHHxk:(>HHRL )I t$< +* #dBHHxk:(>HHRL )s7   AJ E;J) !J4J) JJ&"J) )2K4K4c                       y)NTr   r   r   r   thread_is_spawningzPopen.thread_is_spawning   s    r   r   )r   r   r   rj   r   DupFdr   r,   r.   r;   r8   r   rB   r(   staticmethodrm   r   r   r   r   r   '   sH    FE"- 

 &5!n  r   __main__zCommand line parserrF   TzFile handle for the pipe)typerequiredhelprE   z Identifier for debugging purpose)rq   defaultrs   rbzR

--------------------------------------------------------------------------------z failed with traceback: zP--------------------------------------------------------------------------------zQ
--------------------------------------------------------------------------------)0r.   r"   r?   pickleior   multiprocessingr   r   multiprocessing.connectionr   multiprocessing.contextr    r	   r
   r   __all__r   r   r   argparseArgumentParserparseradd_argumentintrX   
parse_argsargsinfoexitcoder]   rV   from_parentcurrent_process_inheritingloadrc   preparer)   
_bootstrap	Exceptionprintprocess_name	traceback
format_excr`   exitr   r   r   <module>r      s   
 
    ) + 6 0 0 ) n nb z$X$$%:;F
sT0J   /	   DDHRYYtyy$';48#G##%1:'FKK4	i()fkk+6+G++-9 ( ))+ "S 4 ,G++-9 ('   ""##;<=h"i""$%o "sU   'F E86E"E8$F "E55E88F=F AGG GG &G=