tQc@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl m Z ddl mZddl mZddl mZdd l mZddlZd ZyddlZWnek r!nXdd Zee_eaeaeaed Zd ZdZdZ dZ!dZ"dZ#dej$fdYZ%dej&fdYZ'de(fdYZ)dS(iN(tCallTips(t AutoComplete(tRemoteDebugger(tRemoteObjectBrowser(t StackViewer(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_subprocs  c Cs|ayttjd}WntjdIJdSXdgtj(tjdtdddt|ff}|j t |j xJyt ry t Wqtk rwqXny%tjjd t d d \}}Wntjk rwnX|\}}}|||}tjj||fWqtk rJtrt a qqqtk r]qtj\} } } y!ttjj|dfWqtj| | | d tjt qXqqXqdS( 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. is/IDLE Subprocess: no IP port passed in sys.argv.Ntttargettnamet SockThreadtargstblockttimeoutg?tfile(t no_exitfunctinttsystargvtstderrt threadingtThreadt manage_sockett LOCALHOSTt setDaemontTruetstarttexit_nowtexittKeyboardInterruptRt request_queuetgettQueuetEmptytresponse_queuetputtquittingt SystemExittexc_infotprint_exceptionRt tracebackt __stderr__( t del_exitfunctportt sockthreadtseqtrequesttmethodRtkwargstretttypetvaluettb((s!/sys/lib/python2.7/idlelib/run.pytmain4sR       %    cCsxtdD]\}tj|yt|t}PWq tjk rh}tjd|j ddIJq Xq WtjdIJt ||t a dS|j dS(NisIDLE Subprocess: socket error: is, retrying....s8IDLE Subprocess: Connection to IDLE GUI failed, exiting.(trangettimetsleept MyRPCServert MyHandlertsocketterrorRR6Rtshow_socket_errorR&R(thandle_request(taddresstitserverterr((s!/sys/lib/python2.7/idlelib/run.pyR#xs   cCsddl}ddl}|j}|j|jddkrdd|}|jd|d|n|jdd|jd|jdS( Niii=sIDLE'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(tTkintert tkMessageBoxtTktwithdrawRt showerrortdestroy(RORLRQRRtroottmsg((s!/sys/lib/python2.7/idlelib/run.pyRJs     c Csddl}|jttj}tj\}}}}|\t_t_t_t j |}|dIJd }t ||t j |d |t j ||}x|D]} || IqWdS( Nis# Traceback (most recent call last):srun.pysrpc.pys threading.pysQueue.pysRemoteDebugger.pysbdb.pyR(srun.pysrpc.pys threading.pysQueue.pysRemoteDebugger.pysbdb.py(R t checkcachet flush_stdoutRR R3t last_typet last_valuetlast_tracebackR5t extract_tbtcleanup_tracebackt print_listtformat_exception_only( R tefilettyptvalRAtexcinfottbetexcludetlinesR((s!/sys/lib/python2.7/idlelib/run.pyR4s      c Cs\|}x>|rGx*|D]!}|ddj|rPqqWP|d=q Wx>|rx*|D]!}|ddj|rXPqXqXWP|d=qKWt|dkr||(tjdIJntjdj}xtt|D]~}||\}}}} |dkrd}n| r>|jdr>|j dd ||fi} n|||| f||override SocketIO method - wait for MainThread to shut us downi N(RDRE(R((s!/sys/lib/python2.7/idlelib/run.pytexithookscCstatjdS(sEOverride SocketIO method - terminate wait on callback and exit threadN(R&R1R}R~(R((s!/sys/lib/python2.7/idlelib/run.pytEOFhookscCstatjdS(sinterrupt awakened threadN(R&R1R}R~(R((s!/sys/lib/python2.7/idlelib/run.pytdecode_interrupthooks(R RRRRR(((s!/sys/lib/python2.7/idlelib/run.pyRGs   RcBsSeZdZdZdZdZdZdZdZddZ RS( cCs7||_tj|_tj|_tj|_dS(N(Rnt__main__t__dict__tlocalsRtcalltipRt autocomplete(RRn((s!/sys/lib/python2.7/idlelib/run.pyt__init__&s  cBsy,d|_eaz||jUWdeaXWnkek r?nbej|_e rae ne |j j jd}|r|j jjqnXedS(Ns<>(Rt usr_exc_infoR&t interruptableRtFalseR2RR3R1R)R4RnRtgetvarRtopen_remote_stack_viewerRZ(Rtcodetjit((s!/sys/lib/python2.7/idlelib/run.pytruncode,s"    cCstrtjndS(N(RR}R~(R((s!/sys/lib/python2.7/idlelib/run.pytinterrupt_the_serverDscCstj|j|S(N(Rtstart_debuggerRn(Rt gui_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(Rnt unregister(Rt idb_adap_oid((s!/sys/lib/python2.7/idlelib/run.pytstop_the_debuggerKscCs|jj|S(N(Rt fetch_tip(RR((s!/sys/lib/python2.7/idlelib/run.pytget_the_calltipOscCs|jj||S(N(Rtfetch_completions(Rtwhattmode((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 ||}t j |S(NR Rtrun(srpcR(RRRnRttb_framet f_globalsttb_nextRR[R\Rt StackTreeItemRtremote_object_tree_item(Rt flist_oidRcRdRAtflisttitem((s!/sys/lib/python2.7/idlelib/run.pyt stackviewerUs     N( R RRRRRRRRRR(((s!/sys/lib/python2.7/idlelib/run.pyR$s       (*RtioR RDRHR5R}R!R-tidlelibRRRRRRRRRR$twarningst ImportErrorRRt formatwarningRR(R1RRBR#RJR4R_RZR)t RPCServerRFRRGtobjectR(((s!/sys/lib/python2.7/idlelib/run.pytsJ             D      &