��Qc@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!/sys/lib/python2.7/idlelib/run.pytidle_formatwarning_subprocscCs�|ay2ttj�dks$t�ttjd�}WntjdIJdSXdgtj(tjdt ddd t
|ff�}|jt�|j
�xJy�tr�yt�Wq�tk
r�w�q�Xny%tjjd
tdd�\}}Wntjk
r
w�nX|\}}}|||�}tjj||f�Wq�tk
retr�taq�q�q�tk
rx�q�tj�\} }
}y!t�tjj|df�Wq�tj| |
|d
tj�t�q�q�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.
ii�s/IDLE Subprocess: no IP port passed in sys.argv.Ntttargettnamet
SockThreadtargstblockttimeoutg����tfile(tno_exitfunctlentsystargvtAssertionErrortinttstderrt threadingtThreadt
manage_sockett LOCALHOSTt setDaemontTruetstarttexit_nowtexittKeyboardInterruptRt
request_queuetgettQueuetEmptytresponse_queuetputtquittingt
SystemExittexc_infotprint_exceptionRt tracebackt
__stderr__(tdel_exitfunctportt
sockthreadtseqtrequesttmethodRtkwargstretttypetvaluettb((s!/sys/lib/python2.7/idlelib/run.pytmain4sT
%
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 MyHandlertsocketterrorRR8Rtshow_socket_errorR(R*thandle_request(taddresstitserverterr((s!/sys/lib/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(RQRNRSRTtroottmsg((s!/sys/lib/python2.7/idlelib/run.pyRL�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"R5t last_typet
last_valuetlast_tracebackR7t
extract_tbtcleanup_tracebackt
print_listtformat_exception_only(
R tefilettyptvalRCtexcinfottbetexcludetlinesR((s!/sys/lib/python2.7/idlelib/run.pyR6�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(
tcountRRR"Rtobjecttablet
rpchandlerREt
startswitht
remotecall(
RCRitorig_tbtrpcfileRoROtfntlntnmR((s!/sys/lib/python2.7/idlelib/run.pyRa�s2
cCsMy/tjjr.dtj_tjjd�nWnttfk
rHnXdS(Nis
(Rtstdoutt softspacetwritetAttributeErrortEOFError(((s!/sys/lib/python2.7/idlelib/run.pyR\�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(RRtexitfuncRzR+(((s!/sys/lib/python2.7/idlelib/run.pyR+�s
RHcBseZd�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(R4R{R(R*tthreadtinterrupt_mainRR8R#t
currentThreadtgetNametreprR7t print_excR3(tselfR=tclient_addressterf((s!/sys/lib/python2.7/idlelib/run.pythandle_error�s&
(Rt
__module__R�(((s!/sys/lib/python2.7/idlelib/run.pyRH�sRIcBs,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 methodRktconsoletstdinRwR"tinterptmyseqtwaitg����N(t Executivetregistertget_remote_proxyR�RtPseudoInputFileRtencodingRR�tPseudoOutputFileRwR"t_keep_stdinR�Rt
RPCHandlertgetresponseR(R�t executive((s!/sys/lib/python2.7/idlelib/run.pythandlescCstjd�dS(s>override SocketIO method - wait for MainThread to shut us downi
N(RFRG(R�((s!/sys/lib/python2.7/idlelib/run.pytexithookscCstatj�dS(sEOverride SocketIO method - terminate wait on callback and exit threadN(R(R3R~R(R�((s!/sys/lib/python2.7/idlelib/run.pytEOFhookscCstatj�dS(sinterrupt awakened threadN(R(R3R~R(R�((s!/sys/lib/python2.7/idlelib/run.pytdecode_interrupthooks(RR�R�R�R�R�(((s!/sys/lib/python2.7/idlelib/run.pyRI�s R�cBsSeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Z
RS( cCs7||_tj|_tj�|_tj�|_dS(N(Rot__main__t__dict__tlocalsRtcalltipRtautocomplete(R�Ro((s!/sys/lib/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�tFalseR4RR5R3R+R6RoR�tgetvarR�topen_remote_stack_viewerR\(R�tcodetjit((s!/sys/lib/python2.7/idlelib/run.pytruncode,s"
cCstrtj�ndS(N(R�R~R(R�((s!/sys/lib/python2.7/idlelib/run.pytinterrupt_the_serverDscCstj|j|�S(N(Rtstart_debuggerRo(R�tgui_adap_oid((s!/sys/lib/python2.7/idlelib/run.pytstart_the_debuggerHscCs|jj|�dS(sDUnregister the Idb Adapter. Link objects and Idb then subject to GCN(Rot
unregister(R�tidb_adap_oid((s!/sys/lib/python2.7/idlelib/run.pytstop_the_debuggerKscCs|jj|�S(N(R�t fetch_tip(R�R((s!/sys/lib/python2.7/idlelib/run.pytget_the_calltipOscCs|jj||�S(N(R�tfetch_completions(R�twhattmode((s!/sys/lib/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�RRoR�ttb_framet f_globalsttb_nextRR]R^Rt
StackTreeItemRtremote_object_tree_item(R�t flist_oidReRfRCtflisttitem((s!/sys/lib/python2.7/idlelib/run.pytstackviewerUs
N(RR�R�R�R�R�R�R�R�RR�(((s!/sys/lib/python2.7/idlelib/run.pyR�$s (*RtioR RFRJR7R~R#R/tidlelibRRRRRRRRR�R&twarningstImportErrorRRt
formatwarningR�R*R3R�RDR%RLR6RaR\R+t RPCServerRHR�RItobjectR�(((s!/sys/lib/python2.7/idlelib/run.pyt<module>sJ
D &
|