grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a ´i(%ã@s ddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z gd¢Z ej dkp€e edƒo€e edƒo€e ejd ƒZGd d „d ejƒZejZd8d d „Zej dk�rþe gd¢7Z ddlZd9ddœdd„Zdd„Zdd„Zdd„ZGdd„deƒZnFe gd¢7Z ddlZej dkZdd„Zdd „Zd!d„Zd"d„Zd#d$„Zd%d&„ZGd'd(„d(ƒZ ee!e ƒj"ƒeƒd)d*„Z#ee!e$j%ƒe#ƒee!e&j'ƒe#ƒd+d,„Z(d-d.„Z)eej*e(ƒej dk�rÚd/d0„Z+d1d2„Z,eeje+ƒnd3d0„Z+d4d2„Z,eeje+ƒGd5d6„d6ed7�Z-dS):é)ÚABCMetaNé)Úcontext)Ú send_handleÚ recv_handleÚForkingPicklerÚregisterÚdumpÚwin32ÚCMSG_LENÚ SCM_RIGHTSÚsendmsgcsJeZdZdZiZejZ‡fdd„Ze dd„ƒZ e d dd„ƒZ e j Z ‡ZS) rz)Pickler subclass used by multiprocessing.cs*tƒj|Ž|j ¡|_|j |j¡dS©N)ÚsuperÚ__init__Ú_copyreg_dispatch_tableÚcopyÚdispatch_tableÚupdateÚ_extra_reducers©ÚselfÚargs©Ú __class__©ú1/usr/lib64/python3.9/multiprocessing/reduction.pyr&s  zForkingPickler.__init__cCs||j|<dS)z&Register a reduce function for a type.N)r)ÚclsÚtypeÚreducerrrr+szForkingPickler.registerNcCs t ¡}|||ƒ |¡| ¡Sr)ÚioÚBytesIOr Ú getbuffer)rÚobjÚprotocolÚbufrrrÚdumps0szForkingPickler.dumps)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚcopyregrrrÚ classmethodrr&ÚpickleÚloadsÚ __classcell__rrrrr!s   rcCst||ƒ |¡dS)z3Replacement for pickle.dump() using ForkingPickler.N)rr )r#Úfiler$rrrr :sr )Ú DupHandleÚ duplicateÚ steal_handleF)Úsource_processcCs6t ¡}|dur|}|dur |}t |||d|tj¡S)zr?)rrNrrrrFys ÿ  þ üzDupHandle.detach)N)r'r(r)r*rrFrrrrr1hs r1)ÚDupFdÚsendfdsÚrecvfdsÚdarwincCsVt d|¡}tt|ƒdgƒ}| |gtjtj|fg¡trR| d¡dkrRt dƒ‚dS)z,Send an array of fds over an AF_UNIX socket.ÚiéróAz%did not receive acknowledgement of fdN) ÚarrayÚbytesÚlenr ÚsocketÚ SOL_SOCKETr Ú ACKNOWLEDGErEÚ RuntimeError)ÚsockÚfdsÚmsgrrrrP‘s  rPc Cst d¡}|j|}| dt |¡¡\}}}}|s:|s:t‚z¦trJ| d¡t|ƒdkrft dt|ƒƒ‚|d\}} } |tj krÞ| tj krÞt| ƒ|jdkržt ‚|  | ¡t|ƒd|dkrÔtd t|ƒ|d¡ƒ‚t|ƒWSWnt tfyöYn0t dƒ‚d S) z/Receive an array of fds over an AF_UNIX socket.rSrrUzreceived %d items of ancdatarrTz Len is {0:n} but msg[0] is {1!r}zInvalid data receivedN)rVÚitemsizeÚrecvmsgrYÚ CMSG_SPACEÚEOFErrorr[rArXr\rZr Ú ValueErrorÚ frombytesÚAssertionErrorÚformatÚlistÚ IndexError) r]ÚsizeÚaÚ bytes_sizer_ÚancdataÚflagsÚaddrÚ cmsg_levelÚ cmsg_typeÚ cmsg_datarrrrQ™s:    ÿ ÿ  ÿÿrQcCsFt | ¡tjtj¡�}t||gƒWdƒn1s80YdSr@)rYÚfromfdÚfilenoÚAF_UNIXÚ SOCK_STREAMrP)rBr9rCÚsrrrrµscCsHt | ¡tjtj¡�}t|dƒdWdƒS1s:0YdS)rDrrN)rYrsrtrurvrQ)rBrwrrrrºscCsFt ¡}|dur | | |¡¡Str:ddlm}| |¡Stdƒ‚dS)zReturn a wrapper for an fd.Nr)Úresource_sharerz&SCM_RIGHTS appears not to be available)rÚget_spawning_popenrOÚduplicate_for_childÚHAVE_SEND_HANDLEÚrxrd)ÚfdÚ popen_objrxrrrrO¿s  rOcCs2|jdurt|j|jjffSt|j|jjffSdSr)Ú__self__ÚgetattrrÚ__func__r'©ÚmrrrÚ_reduce_methodÎs r„c@seZdZdd„ZdS)Ú_CcCsdSrr)rrrrÚfÔsz_C.fN)r'r(r)r†rrrrr…Ósr…cCst|j|jffSr)r€Ú __objclass__r'r‚rrrÚ_reduce_method_descriptorÙsrˆcCst|j|j|jpiffSr)Ú_rebuild_partialÚfuncrÚkeywords)ÚprrrÚ_reduce_partialßsr�cCstj|g|¢Ri|¤ŽSr)Ú functoolsÚpartial)rŠrr‹rrrr‰ásr‰cCsddlm}t||ƒffS)Nr)Ú DupSocket)rxr�Ú_rebuild_socket)rwr�rrrÚ_reduce_socketês r’cCs| ¡Sr)rF)Zdsrrrr‘ísr‘cCs"t| ¡ƒ}t||j|j|jffSr)rOrtr‘ÚfamilyrÚproto)rwÚdfrrrr’òs cCs| ¡}tj||||d�S)N)rt)rFrY)r•r“rr”r}rrrr‘õsc@sdeZdZdZeZeZeZeZeZe j dkr8e Z e Z e Z n eZeZeZeZeZeZeZeZdd„ZdS)ÚAbstractReducerz�Abstract base class for use in implementing a Reduction class suitable for use in replacing the standard reduction mechanism used in multiprocessing.r cGsNtttƒjƒtƒtttjƒtƒtttj ƒtƒtt j t ƒtt j tƒdSr)rrr…r†r„rhÚappendrˆÚintÚ__add__rŽr�r�rYr’rrrrrs  zAbstractReducer.__init__N)r'r(r)r*rrr rrÚsysÚplatformr3r2r1rPrQrOr„rˆr‰r’r‘rrrrrr–ûs& r–)Ú metaclass)N)NF).Úabcrr+rŽr rGr-rYršr|rÚ__all__r›Úhasattrr{ÚPicklerrrr r5r2r3rrÚobjectr1rVr[rPrQrOr„r…rr†rˆrhr—r˜r™r�r‰r�r’r‘r–rrrrÚ sj    ÿ ý    ÿ  #