B !xG@sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdkoreed d Zejd Zd d Zeedoeejej ZddZGdddeZdS)N) reductionget_spawning_popenset_spawning_popen)spawn)utilPopeniwin32frozenFzpythonservice.execCs ||kptj|tj|kS)N)ospathnormcase)Zp1Zp2rD/opt/alt/python37/lib/python3.7/multiprocessing/popen_spawn_win32.py_path_eqsr_base_executablecGsx|D]}t|qWdS)N)_winapi CloseHandle)Zhandleshandlerrr_close_handless rc@sFeZdZdZddZddZdddZd d Zd d ZeZ d dZ dS)rrc CsPt|j}tdd\}}t|d}tjt |d}d dd|D}t }t rt |tjrtj}tj}tj|d<nd}t|ddd } y0t||ddd d|dd \} } } } t| Wnt|YnX| |_d|_| |_t| |_t|tj|jf|_t|zt || t || WdtdXWdQRXdS) Nr)Z parent_pidZ pipe_handle css|]}d|VqdS)z"%s"Nr).0xrrr 6sz!Popen.__init__..__PYVENV_LAUNCHER__wbT)closefdF)!rZget_preparation_data_namerZ CreatePipemsvcrtZopen_osfhandleZget_command_liner getpidjoinZget_executableWINENVrsys executablerenvironcopyopenZ CreateProcessrpid returncode_handleintsentinelrZFinalize finalizerrrdump)selfZ process_objZ prep_dataZrhandleZwhandleZwfdcmdZ python_exeenvZto_childZhpZhtr'tidrrr__init__-s>        zPopen.__init__cCst||jS)N)rZ duplicater+)r.rrrrduplicate_for_child]szPopen.duplicate_for_childNcCst|jdkrn|dkrtj}ntdt|dd}tt|j|}|tjkrnt|j}|t krht j }||_|jS)Nrig?) r(rZINFINITEmaxr*ZWaitForSingleObjectr)Z WAIT_OBJECT_0ZGetExitCodeProcess TERMINATEsignalSIGTERM)r.timeoutZmsecsZrescoderrrwaitas   z Popen.waitcCs |jddS)Nr)r8)r:)r.rrrpollqsz Popen.pollcCsL|jdkrHytt|jtWn&tk rF|jdddkrBYnXdS)Ng?)r8)r(rZTerminateProcessr*r)r5OSErrorr:)r.rrr terminatets  zPopen.terminatecCs |dS)N)r,)r.rrrclose~sz Popen.close)N) __name__ __module__ __qualname__methodr2r3r:r;r=killr>rrrrr's0 )r rr6r"rcontextrrrrr__all__r5platformgetattrZWINEXEr#lowerendswithZ WINSERVICErhasattrrr!robjectrrrrrs