o [d@sddlZddlZddlmZmZejsedddlmZddlm Z ddlm Z ddlm Z d gZ Gd d d e ZGd d d e jZdS) N) reductionset_spawning_popenz,No support for sending fds between processes) forkserver) popen_fork)spawn)utilPopenc@seZdZddZddZdS)_DupFdcCs ||_dSN)ind)selfr r7/usr/lib/python3.10/multiprocessing/popen_forkserver.py__init__s z_DupFd.__init__cCst|jSr )rget_inherited_fdsr )r rrrdetachsz _DupFd.detachN)__name__ __module__ __qualname__rrrrrrr s r csBeZdZdZeZfddZddZddZe j fdd Z Z S) r rcsg|_t|dSr )_fdssuperr)r process_obj __class__rrr!szPopen.__init__cCs|j|t|jdS)Nr)rappendlen)r fdrrrduplicate_for_child%s zPopen.duplicate_for_childcCst|j}t}t|zt||t||Wtdntdwt |j \|_ }t |}t|tj||j f|_t|ddd}||Wdn1sYwYt|j |_dS)NwbT)closefd)rget_preparation_data_nameioBytesIOrrdumprconnect_to_new_processrsentinelosduprFinalize close_fds finalizeropenwrite getbuffer read_signedpid)r r prep_databufw _parent_wfrrr_launch)s    z Popen._launchc Csx|jdur9ddlm}|tjkrdnd}||jg|sdSz t|j|_W|jStt fy8d|_Y|jSw|jS)Nr)wait) returncodemultiprocessing.connectionr8r(WNOHANGr'rr0OSErrorEOFError)r flagr8timeoutrrrpoll=s  z Popen.poll) rrrmethodr DupFdrrr7r(r<rA __classcell__rrrrr s )r#r(contextrrHAVE_SEND_HANDLE ImportErrorrrrr__all__objectr r rrrrs