Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib/python3.7/site-packages/py/_io/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib/python3.7/site-packages/py/_io/__pycache__/capture.cpython-37.pyc

B

���]�.�@sVddlZddlZddlZddlZyddlmZWn ek
rPddlmZYnXejdkrnGdd�de�ZneZyddlm	Z	Wn$ek
r�Gdd�de�Z	YnXd	d
dd�Z
Gd
d�d�Zddd�ZGdd�de
�ZGdd�de
�ZGdd�de�ZGdd�de�ZGdd�d�Zy
ejZWn,ek
�rPejdk�rHdZndZYnXdS) �N)�StringIO)�rc@seZdZdd�ZdS)�TextIOcCs.t|t�st|t|dd�d�}t�||�dS)NZ	_encodingzUTF-8�replace)�
isinstance�unicode�getattrr�write)�self�data�r�?/opt/alt/python37/lib/python3.7/site-packages/py/_io/capture.pyr	
s
zTextIO.writeN)�__name__�
__module__�__qualname__r	rrrr
rsr)�BytesIOc@seZdZdd�ZdS)rcCs(t|t�rtd|f��t�||�dS)Nznot a byte value: %r)rr�	TypeErrorrr	)r
rrrr
r	s
z
BytesIO.writeN)rrrr	rrrr
rsr�stdin�stdout�stderr)r��c@s2eZdZdZd
dd�Zdd�Zd	d
�Zdd�ZdS)�	FDCapturez5 Capture IO to/from a given os-level filedescriptor. NTFcCsl||_|dkr4|dkr4t�d�}t|dd�}|��||_t�|j�|_|r\t	t
t|�|_|rh|�
�dS)z� save targetfd descriptor, and open a new
            temporary file there.  If no tmpfile is
            specified a tempfile.Tempfile() will be opened
            in text mode.
        Nrzwb+zUTF-8)�encoding)�targetfd�tempfile�
TemporaryFile�dupfile�close�tmpfile�os�dup�_savefdr�sys�patchsysdict�_oldsys�start)r
rr�now�patchsys�frrr
�__init__"s
zFDCapture.__init__cCs�yt�|j�Wntk
r,td��YnX|jdkr�|js�t�ttj	�}t�
|d�t�|�t|d�r�t
tt|jt��n2t�
|j��|j�t|d�r�t
tt|j|j�dS)Nz;saved filedescriptor not valid, did you call start() twice?rr%)r �fstatr"�OSError�
ValueErrorrr�open�devnullpath�O_RDONLY�dup2r�hasattr�setattrr#r$�DontReadFromInput�fileno)r
�fdrrr
r&4s


zFDCapture.startcCsVt�|j|j�t�|j�|jdkr2|j�d�t|d�rPtt	t
|j|j�|jS)zF unpatch and clean up, returns the self.tmpfile (file object)
        rr%)r r1r"rrr�seekr2r3r#r$r%)r
rrr
�doneEs

zFDCapture.donecCs8t��}z t�|j|���|�|�Wd|��XdS)z8 write a string to the original file descriptor
        N)rrr r1r"r5r	r)r
rZtempfprrr
�writeorgPs
zFDCapture.writeorg)NTF)rrr�__doc__r*r&r8r9rrrr
rs

rFcCs�y|��}|p|j}Wntk
r0|r,�|SXt�|�}tjdkrr|dk	r^|�dd�}d}tj||||dd�St�|||�}|dk	r�t	||�S|SdS)ae return a new open file object that's a duplicate of f

        mode is duplicated if not given, 'buffering' controls
        buffer size (defaulting to no buffering) and 'raising'
        defines whether an exception is raised when an incompatible
        file object is passed in (if raising is False, the file
        object itself will be returned)
    )rrN�b�T)�closefd)
r5�mode�AttributeErrorr r!r#�version_infor�fdopen�EncodedFile)r)r>�	bufferingZraisingrr6Znewfdrrr
r[s"	


rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rBcCs||_||_dS)N)�_streamr)r
rDrrrr
r*xszEncodedFile.__init__cCs<t|t�r|�|j�}nt|t�r$nt|�}|j�|�dS)N)rr�encoder�strrDr	)r
�objrrr
r	|s

zEncodedFile.writecCsd�|�}|�|�dS)Nr<)�joinr	)r
Zlinelistrrrr
�
writelines�s
zEncodedFile.writelinescCst|j|�S)N)rrD)r
�namerrr
�__getattr__�szEncodedFile.__getattr__N)rrrr*r	rIrKrrrr
rBws	rBc@s,eZdZdd�Zee�Zdd�Zdd�ZdS)�CapturecOs.|�}z|||�}Wd|��\}}X|||fS)z� return a (res, out, err) tuple where
            out and err represent the output/error output
            during function execution.
            call the given function with args/kwargs
            and capture output/error during its execution.
        N)�reset)�cls�func�args�kwargs�so�res�out�errrrr
�call�s
zCapture.callcCstt|d�rtd��d|_|jdd�\}}d\}}|rJ|jsJ|��}|��|rl||krl|jsl|��}|��||fS)z@ reset sys.stdout/stderr and return captured output as strings. �_resetzwas already resetTF)�save)r<r<)r2r-rWr8�closed�readr)r
�outfile�errfilerTrUrrr
rM�s

