g/bddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl mZddl mZddl mZgd Zd Zej&d ZGd d eZddZdZdZdZeZej8Zej:Zej<Zej>Zy)N) connection)process) reduction)resource_tracker)spawn)util)ensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preloadqc6eZdZdZdZdZdZdZdZdZ y) ForkServerc~d|_d|_d|_d|_t j |_dg|_y)N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds threadingLock_lock_preload_modulesselfs A/opt/alt/python312/lib64/python3.12/multiprocessing/forkserver.py__init__zForkServer.__init__"s:#' $(!#"^^% !+ cf|j5|jdddy#1swYyxYwN)r_stop_unlockedrs r_stopzForkServer._stop*s ZZ    !ZZs'0cB|jytj|jd|_tj|jdd|_t j |jstj|jd|_y)Nr) roscloserwaitpidr is_abstract_socket_namespacerunlinkrs rr#zForkServer._stop_unlocked/sw    '  **+$(! 4''+#001I1IJ IId.. /#' r cLtd|Ds td||_y)z>Set list of module names to try to load in forkserver process.c3>K|]}t|tuywr")typestr).0mods r z4ForkServer.set_forkserver_preload..@s=}49#}sz&module_names must be a list of stringsN)all TypeErrorr)r modules_namess rr z!ForkServer.set_forkserver_preload>s$=}==DE E -r c|jS)zReturn list of fds inherited from parent process. This returns None if the current process was not started by fork server. )rrs rr zForkServer.get_inherited_fdsDs """r c|jt|dztk\r tdt jtj 5}|j |jtj\}}tj\}}|||jtjg}||z } tj||||ftj|tj|cdddS#tj|tj|xYw#tj|tj|wxYw#1swYyxYw)a;Request forkserver to create a child process. Returns a pair of fds (status_r, data_w). The calling process can read the child process's pid and (eventually) its returncode from status_r. The calling process should write to data_w the pickled preparation and process data. z too many fdsN)r lenMAXFDS_TO_SEND ValueErrorsocketAF_UNIXconnectrr&piperrgetfdrsendfdsr')rfdsclientparent_rchild_wchild_rparent_wallfdss rr z!ForkServer.connect_to_new_processLs  s8a<> )^, , ]]6>> *f NN433 4 " Hg " GXw(A(A&,,.0F cMF "!!&&1) !!!+ * ""!!!+ *s1A1E2D*E2-EE,E//E22E;c4|j5tj|jqt j |jtj \}}|s dddyt j|jd|_ d|_d|_d}|jrBddh}tjd}|jDcic] \}}||vs ||}}}ni}tjtj5}t!j"d} |j%| t'j(| st j*| d|j-t j.\} } |j1| g} ||j1| |j|fz}tj2} | gt'j4z}|d|gz }t'j6| || } t j| | |_ | |_||_ddddddycc}}w#t j| xYw#t j| wxYw#1swYMxYw#1swYyxYw) zMake sure that a fork server is running. This can be called from any process. Note that usually a child process will just reuse the forkserver started by its parent, so ensure_running() will do nothing. NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r) main_pathsys_pathignorer<iz-c)rrr rr&r(WNOHANGr'rrrrget_preparation_dataitemsr;r<rarbitrary_addressbindr r)chmodlistenr>filenoget_executable_args_from_interpreter_flagsspawnv_passfds)rpidstatuscmd desired_keysdataxylisteneraddressalive_ralive_w fds_to_passexeargss rr zForkServer.ensure_runningis&ZZ  + + -##/ jj)=)=rzzJ VZ223+/(,0)'+$,C$$ +Z8 11(;)-KAl9J1Kv~~.($66yA g&88AHHWe,!$&779  &#+??#4g">KHOO-w8M8M ""C..0C54#D#D#FFDT3K'D--c4EC HHW%+2(,3)'*$3/1Z(L,HHW%HHW%-/.1ZsiAJ+A.J I&I+)JA9JA=I  *J6JJ I%%I((I??JJ JJN) __name__ __module__ __qualname__rr$r#r r r r r rrr s%-" (. #":8+r rc  |rq||tjddd|vrE|Cdtj_ t j |tj`|D]} t|tjtj\}}tj|dtj|dd}tj|tj tj"i} | j%D cic]\} } | tj| | } } } tj&|i} t)j(t(j*|5}t-j.5}|j1t2_|j7|t,j8|j7|t,j8|j7|t,j8 |j;Dcgc]\}}|j<}}}|rn0||vrt>||vrtj@|d tjBdtjD\}}|d k(rne| jI|d}|8tjJ|} tM||tjP|ntSjTd |z||vrK|jWd 5}tYjZ|t\d z}t_|t\kDr#tad jct_||^}}}|jQtjd}|d k(rld } |jQ|jQ||||g}|jg| jitk|||| }tjv|nC tM|||| |<tjP||D]}tjP|ddd<#tj`wxYw#t$rYwxYwcc} } wcc}}w#tF$rYwxYw#tN$rYwxYw#tl$rFtjntjptjrjuYwxYw#tjv|wxYw#tN$rY wxYw#1swYxYw#tx$r)}|jztzj|k7rYd}~ d}~wwxYw#1swYnxYw dddy#1swYyxYw) zRun forkserver.NrTFcyr"rh)_unuseds rsigchld_handlerzmain..sigchld_handlers r )rSirz.forkserver: waitpid returned unexpected pid %drzToo many ({0:n}) fds to send)?syspathrcurrent_process _inheritingrimport_main_path __import__ ImportErrorr _close_stdinr&r> set_blockingsignalSIGCHLDSIGINTSIG_IGNrN set_wakeup_fdr;r< selectorsDefaultSelector getsockname _forkserverrregister EVENT_READselectfileobj SystemExitreadr(rLChildProcessErrorpopwaitstatus_to_exitcode write_signedBrokenPipeErrorr'warningswarnacceptrrecvfdsr9r8 RuntimeErrorformatforkextendvalues _serve_one Exception excepthookexc_infostderrflush_exitOSErrorerrno ECONNABORTED) listener_fdr`preloadrIrJmodnamesig_rsig_wrlhandlerssigval old_handlers pid_to_fdr^selectorkeyeventsrfdsrWstsrD returncodesrArEcode unused_fdsfdes rmainrs  "CHHQK  Y%:48G # # % 1 :&&y1++-9G 7#  779LE5OOE5!OOE5!  v~~  H'/nn&68&6 csC00&68 I v~~k :h  " " $*2*>*>*@ '(I$8$89'9#7#78%!5!56P =E__=NO=NMS&CKK=NDO d?%$D=GGE5)"')zz"bjj'AHC!8!"+--T":".)+)B)B3)GJ% ,Wj AHHW-%MM+>@C+DE+0t#!*1-'//>A3EFs8n4". > E E$'H!.#//25.3  ggi!8#$D / ( 0 ( 0.5wu-M * 1 1)2B2B2D E'1'32<2>(@!#% ,Wc :.5IcNHHW-&) " '*G.SQ++-9  &8(P 1"!"$3% $%@$-3 #  ? # 0 0 23!# $3% $%=.-L 77e0001 m % $ $ ; : :s6P=' Q!Q&1U%A;UTQ, ,,T'Q2/T0 R=6T3T;U=Q Q#"Q#,T2 Q?;T>Q??T R TRTA S! S$ S! !S$$S; ;T> T T T TT T U #UUU  UU U%%U.cntjd|jD]\}}tj|||D]}tj||^t _tj_ t _ tj|}tj||}|S)Nrm)rwr{rNr&r'rrr_resource_tracker_fdrdupr_main) rErArrrrrparent_sentinelrs rrr-s NN$S c3%   %("[%''+ ffWoO ;;w 0D Kr cd}tj}t||krCtj||t|z }|s t d||z }t||krCtj |dS)Nr zunexpected EOFr) SIGNED_STRUCTsizer8r&rEOFErrorunpack)rr[lengthrs r read_signedrDsu D   F d)f  GGBT* ++, ,   d)f     %a ((r ctj|}|r/tj||}|dk(r t d||d}|r.yy)Nrzshould not get here)rpackr&writer)rnmsgnbytess rrrNsH   Q C "c" Q;45 5&'l r )NN) rr&r|rwr;structrnrrrrcontextrrrr __all__r9Structrobjectrrrrrrr r r r rhr rrs   % c" A+A+NCL.)l ++11$;;$;;r