
    ѝi                     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                 h   [        S5      n[        5       nUR                  5       u  pV[        R                  SU 4nUc3  0 [
        R                  R                  5       ES[
        R                  0EnO UR                  S[
        R                  5        [        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R7                  U5        U[         R(                  -  (       d  Mt   U[
        R8                  " XQ5      S  nU(       a  M  UR;                  U[         R&                  5        M     M  ! [0         a!  nUR2                  [4        :w  a  e Sn S nANS nAff = f! [0         a!  nUR2                  [4        :w  a  e Sn S nANS nAff = f! , (       d  f       g = f)	Nptyz-cINPUTRC)stdinstdoutstderrenvc                 F     U R                  5         g ! [         a     g f = fN)	terminateProcessLookupError)procs    )lib/python3.13/test/support/pty_helper.pyr   run_pty.<locals>.terminate   s#     % s    
  Fi       )r   	bytearrayopenptysys
executableosenvironcopydevnull
setdefault
subprocessPopen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_ptyr<      s   

C[FkkmOVNND&)D {:":Irzz:y"**-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   C J#(I?
J#'J#?I5J#!&J#
I2I-(J#-I22J#5
J ?JJ#J  J##
J1c                   $    \ rS rSrSrS rS rSrg)	FakeInputK   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)selfrB   s     r   __init__FakeInput.__init__R   s    
r   c                 X    U R                   R                  S5      n[        U5        US-   $ )Nr   
)rB   popprint)rC   lines     r   readlineFakeInput.readlineU   s%    zz~~a dd{r   rA   N)__name__
__module____qualname____firstlineno____doc__rD   rK   __static_attributes__ r   r   r>   r>   K   s    r   r>   )s   dummy inputN)rQ   r   r#   r   r   
contextlibr   r,   r   test.support.import_helperr   r<   r>   rS   r   r   <module>rV      s2    
   
    47A| r   