§
    ŒŸj  ã                   óÀ   — d Z ddlZddlZddlZddlZddlZddlZddlZ	 ddlm	Z	m
Z
 n# e$ r ddl	m	Z	m
Z
 Y nw xY wddlmZmZ ddlmZ ddlmZ  G d„ d	e¦  «        ZdS )
zJProvides an interface like pexpect.spawn interface using subprocess.Popen
é    N)ÚQueueÚEmptyé   )Ú	SpawnBaseÚPY3)ÚEOF)Ústring_typesc                   ób   ‡ — e Zd Z	 	 	 dˆ fd„	ZdZd„ Zd„ Zd	„ Zd
„ Zd„ Z	dd„Z
d„ Zd„ Zd„ Zˆ xZS )Ú
PopenSpawné   éÐ  NÚstrictc           	      óÔ  •— t          t          | ¦  «                             ||||||	¬¦  «         |€%t          j                             d¦  «        | _        n$|                      t          j        ¦  «        | _        t          dt          j
        t          j        t          j
        ||
|¬¦  «        }t          j        dk    rAt          j        ¦   «         }|xj        t          j        z  c_        ||d<   t          j        |d<   t%          |t&          ¦  «        r4t          j        dk    r$t)          j        |t          j        dk    ¬	¦  «        }t          j        |fi |¤Ž| _        | j        j        | _        d
| _        |                      ¦   «         | _        t9          ¦   «         | _        t=          j        | j         ¬¦  «        | _!        d| j!        _"        | j!         #                    ¦   «          d S )N)ÚtimeoutÚmaxreadÚsearchwindowsizeÚlogfileÚencodingÚcodec_errorsÚasciir   )ÚbufsizeÚstdinÚstderrÚstdoutÚcwdÚ
preexec_fnÚenvÚwin32ÚstartupinfoÚcreationflagsÚposix)r!   F)ÚtargetT)$Úsuperr   Ú__init__ÚosÚlinesepÚencodeÚcrlfÚstring_typeÚdictÚ
subprocessÚPIPEÚSTDOUTÚsysÚplatformÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWÚCREATE_NEW_PROCESS_GROUPÚ
isinstancer	   ÚshlexÚsplitÚnameÚPopenÚprocÚpidÚclosedÚ_bufr   Ú_read_queueÚ	threadingÚThreadÚ_read_incomingÚ_read_threadÚdaemonÚstart)ÚselfÚcmdr   r   r   r   r   r   r   r   r   Úkwargsr   Ú	__class__s                €ú`/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/pexpect/popen_spawn.pyr$   zPopenSpawn.__init__   s«  ø€ õ 	�j˜$ÑÔ×(Ò(°À'Ø!1¸7Ø!°ð 	)ñ 	>ô 	>ð 	>ð ÐÝœ
×)Ò)¨7Ñ3Ô3ˆDŒIˆIà×(Ò(­"¬*Ñ5Ô5ˆDŒIå˜a¥z¤Ý'Ô.µz´Ø¨*¸#ð?ñ ?ô ?ˆõ Œ<˜7Ò"Ð"Ý$Ô0Ñ2Ô2ˆKØÐÔ¥:Ô#BÑBÐÔØ$/ˆF�=Ñ!Ý&0Ô&IˆF�?Ñ#å�c�<Ñ(Ô(ð 	=­S¬\¸WÒ-DÐ-DÝ”+˜c­¬°GÒ);Ð<Ñ<Ô<ˆCåÔ$ SÐ3Ð3¨FÐ3Ð3ˆŒ	Ø”9”=ˆŒØˆŒØ×$Ò$Ñ&Ô&ˆŒ	å ™7œ7ˆÔÝ%Ô,°DÔ4GÐHÑHÔHˆÔØ#'ˆÔÔ ØÔ×ÒÑ!Ô!Ð!Ð!Ð!ó    Fc                 ó’  — | j         }| j        r1|r||d …         | _         |d |…         S d| _        t          d¦  «        ‚|dk    r| j        }n|€d}t          j        ¦   «         }t          j        ¦   «         |z
  |k     r˜|r–t          |¦  «        |k     rƒ	 | j                             ¦   «         }|€d| _        n_|| j	         
                    |d¬¦  «        z  }n# t          $ r Y n3w xY wt          j        ¦   «         |z
  |k     r|rt          |¦  «        |k     °ƒ|d |…         ||d …         c}| _         |                      |d¦  «         |S )NTzEnd Of File (EOF).éÿÿÿÿg    €„.AF©ÚfinalÚread)r<   Ú_read_reached_eofÚflag_eofr   r   ÚtimeÚlenr=   Ú
get_nowaitÚ_decoderÚdecoder   Ú_log)rD   Úsizer   ÚbufÚt0ÚincomingÚrs          rH   Úread_nonblockingzPopenSpawn.read_nonblockingA   st  € ØŒiˆØÔ!ð 	0ð ð 0Ø   œJ�”	Ø˜5˜D˜5”zÐ!à $�”ÝÐ.Ñ/Ô/Ð/à�bŠ=ˆ=Ø”lˆGˆGØˆ_ØˆGåŒY‰[Œ[ˆÝŒy‰{Œ{˜RÑ 7Ò*Ð*¨tÐ*½¸C¹¼À4º¸ð	CØÔ+×6Ò6Ñ8Ô8�ð Ð#Ø-1�DÔ*Øà�t”}×+Ò+¨H¸EÐ+ÑBÔBÑB��øõ ð ð ð Ø�ðøøøõ Œy‰{Œ{˜RÑ 7Ò*Ð*¨tÐ*½¸C¹¼À4º¸ð ˜5˜D˜5”z 3 t u u¤:ˆˆˆ4Œ9à�	Š	�!�VÑÔÐØˆs   ÂC Ã
C%Ã$C%c                 ó>  — | j         j                             ¦   «         }	 d}	 t          j        |d¦  «        }n-# t
          $ r }|                      |d¦  «         Y d}~nd}~ww xY w|s| j                             d¦  «         dS | j                             |¦  «         Œ)z6Run in a thread to move output from a pipe to a queue.r   rI   i   rN   N)	r9   r   Úfilenor%   rN   ÚOSErrorrV   r=   Úput)rD   r^   rX   Úes       rH   r@   zPopenSpawn._read_incomingd   s¾   € à”Ô!×(Ò(Ñ*Ô*ˆð	&ØˆCð%Ý”g˜f dÑ+Ô+��øÝð %ð %ð %Ø—	’	˜!˜VÑ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$øøøøð%øøøð ð àÔ ×$Ò$ TÑ*Ô*Ð*Ø�àÔ× Ò  Ñ%Ô%Ð%ð	&s   £9 ¹
A#ÁAÁA#c                 ó0   — |                       |¦  «         dS )zHThis is similar to send() except that there is no return value.
        N©Úsend)rD   Úss     rH   ÚwritezPopenSpawn.writeu   s   € ð 	�	Š	�!‰ŒˆˆˆrI   c                 ó:   — |D ]}|                       |¦  «         ŒdS )zëThis calls write() for each element in the sequence.

        The sequence can be any iterable object producing strings, typically a
        list of strings. This does not add line separators. There is no return
        value.
        Nrc   )rD   Úsequencere   s      rH   Ú
writelineszPopenSpawn.writelinesz   s.   € ð ð 	ð 	ˆAØ�IŠI�a‰LŒLˆLˆLð	ð 	rI   c                 ó8  — |                       |¦  «        }|                      |d¦  «         | j                             |d¬¦  «        }t          r| j        j                             |¦  «        S | j        j                             |¦  «         t          |¦  «        S )zZSend data to the subprocess' stdin.

        Returns the number of bytes written.
        rd   FrL   )	Ú_coerce_send_stringrV   Ú_encoderr'   r   r9   r   rf   rR   )rD   re   Úbs      rH   rd   zPopenSpawn.send„   sŠ   € ð
 ×$Ò$ QÑ'Ô'ˆØ�	Š	�!�VÑÔÐàŒM× Ò  ¨%Ð Ñ0Ô0ˆÝð 	Ø”9”?×(Ò(¨Ñ+Ô+Ð+ð ŒIŒO×!Ò! !Ñ$Ô$Ð$Ý�q‘6”6ˆMrI   Ú c                 óf   — |                       |¦  «        }||                       | j        ¦  «        z   S )z†Wraps send(), sending string ``s`` to child process, with os.linesep
        automatically appended. Returns number of bytes written. )rd   r&   )rD   re   Úns      rH   ÚsendlinezPopenSpawn.sendline•   s,   € ð �IŠI�a‰LŒLˆØ�4—9’9˜Tœ\Ñ*Ô*Ñ*Ð*rI   c                 óŽ   — | j                              ¦   «         }|dk    r|| _        d| _        nd| _        | | _        d| _        |S )zKWait for the subprocess to finish.

        Returns the exit code.
        r   NT)r9   ÚwaitÚ
exitstatusÚsignalstatusÚ
terminated)rD   Ústatuss     rH   rs   zPopenSpawn.waitœ   sM   € ð
 ”—’Ñ!Ô!ˆØ�QŠ;ˆ;Ø$ˆDŒOØ $ˆDÔÐà"ˆDŒOØ!' ˆDÔØˆŒØˆrI   c                 ó  — t           j        dk    rZ|t          j        t          j        fv rt          j        }n3|t          j        t          j        fv rt          j        }nt          j        }t          j	        | j
        j        |¦  «         dS )z}Sends a Unix signal to the subprocess.

        Use constants from the :mod:`signal` module to specify which signal.
        r   N)r.   r/   ÚsignalÚSIGINTÚCTRL_C_EVENTÚSIGBREAKÚCTRL_BREAK_EVENTÚSIGTERMr%   Úkillr9   r:   )rD   Úsigs     rH   r   zPopenSpawn.kill«   sr   € õ
 Œ<˜7Ò"Ð"Ø•v”}¥fÔ&9Ð:Ð:Ð:ÝÔ)��Ø�œ­&Ô*AÐBÐBÐBÝÔ-��å”n�å
Œ�”	”˜sÑ#Ô#Ð#Ð#Ð#rI   c                 óB   — | j         j                             ¦   «          dS )z+Closes the stdin pipe from the writing end.N)r9   r   Úclose)rD   s    rH   ÚsendeofzPopenSpawn.sendeofº   s   € àŒ	Œ×ÒÑÔÐÐÐrI   )	r   r   NNNNNr   N)rn   )Ú__name__Ú
__module__Ú__qualname__r$   rO   r\   r@   rf   ri   rd   rq   rs   r   rƒ   Ú__classcell__)rG   s   @rH   r   r      sÜ   ø€ € € € € ØGKØ<@Ø37ð("ð ("ð ("ð ("ð ("ð ("ðT Ðð!ð !ð !ðF&ð &ð &ð"ð ð ð
ð ð ðð ð ð"+ð +ð +ð +ðð ð ð$ð $ð $ð ð  ð  ð  ð  ð  ð  rI   r   )Ú__doc__r%   r>   r+   r.   rQ   ry   r5   Úqueuer   r   ÚImportErrorÚ	spawnbaser   r   Ú
exceptionsr   Úutilsr	   r   © rI   rH   ú<module>r�      s)  ððð à 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø €€€ð#Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"øØð #ð #ð #Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ð#øøøð &Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðh ð h ð h ð h ð h �ñ h ô h ð h ð h ð h s    ) ©9¸9