Spade
Mini Shell
�
s�fc@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m
Z
ddl mZddl mZddl m
Z
ddl mZddl mZddl mZdd l mZddlZd
ZyddlZWnek
r!nXdd�Zee_eaeaeaed�Zd
�Zd�Zd�Z
d�Z!d�Z"d�Z#dej$fd��YZ%dej&fd��YZ'de(fd��YZ)dS(i����N(tCallTips(tAutoComplete(tRemoteDebugger(tRemoteObjectBrowser(tStackViewer(trpc(tPyShell(t IOBindings 127.0.0.1cCsyd}|d||f7}|dkr;tj||�}n|j�}|r^|d|7}n|d|j|f7}|S(sFormat
warnings the IDLE ways!
Warning (from warnings module):
s File "%s", line %s
s %s
s%s: %s
N(tNonet linecachetgetlinetstript__name__(tmessagetcategorytfilenametlinenotlinets((s#/usr/lib64/python2.7/idlelib/run.pytidle_formatwarning_subprocscCs�|ayttjd�}WntjdIJdSXdgtj(tjdtdddt|ff�}|j t
�|j�xJy�tr�yt
�Wq�tk
r�w�q�Xny%tjjd t
d
d�\}}Wntjk
r�w�nX|\}}}|||�}tjj||f�Wq�tk
rJtr�t
aq�q�q�tk
r]�q�tj�\} }
}y!t�tjj|df�Wq�tj| |
|dtj�t
�q�Xq�q�Xq�dS(
sjStart the Python execution
server in a subprocess
In the Python subprocess, RPCServer is instantiated with handlerclass
MyHandler, which inherits register/unregister methods from RPCHandler
via
the mix-in class SocketIO.
When the RPCServer 'server' is instantiated, the TCPServer
initialization
creates an instance of run.MyHandler and calls its handle() method.
handle() instantiates a run.Executive object, passing it a reference to
the
MyHandler object. That reference is saved as attribute rpchandler of
the
Executive instance. The Executive methods have access to the reference
and
can pass it on to entities that they command
(e.g. RemoteDebugger.Debugger.start_debugger()). The latter, in turn,
can
call MyHandler(SocketIO) register/unregister methods via the reference
to
register and unregister themselves.
i����s/IDLE Subprocess: no IP port passed in
sys.argv.Ntttargettnamet
SockThreadtargstblockttimeoutg�������?tfile(tno_exitfunctinttsystargvtstderrt threadingtThreadt
manage_sockett LOCALHOSTt setDaemontTruetstarttexit_nowtexittKeyboardInterruptRt
request_queuetgettQueuetEmptytresponse_queuetputtquittingt
SystemExittexc_infotprint_exceptionRt tracebackt
__stderr__(tdel_exitfunctportt
sockthreadtseqtrequesttmethodRtkwargstretttypetvaluettb((s#/usr/lib64/python2.7/idlelib/run.pytmain4sR
%
cCs�x�td�D]\}tj|�yt|t�}PWq
tjk
rh}tjd|j ddIJq
Xq
WtjdIJt
||�tadS|j
�dS(NisIDLE Subprocess: socket error: is,
retrying....s8IDLE Subprocess: Connection to IDLE GUI failed,
exiting.(trangettimetsleeptMyRPCServert MyHandlertsocketterrorRR6Rtshow_socket_errorR&R(thandle_request(taddresstitserverterr((s#/usr/lib64/python2.7/idlelib/run.pyR#xs
cCs�ddl}ddl}|j�}|j�|jddkrdd|}|jd|d|�n|jdd|jd�|j�dS( Ni����ii=s�IDLE's
subprocess can't connect to %s:%d. This may be due to your personal
firewall configuration. It is safe to allow this internal connection
because no data is visible on external ports.sIDLE Subprocess
ErrortparentsSocket Error:
%si(tTkinterttkMessageBoxtTktwithdrawRt showerrortdestroy(RORLRQRRtroottmsg((s#/usr/lib64/python2.7/idlelib/run.pyRJ�s
c
Cs�ddl}|j�t�tj}tj�\}}}}|\t_t_t_t j
|�}|dIJd
}t||�t j|d |�t j
||�}x|D]} || Iq�WdS(Ni����s#
Traceback (most recent call
last):srun.pysrpc.pysthreading.pysQueue.pysRemoteDebugger.pysbdb.pyR(srun.pysrpc.pysthreading.pysQueue.pysRemoteDebugger.pysbdb.py(R t
checkcachetflush_stdoutRR R3t last_typet
last_valuetlast_tracebackR5t
extract_tbtcleanup_tracebackt
print_listtformat_exception_only(
R tefilettyptvalRAtexcinfottbetexcludetlinesR((s#/usr/lib64/python2.7/idlelib/run.pyR4�s
c
Cs\|}x>|rGx*|D]!}|ddj|�rPqqWP|d=q
Wx>|r�x*|D]!}|ddj|�rXPqXqXWP|d=qKWt|�dkr�||(tjdIJntjdj}x�tt|��D]~}||\}}}} |dkrd}n| r>|jd�r>|j dd ||fi�} n|||| f||<q�Wd
S(sARemove excluded traces from beginning/end of tb; get cached
linesii����s** IDLE Internal Exception: texect?s
-toplevel-s <pyshell#R R
N(
tcounttlenRR Rtobjecttablet
rpchandlerRCt
startswitht
remotecall(
RARgtorig_tbtrpcfileRnRMtfntlntnmR((s#/usr/lib64/python2.7/idlelib/run.pyR_�s2
cCsMy/tjjr.dtj_tjjd�nWnttfk
rHnXdS(Nis
(Rtstdoutt softspacetwritetAttributeErrortEOFError(((s#/usr/lib64/python2.7/idlelib/run.pyRZ�scCs8tr'y
t`Wq'tk
r#q'Xntjd�dS(s�Exit subprocess, possibly after first
deleting sys.exitfunc
If config-main.cfg/.def 'General' 'delete-exitfunc'
is True, then any
sys.exitfunc will be removed before exiting. (VPython support)
iN(RRtexitfuncRyR)(((s#/usr/lib64/python2.7/idlelib/run.pyR)�s
RFcBseZd�ZRS(cCs�y�Wn�tk
r�n�tk
r=tatj�n�tj}|dddIJ|dIJ|dtj �j
�IJ|dI|IJ|dIt|�IJtj
d|�|d IJ|ddIJtatj�nXd
S(srOverride RPCServer method for IDLE
Interrupt the MainThread and exit server if link is dropped.
s
t-i(sUnhandled server exception!s
Thread: %ssClient Address: s Request: Rs#
*** Unrecoverable, server
exiting!N(R2RzR&R(tthreadtinterrupt_mainRR6R!t
currentThreadtgetNametreprR5t print_excR1(tselfR;tclient_addressterf((s#/usr/lib64/python2.7/idlelib/run.pythandle_error�s&
(Rt
__module__R�(((s#/usr/lib64/python2.7/idlelib/run.pyRF�sRGcBs,eZd�Zd�Zd�Zd�ZRS(cCs�t|�}|jd|�|jd�|_tj|jdtj�t_ tj
|jdtj�t_tj
|jdtj�t_tj |_
|jd�|_tjj|dd
dd �d
S(sOverride base methodRitconsoletstdinRvR
tinterptmyseqtwaitg�������?N(t Executivetregistertget_remote_proxyR�RtPseudoInputFileRtencodingRR�tPseudoOutputFileRvR
t_keep_stdinR�Rt
RPCHandlertgetresponseR(R�t executive((s#/usr/lib64/python2.7/idlelib/run.pythandlescCstjd�dS(s>override
SocketIO method - wait for MainThread to shut us downi
N(RDRE(R�((s#/usr/lib64/python2.7/idlelib/run.pytexithookscCstatj�dS(sEOverride
SocketIO method - terminate wait on callback and exit
threadN(R&R1R}R~(R�((s#/usr/lib64/python2.7/idlelib/run.pytEOFhookscCstatj�dS(sinterrupt
awakened
threadN(R&R1R}R~(R�((s#/usr/lib64/python2.7/idlelib/run.pytdecode_interrupthooks(RR�R�R�R�R�(((s#/usr/lib64/python2.7/idlelib/run.pyRG�s R�cBsSeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Z
RS( cCs7||_tj|_tj�|_tj�|_dS(N(Rnt__main__t__dict__tlocalsRtcalltipRtautocomplete(R�Rn((s#/usr/lib64/python2.7/idlelib/run.pyt__init__&s cBs�y,d|_eaz||jUWdeaXWnkek
r?nbej�|_e rae
�ne�|jj
jd�}|r�|jjj�q�nXe�dS(Ns<<toggle-jit-stack-viewer>>(Rtusr_exc_infoR&t
interruptableR�tFalseR2RR3R1R)R4RnR�tgetvarR�topen_remote_stack_viewerRZ(R�tcodetjit((s#/usr/lib64/python2.7/idlelib/run.pytruncode,s"
cCstrtj�ndS(N(R�R}R~(R�((s#/usr/lib64/python2.7/idlelib/run.pytinterrupt_the_serverDscCstj|j|�S(N(Rtstart_debuggerRn(R�tgui_adap_oid((s#/usr/lib64/python2.7/idlelib/run.pytstart_the_debuggerHscCs|jj|�dS(sDUnregister
the Idb Adapter. Link objects and Idb then subject to GCN(Rnt
unregister(R�tidb_adap_oid((s#/usr/lib64/python2.7/idlelib/run.pytstop_the_debuggerKscCs|jj|�S(N(R�t fetch_tip(R�R((s#/usr/lib64/python2.7/idlelib/run.pytget_the_calltipOscCs|jj||�S(N(R�tfetch_completions(R�twhattmode((s#/usr/lib64/python2.7/idlelib/run.pytget_the_completion_listRscCs�|jr|j\}}}ndSd}|dk rI|jj|�}nx)|rt|jjddkrt|j}qLW|t_|t_ t
j||�}tj
|�S(NRRtrun(srpcR�(R�RRnR�ttb_framet f_globalsttb_nextRR[R\Rt
StackTreeItemRtremote_object_tree_item(R�t flist_oidRcRdRAtflisttitem((s#/usr/lib64/python2.7/idlelib/run.pytstackviewerUs
N(RR�R�R�R�R�R�R�R�RR�(((s#/usr/lib64/python2.7/idlelib/run.pyR�$s (*RtioR RDRHR5R}R!R-tidlelibRRRRRRRRR�R$twarningstImportErrorRRt
formatwarningR�R(R1R�RBR#RJR4R_RZR)t RPCServerRFR�RGtobjectR�(((s#/usr/lib64/python2.7/idlelib/run.pyt<module>sJ
D &