
    ;e                         d dl Z d dlZddlmZmZ ej        s ed          ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ d	gZ G d
 de          Z G d d	e	j                  ZdS )    N   )	reductionset_spawning_popenz,No support for sending fds between processes)
forkserver)
popen_fork)spawn)utilPopenc                       e Zd Zd Zd ZdS )_DupFdc                     || _         d S N)ind)selfr   s     7/usr/lib/python3.11/multiprocessing/popen_forkserver.py__init__z_DupFd.__init__   s        c                 >    t          j                    | j                 S r   )r   get_inherited_fdsr   )r   s    r   detachz_DupFd.detach   s    +--dh77r   N)__name__
__module____qualname__r   r    r   r   r   r      s2          8 8 8 8 8r   r   c                   F     e Zd ZdZeZ fdZd Zd Ze	j
        fdZ xZS )r
   r   c                 X    g | _         t                                          |           d S r   )_fdssuperr   )r   process_obj	__class__s     r   r   zPopen.__init__!   s(    	%%%%%r   c                 d    | j                             |           t          | j                   dz
  S )Nr   )r   appendlen)r   fds     r   duplicate_for_childzPopen.duplicate_for_child%   s+    	49~~!!r   c                    t          j        |j                  }t          j                    }t          |            	 t          j        ||           t          j        ||           t          d            n# t          d            w xY wt          j	        | j
                  \  | _        }t          j        |          }t          j        | t          j        || j        f          | _        t%          |dd          5 }|                    |                                           d d d            n# 1 swxY w Y   t          j        | j                  | _        d S )NwbT)closefd)r   get_preparation_data_nameioBytesIOr   r   dumpr   connect_to_new_processr   sentinelosdupr	   Finalize	close_fds	finalizeropenwrite	getbufferread_signedpid)r   r   	prep_databufw	_parent_wfs          r   _launchzPopen._launch)   sc   .{/@AA	jll4   	%N9c***N;,,,t$$$$t$$$$%<TYGGq F1II	tT^(14='AC C!T4((( 	%AGGCMMOO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%)$-88s   *A7 7B>(D22D69D6c                     | j         lddlm} |t          j        k    rdnd } || j        g|          sd S 	 t          j        | j                  | _         n# t          t          f$ r
 d| _         Y nw xY w| j         S )Nr   )wait   )

returncodemultiprocessing.connectionrA   r0   WNOHANGr/   r   r8   OSErrorEOFError)r   flagrA   timeouts       r   pollz
Popen.poll=   s    ?"7777772:--aa4G411 t&","8"G"GX& & & & #&&
 s   A A10A1)r   r   r   methodr   DupFdr   r%   r?   r0   rE   rJ   __classcell__)r    s   @r   r
   r
      s{        FE& & & & &" " "9 9 9( 
        r   )r+   r0   contextr   r   HAVE_SEND_HANDLEImportError r   r   r   r	   __all__objectr   r
   r   r   r   <module>rT      s    				 				 2 2 2 2 2 2 2 2! F
+D
E
EE                         )8 8 8 8 8V 8 8 8- - - - -J - - - - -r   