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|ay2ttjdks$tttjd}WntjdIJdSXdgtj(tjdt ddd t |ff}|j t |j xJytry tWqtk rwqXny%tjjd t d d \}}Wntjk r wnX|\}}}|||}tjj||fWqtk retrt aqqqtk rxqtj\} } } y!ttjj|dfWqtj| | | d tjtqXqqXqdS(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. iis/IDLE Subprocess: no IP port passed in sys.argv.Ntttargettnamet SockThreadtargstblockttimeoutg?tfile(t no_exitfunctlentsystargvtAssertionErrortinttstderrt 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.pytmain4sT       %    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 MyHandlertsocketterrorRR8Rtshow_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(RQRNRSRTtroottmsg((s!/sys/lib/python2.7/idlelib/run.pyRLs     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"R5t last_typet last_valuetlast_tracebackR7t extract_tbtcleanup_tracebackt print_listtformat_exception_only( R tefilettyptvalRCtexcinfottbetexcludetlinesR((s!/sys/lib/python2.7/idlelib/run.pyR6s      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(RFRG(R((s!/sys/lib/python2.7/idlelib/run.pytexithookscCstatjdS(sEOverride SocketIO method - terminate wait on callback and exit threadN(R(R3R~R(R((s!/sys/lib/python2.7/idlelib/run.pytEOFhookscCstatjdS(sinterrupt awakened threadN(R(R3R~R(R((s!/sys/lib/python2.7/idlelib/run.pytdecode_interrupthooks(R RRRRR(((s!/sys/lib/python2.7/idlelib/run.pyRIs   RcBsSeZdZdZdZdZdZdZdZddZ RS( cCs7||_tj|_tj|_tj|_dS(N(Rot__main__t__dict__tlocalsRtcalltipRt autocomplete(RRo((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 interruptableRtFalseR4RR5R3R+R6RoRtgetvarRtopen_remote_stack_viewerR\(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_debuggerRo(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(Rot 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(RRRoRttb_framet f_globalsttb_nextRR]R^Rt StackTreeItemRtremote_object_tree_item(Rt flist_oidReRfRCtflisttitem((s!/sys/lib/python2.7/idlelib/run.pyt stackviewerUs     N( R RRRRRRRRRR(((s!/sys/lib/python2.7/idlelib/run.pyR$s       (*RtioR RFRJR7R~R#R/tidlelibRRRRRRRRRR&twarningst ImportErrorRRt formatwarningRR*R3RRDR%RLR6RaR\R+t RPCServerRHRRItobjectR(((s!/sys/lib/python2.7/idlelib/run.pytsJ             D      &