Ë
    òT•j£  ã                   óH  — 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(  xr
  eed	d
«      Zej"                  j%                  «       j'                  d«      Zd„ Z eej"                  ej,                  «       Zd„ Z G d„ de«      Zy)é    Né   )Ú	reductionÚget_spawning_popenÚset_spawning_popen)Úspawn)ÚutilÚPopeni   Úwin32ÚfrozenFzpythonservice.exec                 óŽ   — | |k(  xs? t         j                  j                  | «      t         j                  j                  |«      k(  S ©N)ÚosÚpathÚnormcase)Úp1Úp2s     ú8/usr/lib/python3.12/multiprocessing/popen_spawn_win32.pyÚ_path_eqr      s4   € Ø�‰8ÒC”r—w‘w×'Ñ'¨Ó+¬r¯w©w×/?Ñ/?ÀÓ/CÑCÐCó    c                  ó<   — | D ]  }t        j                  |«       Œ y 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y)r	   z@
    Start a subprocess to run the code of a process object
    r   c                 ód  — t        j                  |j                  «      }t        j                  d d«      \  }}t        j                  |d«      }t        j                  t        j                  «       |¬«      }t        j                  «       }t        rat        |t        j                  «      rGt        j                  x|d<   }t        j                   j#                  «       }t        j                  |d<   nd }dj%                  d„ |D «       «      }t'        |dd¬«      5 }		 t        j(                  ||d d d	d|d d «	      \  }
}}}t        j*                  |«       || _        d | _        |
| _        t3        |
«      | _        t7        j8                  | t:        | j4                  t3        |«      f«      | _        t?        | «       	 tA        jB                  ||	«       tA        jB                  ||	«       t?        d «       	 d d d «       y #  t        j*                  |«       ‚ xY w# t?        d «       w xY w# 1 sw Y   y xY w)
Nr   )Ú
parent_pidÚpipe_handleÚ__PYVENV_LAUNCHER__ú c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)z"%s"N© )Ú.0Úxs     r   ú	<genexpr>z!Popen.__init__.<locals>.<genexpr>F   s   è ø€ Ò/ a�v •zÑ/ùs   ‚Ú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__-   sÓ  € Ü×.Ñ.¨{×/@Ñ/@ÓAˆ	ô #×-Ñ-¨d°AÓ6Ñˆ�Ü×#Ñ# G¨QÓ/ˆÜ×$Ñ$´·	±	³Ø18ô:ˆô ×)Ñ)Ó+ˆ
õ ”h˜z¬3¯>©>Ô:Ü"%×"6Ñ"6Ð6ˆC�‰F�ZÜ—*‘*—/‘/Ó#ˆCÜ),¯©ˆCÐ%Ò&àˆCà�h‰hÑ/¨3Ô/Ó/ˆä�#�t TÔ*ð 	)¨hðÜ#*×#8Ñ#8Ø Ø˜$  q¨#¨t°Tó$;Ñ ��B˜˜Sô ×#Ñ# BÔ'ð ˆDŒHØ"ˆDŒOØˆDŒLÜ ›GˆDŒMÜ!Ÿ]™]¨4´Ø,0¯M©M¼3¸w»<Ð+HóJˆDŒNô ˜tÔ$ð)Ü—‘˜y¨(Ô3Ü—‘˜{¨HÔ5ä" 4Õ(÷3	)ð 	)øðÜ×#Ñ# GÔ,Øûô  # 4Õ(ú÷3	)ð 	)ús=   ÄH&Ä7G;ÅA%H&Æ:,HÇ&H&Ç;HÈH&ÈH#È#H&È&H/c                 ó^   — | t        «       u sJ ‚t        j                  || j                  «      S r   )r   r   Ú	duplicater>   )rB   r   s     r   Úduplicate_for_childzPopen.duplicate_for_childc   s+   € ØÔ)Ó+Ñ+Ð+Ð+Ü×"Ñ" 6¨4¯=©=Ó9Ð9r   Nc                 óž  — | j                   �| j                   S |€t        j                  }nt        dt	        |dz  dz   «      «      }t        j
                  t	        | j                  «      |«      }|t        j                  k(  r@t        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.waitg   s¡   € Ø�?‰?Ð&Ø—?‘?Ð"àˆ?Ü×$Ñ$‰Eä˜œ3˜w¨™~°Ñ3Ó4Ó5ˆEä×)Ñ)¬#¨d¯l©lÓ*;¸UÓCˆØ”'×'Ñ'Ò'Ü×-Ñ-¨d¯l©lÓ;ˆDØ”yÒ ÜŸ™��Ø"ˆDŒOà�‰Ðr   c                 ó&   — | j                  d¬«      S )Nr   )r\   )r`   ©rB   s    r   Úpollz
Popen.polly   s   € Ø�y‰y ˆyÓ#Ð#r   c                 ó  — | j                   �y 	 t        j                  t        | j                  «      t
        «       y # t        $ r? t        j                  t        | j                  «      «      }|t        j                  k(  r‚ Y y w xY wr   )	r;   r   ÚTerminateProcessr=   r<   rY   ÚPermissionErrorrX   ÚSTILL_ACTIVE)rB   r_   s     r   Ú	terminatezPopen.terminate|   sm   € Ø�?‰?Ð&Øð	Ü×$Ñ$¤S¨¯©Ó%6¼	ÕBøÜò 	ô ×-Ñ-¬c°$·,±,Ó.?Ó@ˆDØ”w×+Ñ+Ò+Øñ ,ð		ús   �-= ½ABÂBc                 ó$   — | j                  «        y r   )r@   rb   s    r   ÚclosezPopen.close�   s   € Ø�‰Õr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚmethodrO   rR   r`   rc   rh   Úkillrj   r#   r   r   r	   r	   '   s4   „ ñð €Fò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Ý Ý àˆ)€ð €	Ø
�,‰,˜'Ñ
!Ò
C¡g¨c°8¸UÓ&C€Ø�^‰^×!Ñ!Ó#×,Ñ,Ð-@ÓA€
òDñ �c—n‘n c×&:Ñ&:Ó;Ð	;€ò$ôjˆFõ jr   