ó
    F\hù  ã                   ó¨   • S r SSKJr  SSKrSSKrSSKrSSKJrJr  SSKJrJrJ	r	  / SQr
SrSrSrSrS	 rS
 rS rS rS rS r\\4S jr\\4S jrg)zPseudo terminal utilities.é    )ÚselectN)ÚcloseÚwaitpid)ÚsetrawÚ	tcgetattrÚ	tcsetattr)ÚopenptyÚforkÚspawné   é   c                  óŽ   •  [         R                  " 5       $ ! [        [        4 a     Of = f[	        5       u  p[        U5      nX4$ )z`openpty() -> (master_fd, slave_fd)
Open a pty master/slave pair, using os.openpty() if possible.)Úosr	   ÚAttributeErrorÚOSErrorÚ_open_terminalÚ
slave_open)Ú	master_fdÚ
slave_nameÚslave_fds      Ú/usr/lib/python3.13/pty.pyr	   r	      sH   € ðÜ�zŠz‹|ÐøÜœGÐ$ó Ùðúä*Ó,Ñ€IÜ˜*Ó%€HØÐÐs   ‚ —*©*c                  ó   • SSK n U R                  S[        SS9   [        R                  " 5       u  p[        R
                  " U5      n[        R                  " U5        X4$ ! [        [        4 a     [        5       $ f = f)z“master_open() -> (master_fd, slave_name)
Open a pty master and return the fd, and the filename of the slave end.
Deprecated, use openpty() instead.r   NúUse pty.openpty() instead.r   ©Ú
stacklevel)
ÚwarningsÚwarnÚDeprecationWarningr   r	   Úttynamer   r   r   r   )r   r   r   r   s       r   Úmaster_openr    &   sw   € ó
 Ø‡M�MÐ.Ô0BÈq€MÑQð%Ü Ÿjšj›lÑˆ	ô —Z’Z Ó)ˆ
Ü
�Š�ÔØÐ$Ð$øô œGÐ$ó Øô ÓÐðús   ›A! Á!A=Á<A=c                  óÒ   • S HF  n S H=  nSU -   U-   n [         R                  " U[         R                  5      nUSU -   U-   4s  s  $    MH     [        S5      e! [         a     M]  f = f)z1Open pty master and return (master_fd, tty_name).ÚpqrstuvwxyzPQRSTÚ0123456789abcdefz/dev/ptyz/dev/ttyzout of pty devices)r   ÚopenÚO_RDWRr   )ÚxÚyÚpty_nameÚfds       r   r   r   9   su   € ãˆÛ#ˆAØ! A‘~¨Ñ)ˆHðÜ—W’W˜X¤r§y¡yÓ1�ð ˜
 Q™¨Ñ*Ð+Ô+ó $ñ  ô Ð&Ó
'Ð'øô ó Úðús   ”%AÁ
A&Á%A&c                 ó   • SSK nUR                  S[        SS9  [        R                  " U [        R
                  5      n SSKJnJn   U" X$S5        U" X$S5        U$ ! [         a    Us $ f = f! [         a     U$ f = f)	z�slave_open(tty_name) -> slave_fd
Open the pty slave and acquire the controlling terminal, returning
opened filedescriptor.
Deprecated, use openpty() instead.r   Nr   r   r   )ÚioctlÚI_PUSHÚptemÚldterm)r   r   r   r   r$   r%   Úfcntlr+   r,   ÚImportErrorr   )Útty_namer   Úresultr+   r,   s        r   r   r   E   s…   € ó Ø‡M�MÐ.Ô0BÈq€MÑQä�WŠW�XœrŸy™yÓ)€Fðß'ðÙˆf˜fÔ%Ùˆf˜hÔ'ð €Møô ó ØŠðûô
 ó ØØ€Mðús$   Á A Á	A/ ÁA,Á+A,Á/
A=Á<A=c                  ó´  •  [         R                  " 5       u  pU [        :X  a   [         R                  " 5         X4$ X4$ ! [         a     X4$ f = f! [
        [        4 a     Of = f[        5       u  p#[         R                  " 5       n U [        :X  a/  [         R                  " U5        [         R                  " U5        X4$ [         R                  " U5        X4$ )z`fork() -> (pid, master_fd)
Fork and make the child a session leader with a controlling terminal.)
r   ÚforkptyÚCHILDÚsetsidr   r   r	   r
   r   Ú	login_tty)Úpidr)   r   r   s       r   r
   r
   Z   sÅ   € ðÜ—*’*“,‰ˆð ”%‹<ðÜ—	’	”ð ˆwˆˆsˆwˆøô ó àØˆwˆðûô œGÐ$ó Ùðúô "›)Ñ€IÜ
�'Š'‹)€CØ
Œeƒ|Ü
�Š�ÔÜ
�Š�XÔð
 ˆ>Ðô 	�Š�Ôð ˆ>Ðs    ‚A ¤? ¿
AÁAÁA$Á#A$c                 ó0   • [         R                  " U S5      $ )zDefault read function.i   )r   Úread)r)   s    r   Ú_readr;   v   s   € ä�7Š7�2�tÓÐó    c                 óà  • [         R                  " U 5      (       a:  [         R                  " U S5         [        XUS9  [         R                  " U S5        gSnU [        :g  nU [
        :g  nSnSn / n/ n	U(       a$  [        U5      U:  a  UR                  [        5        U(       a   [        U5      U:  a  UR                  U 5        U(       a$  [        U5      S:”  a  U	R                  [
        5        [        U5      S:”  a  U	R                  U 5        [        X‰/ 5      u  p‰n
[
        U	;   a    [         R                  " [
        U5      nX{S nX;   a   U" U 5      nU(       d  gX|-  nX	;   a  [         R                  " X5      nXkS nU(       a$  [        U;   a  U" [        5      nU(       d  SnOXl-  nGMA  ! [         R                  " U S5        f = f! [         a    Sn N‘f = f! [         a    Sn N•f = f)zƒParent copy loop.
Copies
        pty master -> standard output   (master_read)
        standard input -> pty master    (stdin_read)F)Úmaster_readÚ
stdin_readTNi   r<   r   )r   Úget_blockingÚset_blockingÚ_copyÚSTDIN_FILENOÚSTDOUT_FILENOÚlenÚappendr   Úwriter   )r   r>   r?   Úhigh_waterlevelÚstdin_availÚstdout_availÚi_bufÚo_bufÚrfdsÚwfdsÚ_xfdsÚnÚdatas                r   rB   rB   z   s¸  € ô
 
‡‚�y×!Ñ!ô 	�Š˜	 5Ô)ð	-Ü�)ÀÒLô �OŠO˜I tÔ,ØØ€OØœ|Ñ+€KØ¤Ñ-€LØ€EØ€EØ
ØˆØˆÞœ3˜u›:¨Ó7Ø�K‰KœÔ%ÞœC ›J¨Ó8Ø�K‰K˜	Ô"ÞœC ›J¨›NØ�K‰KœÔ&Üˆu‹:˜‹>Ø�K‰K˜	Ô"ä" 4¨rÓ2Ñˆ�Eä˜DÓ ð%Ü—H’Hœ]¨EÓ2�Ø˜b˜	�ð ÓðÙ" 9Ó-�ö Øà‰MˆEàÓÜ—’˜Ó*ˆAØ˜"�IˆEæœ<¨4Ó/ÙœlÓ+ˆDÞØ#‘à‘�òU øô �OŠO˜I tÕ,ûô2 ó %Ø$’ð%ûô ó Ø’ðús/   ´
F0 Ä*G ÅG Æ0G	ÇGÇGÇG-Ç,G-c                 ó,  • [        U [        5      (       a  U 4n [        R                  " SU 5        [	        5       u  p4U[
        :X  a  [        R                  " U S   /U Q76    [        [        5      n[        [        5        Sn [        XAU5        U(       a  [        [        [        R                  W5        [!        U5        [#        US5      S   $ ! [        R                   a    Sn Nef = f! U(       a   [        [        [        R                  W5        f f = f)zCreate a spawned process.z	pty.spawnr   TFr   )Ú
isinstanceÚstrÚsysÚauditr
   r5   r   Úexeclpr   rC   r   ÚttyÚerrorrB   r   Ú	TCSAFLUSHr   r   )Úargvr>   r?   r8   r   ÚmodeÚrestores          r   r   r   »   sÕ   € ä�$œ×ÑØˆwˆÜ‡I‚Iˆk˜4Ô ä“V�N€CØ
Œeƒ|Ü
�	Š	�$�q‘'Ð!˜DÓ!ðÜœÓ&ˆÜŒ|ÔØˆð9Üˆi jÔ1æÜ”l¤C§M¡M°4Ô8ä	ˆ)ÔÜ�3˜‹?˜1ÑÐøô �9‰9ó ØŠðûö Ü”l¤C§M¡M°4Õ8ð ús   Á! C ÂC* ÃC'Ã&C'Ã*)D)Ú__doc__r   r   rU   rX   r   r   r   r   r   Ú__all__rC   rD   ÚSTDERR_FILENOr5   r	   r    r   r   r
   r;   rB   r   © r<   r   Ú<module>rb      sq   ðÙ  õ Û 	Û 
Û 
÷ ß ,Ñ ,â
&€à€Ø€Ø€à	€ò
òò&
(òò*ò8ð "'°5ô ?ðB "¨eõ r<   