Spade
Mini Shell
3
\v)�@s�ddlZddlZddlZddlmZmZddddgZGdd�d�ZGdd�de�Zdd d�Z e
d
kr�ej�Zej
ddd
d�ej�Zejs�ejjr�dZndZe e�dS)�N)�CommandCompiler�compile_command�InteractiveInterpreter�InteractiveConsole�interactrc@sBeZdZddd�Zddd�Zdd �Zdd
d�Zdd
�Zdd�ZdS)rNcCs$|dkrddd�}||_t�|_dS)NZ__console__)�__name__�__doc__)�localsr�compile)�selfr �r�/usr/lib64/python3.6/code.py�__init__s
zInteractiveInterpreter.__init__�<input>�singlec
CsRy|j|||�}Wn$tttfk
r6|j|�dSX|dkrDdS|j|�dS)NFT)r
�
OverflowError�SyntaxError�
ValueError�showsyntaxerror�runcode)r�source�filenameZsymbol�coderrr
� runsource's
z InteractiveInterpreter.runsourcecCs>yt||j�Wn(tk
r&�Yn|j�YnXdS)N)�execr �
SystemExit�
showtraceback)rrrrr
rNszInteractiveInterpreter.runcodecCs�tj�\}}}|t_|t_|t_|rp|tkrpy|j\}\}}}} Wntk
rVYnXt||||| f�}|t_tjtj kr�t
j||�}
|jdj
|
��ntj|||�dS)N�)�sys�exc_info� last_type�
last_value�last_tracebackr�argsr�
excepthook�__excepthook__� traceback�format_exception_only�write�join)rr�type�value�tb�msgZdummy_filename�lineno�offset�line�linesrrr
rasz&InteractiveInterpreter.showsyntaxerrorcCs|tj�\t_t_}}|t_zPtj|d|d|j�}tjtj krT|j
dj|��ntj|d|d|�Wdd}}XdS)Nr�r)rrr
r!r"r&�format_exception�tb_nextr$r%r(r))rZlast_tbZeir1rrr
r�sz$InteractiveInterpreter.showtracebackcCstjj|�dS)N)r�stderrr()r�datarrr
r(�szInteractiveInterpreter.write)N)rr)N) r�
__module__�__qualname__rrrrrr(rrrr
rs
'
#c@s:eZdZddd�Zdd�Zddd�Zd d
�Zddd
�ZdS)rN� <console>cCstj||�||_|j�dS)N)rrr�resetbuffer)rr rrrr
r�s
zInteractiveConsole.__init__cCs
g|_dS)N)�buffer)rrrr
r:�szInteractiveConsole.resetbufferc!CsPy
tjWntk
r$dt_YnXy
tjWntk
rJdt_YnXd}|dkrx|jdtjtj||jjf�n|r�|jdt |��d}x�yP|r�tj}ntj}y|j
|�}Wn tk
r�|jd�PYnX|j|�}Wq�t
k
�r|jd�|j�d}Yq�Xq�W|dk�r4|jd |jj�n|d
k�rL|jd|�dS)Nz>>> z... zFType "help",
"copyright", "credits" or "license" for more
information.zPython %s on %s
%s
(%s)
z%s
r�
z
KeyboardInterrupt
znow exiting %s...
r)rZps1�AttributeErrorZps2r(�version�platform� __class__r�str� raw_input�EOFError�push�KeyboardInterruptr:)r�banner�exitmsgZcprt�more�promptr0rrr
r�sF
zInteractiveConsole.interactcCs6|jj|�dj|j�}|j||j�}|s2|j�|S)Nr<)r;�appendr)rrr:)rr0rrHrrr
rD�szInteractiveConsole.pushrcCst|�S)N)�input)rrIrrr
rBszInteractiveConsole.raw_input)Nr9)NN)r)rr7r8rr:rrDrBrrrr
r�s
6cCsJt|�}|dk r||_n"yddl}Wntk
r8YnX|j||�dS)Nr)rrB�readline�ImportErrorr)rFZreadfuncZlocalrGZconsolerLrrr
rs�__main__z-q�
store_truez*don't print version and copyright
messages)�action�helpr)NNNN)rr&�argparseZcodeoprr�__all__rrrr�ArgumentParser�parser�add_argument�
parse_argsr#�q�flags�quietrFrrrr
�<module>s$t