HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.52.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 15 06:39:08 EDT 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/pexpect/__pycache__/popen_spawn.cpython-39.pyc
a

��!^�@s�dZddlZddlZddlZddlZddlZddlZddlZzddlm	Z	m
Z
Wn"eyrddl	m	Z	m
Z
Yn0ddlm
Z
mZddlmZddlmZGdd	�d	e
�ZdS)
zJProvides an interface like pexpect.spawn interface using subprocess.Popen
�N)�Queue�Empty�)�	SpawnBase�PY3)�EOF)�string_typesc	sleZdZd�fdd�	ZdZdd	�Zd
d�Zdd
�Zdd�Zdd�Z	ddd�Z
dd�Zdd�Zdd�Z
�ZS)�
PopenSpawn���N�strictc
	stt|�j||||||	d�|dur4tj�d�|_n|�tj�|_tdt	j
t	jt	j
||
|d�}tj
dkr�t	��}|jt	jO_||d<t	j|d<t|t�r�tj
dkr�tj|tjdkd	�}t	j|fi|��|_|jj|_d
|_|��|_t�|_tj|j d�|_!|j!�"d�|j!�#�dS)
N)�timeout�maxread�searchwindowsize�logfile�encoding�codec_errors�asciir)�bufsize�stdin�stderr�stdout�cwd�
preexec_fn�env�win32�startupinfoZ
creationflags�posix)rF)�targetT)$�superr	�__init__�os�linesep�encodeZcrlfZstring_type�dict�
subprocess�PIPEZSTDOUT�sys�platformZSTARTUPINFOZdwFlagsZSTARTF_USESHOWWINDOWZCREATE_NEW_PROCESS_GROUP�
isinstancer�shlex�split�name�Popen�proc�pid�closed�_bufr�_read_queue�	threading�Thread�_read_incomingZ_read_thread�	setDaemon�start)
�self�cmdr
rrrrrrrr�kwargsr��	__class__��7/usr/lib/python3.9/site-packages/pexpect/popen_spawn.pyr s4��



zPopenSpawn.__init__FcCs�|j}|jr8|r*||d�|_|d|�Sd|_td��|dkrH|j}n|durTd}t��}t��||kr�|r�t|�|kr�z|j��}Wnt	y�Yq�Yq\0|dur�d|_q�||j
j|dd�7}q\|d|�||d�}|_|�|d�|S)NTzEnd Of File (EOF).���g��.AF��final�read)
r1�_read_reached_eofZflag_eofrr
�time�lenr2Z
get_nowaitrZ_decoder�decode�_log)r8�sizer
�bufZt0Zincoming�rr=r=r>�read_nonblockingAs0 
zPopenSpawn.read_nonblockingc
Csx|jj��}d}zt�|d�}Wn0tyP}z|�|d�WYd}~n
d}~00|sf|j�d�dS|j�|�qdS)z6Run in a thread to move output from a pipe to a queue.�irBN)	r.r�filenor!rB�OSErrorrGr2Zput)r8rMrI�er=r=r>r5ds"zPopenSpawn._read_incomingcCs|�|�dS)zHThis is similar to send() except that there is no return value.
        N��send)r8�sr=r=r>�writeuszPopenSpawn.writecCs|D]}|�|�qdS)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.
        NrP)r8ZsequencerRr=r=r>�
writelineszszPopenSpawn.writelinescCsR|�|�}|�|d�|jj|dd�}tr8|jj�|�S|jj�|�t|�SdS)zZSend data to the subprocess' stdin.

        Returns the number of bytes written.
        rQFr@N)	Z_coerce_send_stringrGZ_encoderr#rr.rrSrE)r8rR�br=r=r>rQ�s
zPopenSpawn.send�cCs|�|�}||�|j�S)z�Wraps send(), sending string ``s`` to child process, with os.linesep
        automatically appended. Returns number of bytes written. )rQr")r8rR�nr=r=r>�sendline�s
zPopenSpawn.sendlinecCs8|j��}|dkr ||_d|_nd|_||_d|_|S)zKWait for the subprocess to finish.

        Returns the exit code.
        rNT)r.�waitZ
exitstatusZsignalstatusZ
terminated)r8�statusr=r=r>rY�s
zPopenSpawn.waitcCsTtjdkr@|tjtjfvr"tj}n|tjtjfvr:tj}ntj}t�	|j
j|�dS)z}Sends a Unix signal to the subprocess.

        Use constants from the :mod:`signal` module to specify which signal.
        rN)r'r(�signal�SIGINTZCTRL_C_EVENTZSIGBREAKZCTRL_BREAK_EVENT�SIGTERMr!�killr.r/)r8Zsigr=r=r>r^�s
zPopenSpawn.killcCs|jj��dS)z+Closes the stdin pipe from the writing end.N)r.r�close)r8r=r=r>�sendeof�szPopenSpawn.sendeof)	r
rNNNNNrN)rV)�__name__�
__module__�__qualname__r rCrKr5rSrTrQrXrYr^r`�
__classcell__r=r=r;r>r	s�*#

r	)�__doc__r!r3r%r'rDr[r*Zqueuerr�ImportErrorZ	spawnbaserr�
exceptionsrZutilsrr	r=r=r=r>�<module>s