U e5d¶ã@sŠddlZddlZddlmZmZejs.edƒ‚ddlmZddlm Z ddlm Z ddlm Z d gZ Gd d „d e ƒZGd d „d e jƒZdS) éNé)Ú reductionÚset_spawning_popenz,No support for sending fds between processes)Ú forkserver)Ú popen_fork)Úspawn)ÚutilÚPopenc@seZdZdd„Zdd„ZdS)Ú_DupFdcCs ||_dS©N)Úind)Úselfr ©rú8/usr/lib64/python3.8/multiprocessing/popen_forkserver.pyÚ__init__sz_DupFd.__init__cCst ¡|jSr )rZget_inherited_fdsr )r rrrÚdetachsz _DupFd.detachN)Ú__name__Ú __module__Ú __qualname__rrrrrrr sr csBeZdZdZeZ‡fdd„Zdd„Zdd„Ze j fdd „Z ‡Z S) r rcsg|_tƒ |¡dSr )Ú_fdsÚsuperr)r Ú process_obj©Ú __class__rrr!szPopen.__init__cCs|j |¡t|jƒdS)Nr)rÚappendÚlen)r ÚfdrrrÚduplicate_for_child%s zPopen.duplicate_for_childc Cs²t |j¡}t ¡}t|ƒzt ||¡t ||¡W5tdƒXt  |j ¡\|_ }t   |¡}t |tj||j f¡|_t|ddd��}| | ¡¡W5QRXt |j ¡|_dS)NÚwbT)Úclosefd)rZget_preparation_dataÚ_nameÚioÚBytesIOrrÚdumprZconnect_to_new_processrÚsentinelÚosÚduprZFinalizeZ close_fdsÚ finalizerÚopenÚwriteÚ getbufferÚ read_signedÚpid)r rZ prep_dataZbufÚwZ _parent_wÚfrrrÚ_launch)s     ÿz Popen._launchc Csr|jdkrlddlm}|tjkr$dnd}||jg|ƒs:dSzt |j¡|_Wntt fk rjd|_YnX|jS)Nr)Úwaitéÿ) Ú returncodeZmultiprocessing.connectionr0r%ÚWNOHANGr$rr+ÚOSErrorÚEOFError)r Úflagr0ZtimeoutrrrÚpoll=s   z Popen.poll) rrrÚmethodr ZDupFdrrr/r%r3r7Ú __classcell__rrrrr s  )r!r%ÚcontextrrZHAVE_SEND_HANDLEÚ ImportErrorÚrrrrÚ__all__Úobjectr r rrrrÚs