a DOg(%@s ddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z gdZ ej dkpe edoe edoe ejd ZGd d d ejZejZd8d d Zej dkre gd7Z ddlZd9ddddZddZddZddZGdddeZnFe gd7Z ddlZej dkZddZdd Zd!dZd"dZd#d$Zd%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 dkrd/d0Z+d1d2Z,eeje+nd3d0Z+d4d2Z,eeje+Gd5d6d6ed7Z-dS):)ABCMetaN)context) send_handle recv_handleForkingPicklerregisterdumpwin32ZCMSG_LEN SCM_RIGHTSsendmsgcsFeZdZiZejZfddZeddZ edddZ e j Z Z S) rcs*tj||j|_|j|jdSN)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducersselfargs __class__>/opt/alt/python39/lib64/python3.9/multiprocessing/reduction.pyr&s  zForkingPickler.__init__cCs||j|<dSr )r)clstypereducerrrr+szForkingPickler.registerNcCs t}|||||Sr )ioBytesIOr getbuffer)robjprotocolZbufrrrdumps0szForkingPickler.dumps)N)__name__ __module__ __qualname__rcopyregrrr classmethodrr$pickleloads __classcell__rrrrr!s   rcCst|||dSr )rr )r"filer#rrrr :sr ) DupHandle duplicate steal_handleF)source_processcCs6t}|dur|}|dur |}t|||d|tjS)Nr)_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_processZ inheritabler1Zcurrent_processrrrr/Gsr/c CsNttjd|}z,t||tddtjtjBWt|St|0dSNFr)r2 OpenProcessPROCESS_DUP_HANDLEr4r3r5DUPLICATE_CLOSE_SOURCE CloseHandle)Z source_pidr6Zsource_process_handlerrrr0Ss   r0cCst|tj|}||dSr )r.r2r5send)connr6destination_pidZdhrrrr_srcCs |Sr )recvdetach)r=rrrrdsrc@seZdZdddZddZdS)r.Nc Csf|durt}ttjd|}z(tt|||dd|_Wt|n t|0||_ ||_ dSr7) osgetpidr2r8r9r4r3_handler;_access_pid)rr6accesspidprocrrrrjs zDupHandle.__init__c Csb|jtkr|jSttjd|j}z*t||jt|j dtj Wt |St |0dS)NF) rErArBrCr2r8r9r4r3rDr:r;)rrHrrrr@ys    zDupHandle.detach)N)r%r&r'rr@rrrrr.hs r.)DupFdsendfdsrecvfdsdarwincCsVtd|}tt|dg}||gtjtj|fgtrR|ddkrRt ddS)NirAz%did not receive acknowledgement of fd) arraybyteslenr socket SOL_SOCKETr ACKNOWLEDGEr? RuntimeError)sockZfdsmsgrrrrJs  rJc Cstd}|j|}|dt|\}}}}|s:|s:tztrJ|dt|dkrft dt||d\}} } |tj kr| tj krt| |jdkrt | | t|d|dkrtdt||dt|WSWnt tfyYn0t ddS) NrMrrOzreceived %d items of ancdatarrNz Len is {0:n} but msg[0] is {1!r}zInvalid data received)rPitemsizeZrecvmsgrSZ CMSG_SPACEEOFErrorrUr<rRrVrTr ValueErrorZ frombytesAssertionErrorformatlist IndexError) rWsizeaZ bytes_sizerXZancdataflagsZaddrZ cmsg_levelZ cmsg_typeZ cmsg_datarrrrKs:       rKcCsFt|tjtj}t||gWdn1s80YdSr )rSfromfdfilenoAF_UNIX SOCK_STREAMrJ)r=r6r>srrrrscCsHt|tjtj}t|ddWdS1s:0YdS)Nrr)rSrcrdrerfrK)r=rgrrrrscCsFt}|dur |||Str:ddlm}||StddS)Nr)resource_sharerz&SCM_RIGHTS appears not to be available)rZget_spawning_popenrIZduplicate_for_childHAVE_SEND_HANDLErhr[)fdZ popen_objrhrrrrIs  rIcCs2|jdurt|j|jjffSt|j|jjffSdSr )__self__getattrr__func__r%mrrr_reduce_methods rqc@seZdZddZdS)_CcCsdSr r)rrrrfsz_C.fN)r%r&r'rsrrrrrrsrrcCst|j|jffSr )rm __objclass__r%rorrr_reduce_method_descriptorsrucCst|j|j|jpiffSr )_rebuild_partialfuncrkeywords)prrr_reduce_partialsrzcCstj|g|Ri|Sr ) functoolspartial)rwrrxrrrrvsrvcCsddlm}t||ffS)Nr) DupSocket)rhr}_rebuild_socket)rgr}rrr_reduce_sockets rcCs|Sr )r@)Zdsrrrr~sr~cCs"t|}t||j|j|jffSr )rIrdr~familyrproto)rgdfrrrrs cCs|}tj||||dS)N)rd)r@rS)rrrrrkrrrr~sc@s`eZdZeZeZeZeZeZej dkr4e Z e Z e Z n e Z eZeZeZeZeZeZeZddZdS)AbstractReducerr cGsNtttjttttjttttj ttt j t tt j tdSr )rrrrrsrqr^appendruint__add__r{r|rzrSrrrrrrs  zAbstractReducer.__init__N)r%r&r'rrr rrsysplatformr0r/r.rJrKrIrqrurvrr~rrrrrrs$ r) metaclass)N)NF).abcrr(r{rrAr*rSrrjr__all__rhasattrriZPicklerrrr r2r/r0rrobjectr.rPrUrJrKrIrqrrrrsrur^rrrrzrvr|rr~rrrrr sj           #