B 0c$@sddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z ddddd gZ ej d kpe ed oe ed oe ejd ZGdddejZejZd5dd Zej d kre dddg7Z ddlZd6ddZddZddZddZGdddeZnHe dddg7Z ddlZej dkZddZddZddZd dZd!dZd"d#ZGd$d%d%Z ee!e j"ed&d'Z#ee!e$j%e#ee!e&j'e#d(d)Z(d*d+Z)eej*e(ej d krd,d-Z+d.d/Z,eeje+nd0d-Z+d1d/Z,eeje+Gd2d3d3ed4Z-dS)7)ABCMetaN)context send_handle recv_handleForkingPicklerregisterdumpwin32ZCMSG_LEN SCM_RIGHTSsendmsgcsFeZdZiZejZfddZeddZ edddZ e j Z Z S) rcs*tj||j|_|j|jdS)N)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducers)selfargs) __class__>/opt/alt/python37/lib64/python3.7/multiprocessing/reduction.pyr&s  zForkingPickler.__init__cCs||j|<dS)N)r)clstypereducerrrr+szForkingPickler.registerNcCs t}|||||S)N)ioBytesIOr getbuffer)robjprotocolbufrrrdumps0szForkingPickler.dumps)N)__name__ __module__ __qualname__rcopyregrrr classmethodrr"pickleloads __classcell__rr)rrr!s   cCst|||dS)N)rr )rfiler rrrr :s DupHandle duplicate steal_handleFcCs*|dkrt}tt||d|tjS)Nr)_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_processZ inheritablerrrr-Gs  c CsBttjd|}z t||tddtjtjBSt|XdS)NFr)r/ OpenProcessPROCESS_DUP_HANDLEr1r0r2DUPLICATE_CLOSE_SOURCE CloseHandle)Z source_pidr3Zsource_process_handlerrrr.Os  cCst|tj|}||dS)N)r,r/r2send)connr3destination_pidZdhrrrr[scCs |S)N)recvdetach)r9rrrr`sc@seZdZdddZddZdS)r,Nc Cs\|dkrt}ttjd|}ztt|||dd|_Wdt|X||_ ||_ dS)NFr) osgetpidr/r4r5r1r0_handler7_access_pid)rr3accesspidprocrrrrfs zDupHandle.__init__c CsV|jtkr|jSttjd|j}zt||jt|j dtj St |XdS)NF) rAr=r>r?r/r4r5r1r0r@r6r7)rrDrrrr<us  zDupHandle.detach)N)r#r$r%rr<rrrrr,ds DupFdsendfdsrecvfdsdarwincCsVtd|}tt|dg}||gtjtj|fgtrR|ddkrRt ddS)NirAz%did not receive acknowledgement of fd) arraybyteslenr socket SOL_SOCKETr ACKNOWLEDGEr; RuntimeError)sockZfdsmsgrrrrFs  c Cstd}|j|}|dt|\}}}}|s:|s:tytrJ|dt|dkrft dt||d\}} } |tj kr| tj krt| |jdkrt | | t|d|dkrtdt||dt|SWnt tfk rYnXt ddS) NrIrrKzreceived %d items of ancdatarrJz Len is {0:n} but msg[0] is {1!r}zInvalid data received)rLitemsizeZrecvmsgrOZ CMSG_SPACEEOFErrorrQr8rNrRrPr ValueErrorZ frombytesAssertionErrorformatlist IndexError) rSsizeaZ bytes_sizerTZancdataflagsZaddrZ cmsg_levelZ cmsg_typeZ cmsg_datarrrrGs2         c Cs2t|tjtj}t||gWdQRXdS)N)rOfromfdfilenoAF_UNIX SOCK_STREAMrF)r9r3r:srrrrsc Cs0t|tjtj}t|ddSQRXdS)Nrr)rOr_r`rarbrG)r9rcrrrrscCsFt}|dk r |||Str:ddlm}||StddS)Nr)resource_sharerz&SCM_RIGHTS appears not to be available)rZget_spawning_popenrEZduplicate_for_childHAVE_SEND_HANDLErdrW)fdZ popen_objrdrrrrEs  cCs2|jdkrt|j|jjffSt|j|jjffSdS)N)__self__getattrr__func__r#)mrrr_reduce_methods rlc@seZdZddZdS)_CcCsdS)Nr)rrrrfsz_C.fN)r#r$r%rnrrrrrmsrmcCst|j|jffS)N)ri __objclass__r#)rkrrr_reduce_method_descriptorsrpcCst|j|j|jpiffS)N)_rebuild_partialfuncrkeywords)prrr_reduce_partialsrucCstj|f||S)N) functoolspartial)rrrrsrrrrqsrqcCsddlm}t||ffS)Nr) DupSocket)rdrx_rebuild_socket)rcrxrrr_reduce_sockets rzcCs|S)N)r<)ZdsrrrrysrycCs"t|}t||j|j|jffS)N)rEr`ryfamilyrproto)rcdfrrrrzs cCs|}tj||||dS)N)r`)r<rO)r}r{rr|rgrrrrysc@s`eZdZeZeZeZeZeZej dkr4e Z e Z e Z n e Z eZeZeZeZeZeZeZddZdS)AbstractReducerr cGsNtttjttttjttttj ttt j t tt j tdS)N)rrrmrnrlrZappendrpint__add__rvrwrurOrz)rrrrrrs  zAbstractReducer.__init__N)r#r$r%rrr rrsysplatformr.r-r,rFrGrErlrprqrzryrrrrrr~s$ r~) metaclass)N)NF).abcrr&rvrr=r(rOrrfr__all__rhasattrreZPicklerrrr r/r-r.rrobjectr,rLrQrFrGrErlrmrrnrprZrrrrurqrwrzryr~rrrr sb          #