
    daf                     h    d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 d	dZ G d d      Zy)
z.
Helper to run a script in a pseudo-terminal.
    N)	ExitStack)EIO)import_modulec                 ~   t        d      }t               }|j                         \  }}t        j                  d| f}t        j                  |||||      }t        j                  |       t               5 }	|	j                  |       d }
|	j                  |
|       |	j                  t        j                  |       |	j                  t        j                               }|j                  |t        j                  t        j                   z         t        j"                  |d       	 |j%                         D ]  \  }}|t        j                  z  r7	 t        j&                  |d      }|s|c cd d d        S |j/                  |       |t        j                   z  sd	 |t        j0                  ||      d  }|r|j3                  |t        j                          # t(        $ r }|j*                  t,        k7  r d}Y d }~d }~ww xY w# t(        $ r }|j*                  t,        k7  r d}Y d }~vd }~ww xY w# 1 sw Y   y xY w)Nptyz-c)stdinstdoutstderrenvc                 D    	 | j                          y # t        $ r Y y w xY wN)	terminateProcessLookupError)procs    2/root/Python-3.12.4/Lib/test/support/pty_helper.pyr   zrun_pty.<locals>.terminate   s#     % s    	Fi       )r   	bytearrayopenptysys
executable
subprocessPopenoscloser   enter_contextcallback	selectorsSelectSelectorregister
EVENT_READEVENT_WRITEset_blockingselectreadOSErrorerrnor   extendwritemodify)scriptinputr   r   outputmasterslaveargsr   cleanupr   sel_eventschunkerrs                   r   run_ptyr6      s   

C[FkkmOVUNND&)DDeEsSDHHUO	 (Ad#	 	D)6* ##I$<$<$>?VY11I4I4IIJ
&"zz| AFI000$ " 8 !%;(A (A< MM%(I111$ %bhhvu&=&> ? !

69+?+?@+A 
 # $99+! #	$ # $99+! #	$E(A (Asm   5CH3G'H36$H3H5H38#H3	H$G?:H3?HH3	H0H+&H3+H00H33H<c                       e Zd ZdZd Zd Zy)	FakeInputa  
    A fake input stream for pdb's interactive debugger.  Whenever a
    line is read, print it (to simulate the user typing it), and then
    return it.  The set of lines to return is specified in the
    constructor; they should not have trailing newlines.
    c                     || _         y r   )lines)selfr:   s     r   __init__zFakeInput.__init__J   s	    
r   c                 X    | j                   j                  d      }t        |       |dz   S )Nr   
)r:   popprint)r;   lines     r   readlinezFakeInput.readlineM   s%    zz~~a dd{r   N)__name__
__module____qualname____doc__r<   rB    r   r   r8   r8   C   s    r   r8   )s   dummy inputN)rF   r   r   r   r   
contextlibr   r&   r   test.support.import_helperr   r6   r8   rG   r   r   <module>rJ      s2    
   
    4/Al r   