
    =Og(%                     H   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
 g dZej        dk    p( eed          o eed          o eej        d	          Z G d
 dej                  Zej        Zd*dZej        dk    r*eg dz  Zd dlZd+dddZd Zd Zd Z G d de          Zn%eg dz  Zd dlZej        dk    Zd Zd Zd Zd Zd Zd Z G d d          Z  e e! e             j"                  e           d  Z# e e!e$j%                  e#            e e!e&j'                  e#           d! Z(d" Z) eej*        e(           ej        dk    rd# Z+d$ Z, eej        e+           nd% Z+d& Z, eej        e+            G d' d(e)          Z-dS ),    )ABCMetaN   )context)send_handlerecv_handleForkingPicklerregisterdumpwin32CMSG_LEN
SCM_RIGHTSsendmsgc                   n     e Zd Z	 i Zej        Z fdZed             Z	edd            Z
ej        Z xZS )r   c                      t                      j        |  | j                                        | _        | j                            | j                   d S N)super__init___copyreg_dispatch_tablecopydispatch_tableupdate_extra_reducers)selfargs	__class__s     2/usr/lib64/python3.11/multiprocessing/reduction.pyr   zForkingPickler.__init__&   sN    $":??AA""4#788888    c                     	 || j         |<   d S r   )r   )clstypereduces      r   r	   zForkingPickler.register+   s    4$*D!!!r   Nc                     t          j                    } | ||                              |           |                                S r   )ioBytesIOr
   	getbuffer)r   objprotocolbufs       r   dumpszForkingPickler.dumps0   s;    jllC$$$}}r   r   )__name__
__module____qualname__r   copyregr   r   r   classmethodr	   r)   pickleloads__classcell__)r   s   @r   r   r   !   s        3O%49 9 9 9 9
 + + [+    [
 LEEEEEr   r   c                 N    	 t          ||                              |            d S r   )r   r
   )r&   filer'   s      r   r
   r
   :   s)    =4""'',,,,,r   )	DupHandle	duplicatesteal_handleF)source_processc                    	 t          j                    }||}||}t          j        || |d|t           j                  S )Nr   )_winapiGetCurrentProcessDuplicateHandleDUPLICATE_SAME_ACCESS)handletarget_processinheritabler7   current_processs        r   r5   r5   G   sO    J!355!,N!,N&FN{G9; ; 	;r   c           	      "   	 t          j        t           j        d|           }	 t          j        ||t          j                    ddt           j        t           j        z            t          j        |           S # t          j        |           w xY wNFr   )r9   OpenProcessPROCESS_DUP_HANDLEr;   r:   r<   DUPLICATE_CLOSE_SOURCECloseHandle)
source_pidr=   source_process_handles      r   r6   r6   S   s    C ' 3&z!; !;	7*%v)++Q-0NNP P
  56666G 56666s   A A8 8Bc                 h    	 t          |t          j        |          }|                     |           d S r   )r4   r9   r<   send)connr=   destination_piddhs       r   r   r   _   s,    4vw<oNN		"r   c                 P    	 |                                                                  S r   )recvdetach)rK   s    r   r   r   d   s    7yy{{!!###r   c                       e Zd Z	 ddZd ZdS )r4   Nc                 H   |t          j                    }t          j        t          j        d|          }	 t          j        t          j                    |||dd          | _        t          j        |           n# t          j        |           w xY w|| _	        || _
        d S rB   )osgetpidr9   rC   rD   r;   r:   _handlerF   _access_pid)r   r=   accesspidprocs        r   r   zDupHandle.__init__j   s    { ikk&w'A5#NND*&6-//D&% 4  4 #D))))#D))))!DLDIIIs   /A; ;Bc                 l   	 | j         t          j                    k    r| j        S t	          j        t          j        d| j                   }	 t	          j        || j        t	          j                    | j	        dt          j
                  t	          j        |           S # t	          j        |           w xY wNF)rW   rS   rT   rU   r9   rC   rD   r;   r:   rV   rE   rF   )r   rZ   s     r   rP   zDupHandle.detachy   s    CyBIKK''|#&w'A5'+y2 2D*.$,(A(C(CL%)GI I #D))))#D))))s   =B B3r   )r*   r+   r,   r   rP    r   r   r4   r4   h   s:        -	 	 	 		* 	* 	* 	* 	*r   r4   )DupFdsendfdsrecvfdsdarwinc                 2   	 t          j         d|          }t          t          |          dz  g          }|                     |gt          j        t          j        |fg           t          r(|                     d          dk    rt          d          d S d S )Ni   r      Az%did not receive acknowledgement of fd)
arraybyteslenr   socket
SOL_SOCKETr   ACKNOWLEDGErO   RuntimeError)sockfdsmsgs      r   r_   r_      s    :k#s##SXX^$%%cUf/1BCHIJJJ 	H499Q<<4//FGGG	H 	H//r   c                 $   	 t          j         d          }|j        |z  }|                     dt          j        |                    \  }}}}|s	|st
          	 t          r|                     d           t          |          dk    rt          dt          |          z            |d         \  }}	}
