o ?Og(%@sddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z gdZ ej dkp@e edo@e edo@e ejd ZGd d d ejZejZd8d d Zej dkr~e gd7Z ddlZd9ddddZddZddZddZGdddeZn#e 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_RIGHTSsendmsgcsHeZdZ iZejZfddZeddZ edddZ e j Z Z S) rcs*tj||j|_|j|jdSN)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducersselfargs __class__@/opt/alt/python310/lib64/python3.10/multiprocessing/reduction.pyr&s  zForkingPickler.__init__cCs ||j|<dSr )r)clstypereducerrrr+szForkingPickler.registerNcCs t}|||||Sr )ioBytesIOr getbuffer)robjprotocolZbufrrrdumps0szForkingPickler.dumpsr )__name__ __module__ __qualname__rcopyregrrr classmethodrr$pickleloads __classcell__rrrrr!s   rcCs t|||dSr )rr )r"filer#rrrr :sr ) DupHandle duplicate steal_handleF)source_processcCs8 t}|dur |}|dur|}t|||d|tjS)Nr)_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handleZtarget_processZ inheritabler1Zcurrent_processrrrr/Gsr/c CsL ttjd|}zt||tddtjtjBWt|St|wNFr)r2 OpenProcessPROCESS_DUP_HANDLEr4r3r5DUPLICATE_CLOSE_SOURCE CloseHandle)Z source_pidr6Zsource_process_handlerrrr0Ss  r0cCs t|tj|}||dSr )r.r2r5send)connr6destination_pidZdhrrrr_srcCs |Sr )recvdetach)r=rrrrds rc@s eZdZ dddZddZdS)r.Nc Csf|durt}ttjd|}ztt|||dd|_Wt|nt|w||_ ||_ dSr7) osgetpidr2r8r9r4r3_handler;_access_pid)rr6accesspidprocrrrrjs  zDupHandle.__init__c Cs` |jtkr |jSttjd|j}zt||jt|j dtj Wt |St |wNF) rErArBrCr2r8r9r4r3rDr:r;)rrHrrrr@ys   zDupHandle.detachr )r%r&r'rr@rrrrr.hs  r.)DupFdsendfdsrecvfdsdarwincCs\ td|}tt|dg}||gtjtj|fgtr*|ddkr,t ddSdS)NirAz%did not receive acknowledgement of fd) arraybyteslenr socket SOL_SOCKETr ACKNOWLEDGEr? RuntimeError)sockZfdsmsgrrrrKs rKc Cs td}|j|}|dt|\}}}}|s|stz[tr&|dt|dkr4t dt||d\}} } |tj krp| tj krut| |jdkrPt | | t|d|dkrktdt||dt|WSWt dWt dt tfyYt dw) NrNrrPzreceived %d items of ancdatarrOz Len is {0:n} but msg[0] is {1!r}zInvalid data received)rQitemsizeZrecvmsgrTZ CMSG_SPACEEOFErrorrVr<rSrWrUr ValueErrorZ frombytesAssertionErrorformatlist IndexError) rXsizeaZ bytes_sizerYZancdataflagsZaddrZ cmsg_levelZ cmsg_typeZ cmsg_datarrrrLsD           rLcCsJ t|tjtj}t||gWddS1swYdSr )rTfromfdfilenoAF_UNIX SOCK_STREAMrK)r=r6r>srrrrs"cCsJ t|tjtj}t|ddWdS1swYdS)Nrr)rTrdrerfrgrL)r=rhrrrrs $cCsD t}|dur|||Strddlm}||Std)Nr)resource_sharerz&SCM_RIGHTS appears not to be available)rZget_spawning_popenrJZduplicate_for_childHAVE_SEND_HANDLErir\)fdZ popen_objrirrrrJs  rJcCs.|jdurt|j|jjffSt|j|jjffSr )__self__getattrr__func__r%mrrr_reduce_methods rrc@seZdZddZdS)_CcCsdSr r)rrrrfsz_C.fN)r%r&r'rtrrrrrss rscCst|j|jffSr )rn __objclass__r%rprrr_reduce_method_descriptorsrvcCst|j|j|jp iffSr )_rebuild_partialfuncrkeywords)prrr_reduce_partialr{cCstj|g|Ri|Sr ) functoolspartial)rxrryrrrrwr|rwcCsddlm}t||ffS)Nr) DupSocket)rir_rebuild_socket)rhrrrr_reduce_sockets rcCs|Sr )r@)ZdsrrrrsrcCs"t|}t||j|j|jffSr )rJrerfamilyrproto)rhdfrrrrs cCs|}tj||||dS)N)re)r@rT)rrrrrlrrrrsc@sbeZdZ eZeZeZeZeZej dkre Z e Z e Z ne Z eZeZeZeZeZeZeZddZdS)AbstractReducerr cGsNtttjttttjttttj ttt j t tt j tdSr )rrrsrtrrr_appendrvint__add__r}r~r{rTrrrrrrs  zAbstractReducer.__init__N)r%r&r'rrr rrsysplatformr0r/r.rKrLrJrrrvrwrrrrrrrrs(  r) metaclassr rI).abcrr(r}rrAr*rTrrkr__all__rhasattrrjZPicklerrrr r2r/r0rrobjectr.rQrVrKrLrJrrrsrrtrvr_rrrr{rwr~rrrrrrrsl             #