Ë
    òT•jì  ã                   ó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    ú./usr/lib/python3.12/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Ø—k‘k“m�O€VˆUÜ�N‰N˜D &Ð)€DÜ×Ñ˜D¨°eÀEÈsÔS€DÜ‡H�HˆU„OÜ	‹ð (A˜Ø×Ñ˜dÔ#ò	ð 	×Ñ˜ DÔ)Ø×ÑœŸ™ 6Ô*ð ×#Ñ#¤I×$<Ñ$<Ó$>Ó?ˆØ�‰�VœY×1Ñ1´I×4IÑ4IÑIÔJÜ
�‰˜ Ô&ØØ"Ÿz™z›|ò A‘��FØœI×0Ñ0Ò0ð$Ü "§¡¨°Ó 8˜ñ !Ø%™÷;(Añ (Að< —M‘M %Ô(ØœI×1Ñ1Ó1ð$Ø %¤b§h¡h¨v°uÓ&=Ð&>Ð ?˜ò !ØŸ
™
 6¬9×+?Ñ+?Õ@ð+Að øô
 #ò $àŸ9™9¬Ò+Ø!Ø #�ûð	$ûô #ò $àŸ9™9¬Ò+Ø!Ø #�ûð	$ú÷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%   € Ø�z‰z�~‰~˜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   