a DOg@sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdkoreed d Zejd Zd d Zeejej ZddZGdddeZdS)N) reductionget_spawning_popenset_spawning_popen)spawn)utilPopeniZwin32frozenFzpythonservice.execCs ||kptj|tj|kSN)ospathnormcase)Zp1Zp2rF/opt/alt/python39/lib64/python3.9/multiprocessing/popen_spawn_win32.py_path_eqsrcGs|D]}t|qdSr )_winapi CloseHandle)Zhandleshandlerrr_close_handlessrc@sFeZdZdZddZddZdddZd d Zd d ZeZ d dZ dS)rrc Csrt|j}tdd\}}t|d}tjt |d}d dd|D}t }t rt |tjrtj}tj}tj|d<nd}t|ddd } z0t||ddd d|dd \} } } } t| Wnt|Yn0| |_d|_| |_t| |_t|t|jt|f|_t|z$t !|| t !|| Wtdn td0Wdn1sd0YdS) Nr)Z parent_pidZ pipe_handle css|]}d|VqdS)z"%s"Nr).0xrrr 9z!Popen.__init__..__PYVENV_LAUNCHER__wbT)closefdF)"rZget_preparation_data_namerZ CreatePipemsvcrtZopen_osfhandleZget_command_liner getpidjoinZget_executableWINENVrsys executable_base_executableenvironcopyopenZ CreateProcessrpid returncode_handleintsentinelrZFinalizer finalizerrrdump)selfZ process_objZ prep_dataZrhandleZwhandleZwfdcmdZ python_exeenvZto_childZhpZhtr(tidrrr__init__,sF          zPopen.__init__cCst||jSr )rZ duplicater,)r/rrrrduplicate_for_childaszPopen.duplicate_for_childNcCst|jdurn|durtj}ntdt|dd}tt|j|}|tjkrnt|j}|t krht j }||_|jS)Nrig?) r)rZINFINITEmaxr+ZWaitForSingleObjectr*Z WAIT_OBJECT_0ZGetExitCodeProcess TERMINATEsignalSIGTERM)r/timeoutZmsecsrescoderrrwaites   z Popen.waitcCs |jddS)Nrr9)r<r/rrrpollusz Popen.pollcCsJ|jdurFztt|jtWn$tyD|jdddur@Yn0dS)Ng?r=)r)rZTerminateProcessr+r*r6OSErrorr<r>rrr terminatexs   zPopen.terminatecCs |dSr )r-r>rrrclosesz Popen.close)N) __name__ __module__ __qualname__methodr3r4r<r?rAkillrBrrrrr&s5 )r rr7r"rcontextrrrrr__all__r6platformgetattrZWINEXEr#lowerendswithZ WINSERVICErr$r!robjectrrrrrs