z
Capture.resetcCs|��}|��\}}|S)z7 return current snapshot captures, memorize tempfiles. )�
readouterrr8)r
Zouterrr[r\rrr
�suspend�szCapture.suspendN)rrrrV�classmethodrMr^rrrr
rL�s
rLc@sLeZdZdZddd�Zdd�Zdd	�Zd
d�Zddd
�Zdd�Z	dd�Z
dS)�StdCaptureFDz� This class allows to capture writes to FD1 and FD2
        and may connect a NULL file to FD0 (and prevent
        reads from sys.stdin).  If any of the 0,1,2 file descriptors
        is invalid it will not be captured.
    TFcCs,||||||d�|_|��|r(|��dS)N)rTrU�mixed�in_r(r')�_options�_save�startall)r
rTrUrarbr(r'rrr
r*�s
zStdCaptureFD.__init__cCs|jd}|jd}|jd}|jd}|jd}|rbytddd|d�|_Wntk
r`YnX|r�d}t|d	�rx|}y$td
|d|d�|_|jj|jd<Wntk
r�YnX|�r|r�|r�|jj}nt|d	�r�|}nd}y$td|d|d�|_|jj|jd<Wntk
�rYnXdS)NrbrTrUrar(rF)rr'r(r	rr)rcrrbr,r2rTrrU)r
rbrTrUrar(rrrr
rd�sB







zStdCaptureFD._savecCs@t|d�r|j��t|d�r(|j��t|d�r<|j��dS)NrbrTrU)r2rbr&rTrU)r
rrr
re�s




zStdCaptureFD.startallcCs|��dS)z, resume capturing with original temp files. N)re)r
rrr
�resume�szStdCaptureFD.resumecCsld}}t|d�r&|jjjs&|j��}t|d�rD|jjjsD|j��}t|d�rX|j��}|rd|��||fS)z/ return (outfile, errfile) and stop capturing. NrTrUrb)r2rTrrYr8rUrbrd)r
rXr[r\rrrr
r8�s



zStdCaptureFD.donecCsDt|d�r|�|jj�}nd}t|d�r8|�|jj�}nd}||gS)z4 return snapshot value of stdout/stderr capturings. rTr<rU)r2�
_readsnapshotrTrrU)r
rTrUrrr
r]s

zStdCaptureFD.readouterrcCsJ|�d�|��}t|dd�}|r2tj�||d�}|�d�|�d�|S)Nrrr)r7rZr�py�builtinZ_totext�truncate)r
r)rS�encrrr
rgs


zStdCaptureFD._readsnapshotN)TTFTTT)T)rrrr:r*rdrerfr8r]rgrrrr
r`�s

$

r`c@s<eZdZdZddd�Zdd�Zddd	�Zd
d�Zdd
�ZdS)�
StdCapturea This class allows to capture writes to sys.stdout|stderr "in-memory"
        and will raise errors on tries to read from sys.stdin. It only
        modifies sys.stdout|stderr|stdin attributes and does not
        touch underlying File Descriptors (use StdCaptureFD for that).
    TFcCsltj|_tj|_tj|_|r,t|d�s,t�}||_	|rP|r@|}nt|d�sPt�}||_
||_|rh|��dS)N�filer	)
r#r�_oldoutr�_olderrr�_oldinr2rrTrUrbre)r
rTrUrbrar'rrr
r* s
zStdCapture.__init__cCs4|jr|jt_|jr|jt_|jr0t�t_|_dS)N)rTr#rrUrrbr4r)r
rrr
re1szStdCapture.startallcCsjd}}|jr.|jjs.|jt_|j}|�d�|jrT|jjsT|jt_|j}|�d�|j	rb|j
t_||fS)z/ return (outfile, errfile) and stop capturing. Nr)rTrYrnr#rr7rUrorrbrpr)r
rXr[r\rrr
r89s

zStdCapture.donecCs|��dS)z, resume capturing with original temp files. N)re)r
rrr
rfHszStdCapture.resumecCs`d}}|jr0|j��}|j�d�|j�d�|jrX|j��}|j�d�|j�d�||fS)z4 return snapshot value of stdout/stderr capturings. r<r)rT�getvaluerjr7rU)r
rTrUrrr
r]Ls

zStdCapture.readouterrN)TTTFT)T)	rrrr:r*rer8rfr]rrrr
rls

rlc@s<eZdZdZdd�ZeZeZeZdd�Zdd�Z	dd	�Z
d
S)r4aTemporary stub class.  Ideally when stdin is accessed, the
    capturing should be turned off, with possibly all data captured
    so far sent to the screen.  This should be configurable, though,
    because in automated test runs it is better to crash than
    hang indefinitely.
    cGstd��dS)Nz+reading from stdin while output is captured)�IOError)r
rPrrr
rZ`szDontReadFromInput.readcCstd��dS)Nz/redirected Stdin is pseudofile, has no fileno())r-)r
rrr
r5fszDontReadFromInput.filenocCsdS)NFr)r
rrr
�isattyhszDontReadFromInput.isattycCsdS)Nr)r
rrr
rjszDontReadFromInput.closeN)rrrr:rZ�readline�	readlines�__iter__r5rsrrrrr
r4Ysr4�ntZNULz	/dev/null)NrFN)r r#rhr�ior�ImportErrorr@rrr$rr�objectrBrLr`rlr4�devnullr/r?rJrrrr
�<module>s8
<
&h?