
    F\h                     j    S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK	J
r
  S	S jr " S S5      rg)
z.
Helper to run a script in a pseudo-terminal.
    N)	ExitStack)EIO)import_modulec                    [        S5      n[        5       nUR                  5       u  pV[        R                  SU 4n[
        R                  " XvXfUS9n[        R                  " U5        [        5        n	U	R                  U5        S n
U	R                  X5        U	R                  [        R                  U5        U	R                  [        R                  " 5       5      nUR                  U[        R                  [        R                   -  5        [        R"                  " US5         UR%                  5        H  u  pU[        R                  -  (       a=   [        R&                  " US5      nU(       d  Us  sS S S 5        $ UR/                  U5        U[        R                   -  (       d  Mt   U[        R0                  " XQ5      S  nU(       a  M  UR3                  U[        R                  5        M     M  ! [(         a!  nUR*                  [,        :w  a  e Sn S nANS nAff = f! [(         a!  nUR*                  [,        :w  a  e Sn S nANS nAff = f! , (       d  f       g = f)Nptyz-c)stdinstdoutstderrenvc                 F     U R                  5         g ! [         a     g f = fN)	terminateProcessLookupError)procs    ./usr/lib/python3.13/test/support/pty_helper.pyr   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_ptyr7      s   

C[FkkmOVNND&)DDesSDHHUO	d#	 	)6* ##I$<$<$>?VY11I4I4IIJ
&"zz|I000$ " 8 !%; 
< MM%(I1111$ %bhhv&=&> ? !5

69+?+?@+  , 
 # $99+! #	$ # $99+! #	$E 
sm   1C IG1)
I='I)HI&I1
H;HIHI
I
)I II

I
Ic                   $    \ rS rSrSrS rS rSrg)	FakeInputC   z
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                     Xl         g r   lines)selfr=   s     r   __init__FakeInput.__init__J   s    
r   c                 X    U R                   R                  S5      n[        U5        US-   $ )Nr   
)r=   popprint)r>   lines     r   readlineFakeInput.readlineM   s%    zz~~a dd{r   r<   N)__name__
__module____qualname____firstlineno____doc__r?   rF   __static_attributes__ r   r   r9   r9   C   s    r   r9   )s   dummy inputN)rL   r   r   r   r   
contextlibr   r'   r   test.support.import_helperr   r7   r9   rN   r   r   <module>rQ      s2    
   
    4/Al r   