B NUny@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__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          #