|t          j
        k    r|	t          j        k    rt          |
          |j        z  dk    rt          |                    |
           t          |          dz  |d         k    r6t          d                    t          |          |d                             t!          |          S n# t          t"          f$ r Y nw xY wt          d          )	Nrc   r   re   zreceived %d items of ancdatar   rd   z Len is {0:n} but msg[0] is {1!r}zInvalid data received)rf   itemsizerecvmsgri   
CMSG_SPACEEOFErrorrk   rJ   rh   rl   rj   r   
ValueError	frombytesAssertionErrorformatlist
IndexError)rm   sizea
bytes_sizero   ancdataflagsaddr
cmsg_level	cmsg_type	cmsg_datas              r   r`   r`      s   =KZ$&
$(LLF4Ej4Q4Q$R$R!WeT 	7 	N	  		$7||q  "#A#&w<<$0 1 1 1/6qz,J	9f///V...y>>AJ.!33$$I&&&q66C<3q6))(:AAFFCF, ,- - - AwwJ' 	 	 	D	2333s   DE, ,F ?F c                     	 t          j        |                                 t           j        t           j                  5 }t          ||g           d d d            d S # 1 swxY w Y   d S r   )ri   fromfdfilenoAF_UNIXSOCK_STREAMr_   )rK   r=   rL   ss       r   r   r      s    4]4;;==&.&:LMM 	!QRAx   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AA!$A!c                     	 t          j        |                                 t           j        t           j                  5 }t          |d          d         cd d d            S # 1 swxY w Y   d S )Nr   r   )ri   r   r   r   r   r`   )rK   r   s     r   r   r      s    7]4;;==&.&:LMM 	$QR1a==#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A!!A%(A%c                     	 t          j                    }|(|                    |                    |                     S t          rddlm} |                    |           S t          d          )Nr   )resource_sharerz&SCM_RIGHTS appears not to be available)r   get_spawning_popenr^   duplicate_for_childHAVE_SEND_HANDLE r   ru   )fd	popen_objr   s      r   r^   r^      sw    ).00	 ??9#@#@#D#DEEE 	G))))))"((,,,EFFFr   c                 x    | j         t          | j        | j        j        ffS t          | j         | j        j        ffS r   )__self__getattrr   __func__r*   ms    r   _reduce_methodr      s8    zaj&9:::QZ%8999r   c                       e Zd Zd ZdS )_Cc                     d S r   r]   )r   s    r   fz_C.f   s    r   N)r*   r+   r,   r   r]   r   r   r   r      s#            r   r   c                 ,    t           | j        | j        ffS r   )r   __objclass__r*   r   s    r   _reduce_method_descriptorr      s    Q^QZ000r   c                 <    t           | j        | j        | j        pi ffS r   )_rebuild_partialfuncr   keywords)ps    r   _reduce_partialr      s    afafaj.>B???r   c                 ,    t          j        | g|R i |S r   )	functoolspartial)r   r   r   s      r   r   r      s#    T5D555H555r   c                 4    ddl m} t           ||           ffS )Nr   )	DupSocket)r   r   _rebuild_socket)r   r   s     r   _reduce_socketr      s)    ......1//r   c                 *    |                                  S r   )rP   )dss    r   r   r      s    yy{{r   c                 |    t          |                                           }t          || j        | j        | j        ffS r   )r^   r   r   familyr    proto)r   dfs     r   r   r      s1    188::QXqvqw ???r   c                 Z    |                                  }t          j        ||||          S )N)r   )rP   ri   )r   r   r    r   r   s        r   r   r      s(    YY[[}VT5<<<<r   c                   n    e Zd Z	 eZeZeZeZeZej	        dk    re
Z
eZeZneZeZeZeZeZeZeZeZd ZdS )AbstractReducerr   c                    t          t          t                      j                  t                     t          t          t
          j                  t                     t          t          t          j	                  t                     t          t          j        t                     t          t          j        t                     d S r   )r	   r    r   r   r   ry   appendr   int__add__r   r   r   ri   r   )r   r   s     r   r   zAbstractReducer.__init__  s    bddf~...dk""$=>>>ck""$=>>>"O444/////r   N)r*   r+   r,   r   r	   r
   r   r   sysplatformr6   r5   r4   r_   r`   r^   r   r   r   r   r   r   r]   r   r   r   r      s          $NHDKK
|w#			#N 9'#N%O0 0 0 0 0r   r   )	metaclassr   r\   ).abcr   r-   r   r#   rS   r/   ri   r   r   r   __all__r   hasattrr   Picklerr   r	   r
   r9   r5   r6   r   r   objectr4   rf   rk   r_   r`   r^   r   r   r    r   r   ry   r   r   r   r   r   r   r   r   r   r]   r   r   <module>r      s              				 				   



      
N
N
N LG+ 8WVZ00 7WV\227WV]I66     V^   . "- - - - <79999GNNN
;$(
; 
; 
; 
; 
;
7 
7 
7  
$ $ $* * * * *F * * * *F ....GLLL ,(*KH H H4 4 48! ! !
$ $ $
	G 	G 	G: : :
        	bbddf~ & & &1 1 1 dk		5 6 6 6 ck		5 6 6 6@ @ @6 6 6 	O , , , <70 0 0  HV]N++++@ @ @= = = HV]N+++0 0 0 0 0 0 0 0 0 0 0r   