grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i«ã@s¸ddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdkoreed d ƒZej ¡ d ¡Zd d „Zeejejƒ Zdd„ZGdd„deƒZdS)éNé)Ú reductionÚget_spawning_popenÚset_spawning_popen)Úspawn)ÚutilÚPopeniÚwin32ÚfrozenFzpythonservice.execCs ||kptj |¡tj |¡kS©N)ÚosÚpathÚnormcase)Zp1Zp2©rú9/usr/lib64/python3.9/multiprocessing/popen_spawn_win32.pyÚ_path_eqsrcGs|D]}t |¡qdSr )Ú_winapiÚ CloseHandle)ZhandlesÚhandlerrrÚ_close_handlessrc@sJeZdZdZdZdd„Zdd„Zddd „Zd d „Zd d „Z e Z dd„Z dS)rz@ Start a subprocess to run the code of a process object rc Csrt |j¡}t dd¡\}}t |d¡}tjt  ¡|d�}d  dd„|Dƒ¡}t  ¡}t r‚t |tjƒr‚tj}tj ¡}tj|d<nd}t|ddd ��È} z0t ||ddd d|dd¡ \} } } } t | ¡Wnt |¡‚Yn0| |_d|_| |_t| ƒ|_t |t|jt|ƒf¡|_t|ƒz$t  !|| ¡t  !|| ¡Wtdƒn tdƒ0Wdƒn1�sd0YdS) Nr)Z parent_pidZ pipe_handleú css|]}d|VqdS)z"%s"Nr)Ú.0ÚxrrrÚ 9óz!Popen.__init__..Ú__PYVENV_LAUNCHER__ÚwbT)ÚclosefdF)"rZget_preparation_dataÚ_namerZ CreatePipeÚmsvcrtÚopen_osfhandleZget_command_liner ÚgetpidÚjoinZget_executableÚWINENVrÚsysÚ executableÚ_base_executableÚenvironÚcopyÚopenZ CreateProcessrÚpidÚ returncodeÚ_handleÚintÚsentinelrÚFinalizerÚ finalizerrrÚdump)ÚselfÚ process_objZ prep_dataZrhandleZwhandleZwfdÚcmdZ python_exeÚenvZto_childZhpZhtr*ÚtidrrrÚ__init__,sF   ÿ  þ    ÿ zPopen.__init__cCst ||j¡Sr )rZ duplicater.)r2rrrrÚduplicate_for_childaszPopen.duplicate_for_childNcCst|jdurn|durtj}ntdt|ddƒƒ}t t|jƒ|¡}|tjkrnt |j¡}|t krht j }||_|jS)Nriègà?) r+rZINFINITEÚmaxr-ZWaitForSingleObjectr,Z WAIT_OBJECT_0ZGetExitCodeProcessÚ TERMINATEÚsignalÚSIGTERM)r2ÚtimeoutÚmsecsÚresÚcoderrrÚwaites   z Popen.waitcCs |jdd�S)Nr©r=)rA©r2rrrÚpollusz Popen.pollcCsJ|jdurFzt t|jƒt¡Wn$tyD|jdd�dur@‚Yn0dS)Ngð?rB)r+rZTerminateProcessr-r,r:ÚOSErrorrArCrrrÚ terminatexs   zPopen.terminatecCs | ¡dSr )r0rCrrrÚclose‚sz Popen.close)N) Ú__name__Ú __module__Ú __qualname__Ú__doc__Úmethodr7r8rArDrFÚkillrGrrrrr&s5 )r rr;r$rÚcontextrrrÚrrÚ__all__r:ÚplatformÚgetattrZWINEXEr%ÚlowerÚendswithZ WINSERVICErr&r#rÚobjectrrrrrÚs