
    h                     B   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mZ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d Z eej        ej                   Zd Z G d de          ZdS )    N   )	reductionget_spawning_popenset_spawning_popen)spawn)utilPopeni   win32frozenFzpythonservice.exec                     | |k    p?t           j                            |           t           j                            |          k    S N)ospathnormcase)p1p2s     8/usr/lib/python3.11/multiprocessing/popen_spawn_win32.py_path_eqr      s6    8Crw''++rw/?/?/C/CCC    c                  8    | D ]}t          j        |           d S r   )_winapiCloseHandle)handleshandles     r   _close_handlesr      s/     $ $F####$ $r   c                   @    e Zd ZdZdZd Zd Zd
dZd Zd Z	e	Z
d	 ZdS )r	   z@
    Start a subprocess to run the code of a process object
    r   c                 x   t          j        |j                  }t          j        d d          \  }}t          j        |d          }t          j        t          j	                    |          }t          j
                    }t          rYt          |t          j                  r?t          j        x|d<   }t          j                                        }t          j        |d<   nd }d                    d |D                       }t'          |dd          5 }		 t          j        ||d d d	d|d d 	  	        \  }
}}}t          j        |           n#  t          j        |            xY w|| _        d | _        |
| _        t3          |
          | _        t7          j        | t:          | j        t3          |          f          | _        t?          |            	 tA          j!        ||	           tA          j!        ||	           t?          d            n# t?          d            w xY w	 d d d            d S # 1 swxY w Y   d S )
Nr   )
parent_pidpipe_handle__PYVENV_LAUNCHER__ c              3       K   | ]	}d |z  V  
dS )z"%s"N ).0xs     r   	<genexpr>z!Popen.__init__.<locals>.<genexpr>E   s&      //avz//////r   wbT)closefdF)"r   get_preparation_data_namer   
CreatePipemsvcrtopen_osfhandleget_command_liner   getpidget_executableWINENVr   sys
executable_base_executableenvironcopyjoinopenCreateProcessr   pid
returncode_handleintsentinelr   Finalizer   	finalizerr   r   dump)selfprocess_obj	prep_datarhandlewhandlewfdcmd
python_exeenvto_childhphtr:   tids                 r   __init__zPopen.__init__,   sr   .{/@AA	 #-dA66#GQ//$	18: : : )++
  	hz3>:: 	"%"66CFZ*//##C),C%&&Chh//3/////#tT*** 	)h#*#8$q#tT$; $; BS #B''''#G,,, DH"DODLGGDM!]4,0M3w<<+HJ JDN t$$$)y(333{H555"4(((("4(((((3	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)sC   H/5EH/E##A/H/*H=H/HH//H36H3c                 Z    | t                      u sJ t          j        || j                  S r   )r   r   	duplicater>   )rB   r   s     r   duplicate_for_childzPopen.duplicate_for_childb   s/    )++++++"64=999r   Nc                 `   | j         |t          j        }n#t          dt	          |dz  dz                       }t          j        t	          | j                  |          }|t          j        k    r8t          j        | j                  }|t          k    rt          j         }|| _         | j         S )Nr   i  g      ?)r;   r   INFINITEmaxr=   WaitForSingleObjectr<   WAIT_OBJECT_0GetExitCodeProcess	TERMINATEsignalSIGTERM)rB   timeoutmsecsrescodes        r   waitz
Popen.waitf   s    ?"(As7T>C#78899-c$,.?.?GGCg+++1$,??9$$"N?D"&r   c                 .    |                      d          S )Nr   r\   )r`   rB   s    r   pollz
Popen.pollv   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      ?rb   )r;   r   TerminateProcessr=   r<   rY   OSErrorr`   rc   s    r   	terminatezPopen.terminatey   sw    ?"(T\):):IFFFFF   99S9))1 211 #"s   ,7 !AAc                 .    |                                   d S r   )r@   rc   s    r   closezPopen.close   s    r   r   )__name__
__module____qualname____doc__methodrO   rR   r`   rd   rh   killrj   r#   r   r   r	   r	   &   s          F4) 4) 4)l: : :    $ $ $   D    r   )r   r,   rZ   r2   r   contextr   r   r    r   r   __all__rY   platformgetattrWINEXEr3   lowerendswith
WINSERVICEr   r4   r1   r   objectr	   r#   r   r   <module>r{      s=   				   



  F F F F F F F F F F            ) 	
,'
!
Cggc8U&C&C^!!##,,-@AA
D D D Xcnc&:;;	;$ $ $^ ^ ^ ^ ^F ^ ^ ^ ^ ^r   