o [d@sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdko9eed d Zejd Zd d Zeejej ZddZGdddeZdS)N) reductionget_spawning_popenset_spawning_popen)spawn)utilPopeniwin32frozenFzpythonservice.execCs ||kptj|tj|kSN)ospathnormcase)p1p2r8/usr/lib/python3.10/multiprocessing/popen_spawn_win32.py_path_eqs rcGs|D]}t|qdSr )_winapi CloseHandle)handleshandlerrr_close_handless rc@sJeZdZdZdZddZddZddd Zd d Zd d Z e Z ddZ dS)rz@ Start a subprocess to run the code of a process object rc Cslt|j}tdd\}}t|d}tjt |d}d dd|D}t }t rAt |tjrAtj}tj}tj|d<nd}t|ddd b} zt||ddd d|dd \} } } } t| Wn t|| |_d|_| |_t| |_t|t|jt|f|_t|zt !|| t !|| WtdntdwWddS1swYdS) Nr) parent_pid pipe_handle css|]}d|VqdS)z"%s"Nr).0xrrr 9sz!Popen.__init__..__PYVENV_LAUNCHER__wbT)closefdF)"rget_preparation_data_namer CreatePipemsvcrtopen_osfhandleget_command_liner getpidjoinget_executableWINENVrsys executable_base_executableenvironcopyopen CreateProcessrpid returncode_handleintsentinelrFinalizer finalizerrrdump)self process_obj prep_datarhandlewhandlewfdcmd python_exeenvto_childhphtr3tidrrr__init__,sH          "zPopen.__init__cCs|tusJt||jSr )rr duplicater7)r;rrrrduplicate_for_childaszPopen.duplicate_for_childNcCst|jdur7|dur tj}n tdt|dd}tt|j|}|tjkr7t|j}|t kr4t j }||_|jS)Nrig?) r4rINFINITEmaxr6WaitForSingleObjectr5 WAIT_OBJECT_0GetExitCodeProcess TERMINATEsignalSIGTERM)r;timeoutmsecsrescoderrrwaites   z Popen.waitcCs |jddS)NrrS)rWr;rrrpollu z Popen.pollcCsN|jdur%z tt|jtWdSty$|jdddur!YdSwdS)Ng?rX)r4rTerminateProcessr6r5rPOSErrorrWrYrrr terminatexs  zPopen.terminatecCs |dSr )r9rYrrrcloser[z Popen.closer ) __name__ __module__ __qualname____doc__methodrHrJrWrZr^killr_rrrrr&s5  )r r%rQr,rcontextrrrrr__all__rPplatformgetattrWINEXEr-lowerendswith WINSERVICErr.r+robjectrrrrrs