
    Sf                     n   d dl Z 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 ddlmZ ddl	m
Z
 dgZdZej        d	k    o eed
d          Zej                                                            d          Zej        d	k    r'	 d dl
mZmZ e
j        Zn# e$ r d dlmZmZ d ZY nw xY w G d d          ZdS )    N   )context)spawn)	reduction)_winapiPopeni   win32frozenFzpythonservice.exe)CreateProcessGetExitCodeProcessc                 .    |                                   d S N)Close)handles    L/var/www/html/env/lib/python3.11/site-packages/billiard/popen_spawn_win32.pyclose_thread_handler   $   s    LLNNNNN    c                   @    e Zd ZdZdZdZd Zd Zd Zd
dZ	d Z
d	 ZdS )r   z@
    Start a subprocess to run the code of a process object
    r   Nc                    dt           j        d<   t          j                     t          j        |j                  }t          j        d d          \  }}t          j	        |d          }t          j
        t          j                    |          }d                    d |D                       }t          j        |dd	          5 }	 t          t          j                    |d d d
dd d d 	  	        \  }}	}
}t#          |	           n#  t          j        |            xY w|
| _        d | _        || _        t-          |          | _        t1          j        |            	 t5          j        ||           t5          j        ||           t1          j        d            n# t1          j        d            w xY w	 d d d            d S # 1 swxY w Y   d S )N1MULTIPROCESSING_FORKING_DISABLEr   )
parent_pidpipe_handle c              3       K   | ]	}d |z  V  
dS )z"%s"N ).0xs     r   	<genexpr>z!Popen.__init__.<locals>.<genexpr>:   s&      //avz//////r   wbT)closefdF)osenvironr   _Django_old_layout_hack__saveget_preparation_data_namer   
CreatePipemsvcrtopen_osfhandleget_command_linegetpidjoinioopenr   get_executabler   CloseHandlepid
returncode_handleintsentinelr   set_spawning_popenr   dump)selfprocess_obj	prep_datarhandlewhandlewfdcmdto_childhphtr1   tids               r   __init__zPopen.__init__/   s   8;
45+---.{/@AA	 #-dA66#GQ//$	18: : :hh//3/////WS$--- 	1#0(**C$q$d$< $< BS $B''''#G,,, DH"DODLGGDM &t,,,1y(333{H555*40000*400000/	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1sC   G<DGDA G*FGF22GG
Gc                 r    | j         /	 t          j        | j                    d | _         d S # d | _         w xY wd S r   )r5   r   r0   r8   s    r   closezPopen.closeU   sH    =$%#DM222 $$$$$	 %$s   + 	4c                 d    | t          j                    u sJ t          j        || j                  S r   )r   get_spawning_popenr   	duplicater5   )r8   r   s     r   duplicate_for_childzPopen.duplicate_for_child\   s1    w1333333"64=999r   c                 V   | j         |t          j        }n#t          dt	          |dz  dz                       }t          j        t	          | j                  |          }|t          j        k    r3t          | j                  }|t          k    rt          j         }|| _         | j         S )Nr   i  g      ?)r2   r   INFINITEmaxr4   WaitForSingleObjectr3   WAIT_OBJECT_0r   	TERMINATEsignalSIGTERM)r8   timeoutmsecsrescodes        r   waitz
Popen.wait`   s    ?"(As7T>C#78899-c$,.?.?GGCg+++)$,779$$"N?D"&r   c                 .    |                      d          S )Nr   rS   )rW   rE   s    r   pollz
Popen.pollp   s    yyy###r   c                     | j         W	 t          j        t          | j                  t
                     d S # t          $ r |                     d           Y d S w xY wd S )Ng      ?rY   )r2   r   TerminateProcessr4   r3   rP   OSErrorrW   rE   s    r   	terminatezPopen.terminates   sw    ?"(T\):):IFFFFF   99S9))1 211 #"s   ,7 !AAr   )__name__
__module____qualname____doc__methodr5   rC   rF   rJ   rW   rZ   r^   r   r   r   r   r   (   s          FH$1 $1 $1L% % %: : :    $ $ $    r   )r-   r"   r(   rQ   sys r   r   r   compatr   __all__rP   platformgetattrWINEXE
executablelowerendswith
WINSERVICEr   r   r0   r   ImportError_subprocessr   r   r   r   <module>rq      s   				 				   



                        ) 	
,'
!
Cggc8U&C&C^!!##,,-@AA
 <7========%1   AAAAAAAA	 	 	 	 	Q Q Q Q Q Q Q Q Q Qs   B B%$B%