{fc@sddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z ddlmZddlmZdd lmZddlZd ZddlZddd Zdad Zeeeaeaeaed ZdZdZdZ dZ!dZ"dZ#dZ$dej%fdYZ&dej'fdYZ(de)fdYZ*eedS(iN(tCallTips(t AutoComplete(tRemoteDebugger(tRemoteObjectBrowser(t StackViewer(trpc(tPyShell(t IOBindings 127.0.0.1cCsV|dkrtj}ny&|jtj|||||Wntk rQnXdS(suShow Idle-format warning after replacing warnings.showwarning. The only difference is the formatter called. N(tNonetsyststderrtwriteRtidle_formatwarningtIOError(tmessagetcategorytfilenametlinenotfiletline((s#/usr/lib64/python2.7/idlelib/run.pytidle_showwarning_subprocs    cCsL|r*tdkrHtjatt_qHntdk rHtt_dandS(sFReplace warning.showwarning with idle_showwarning_subproc, or reverse.N(t_warnings_showwarningRtwarningst showwarningR(tcapture((s#/usr/lib64/python2.7/idlelib/run.pytcapture_warnings*s    c Cs|ayttjd}WntjdIJdSXttdgtj(tjdt dddt |ff}|j t|j xUyt ry tWqtk rwqXny%tjjd td d \}}Wntjk rwnX|\}}}|||}tjj||fWqtk rTtrta qqqtk rqttqtj\} } } y!ttjj|dfWqtj| | | d tjtqXqqXqWdS( 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?R(t no_exitfunctintR targvR RtTruet threadingtThreadt manage_sockett LOCALHOSTt setDaemontstarttexit_nowtexittKeyboardInterruptRt request_queuetgettQueuetEmptytresponse_queuetputtquittingt SystemExittFalsetexc_infotprint_exceptionRt tracebackt __stderr__( t del_exitfunctportt sockthreadtseqtrequesttmethodRtkwargstretttypetvaluettb((s#/usr/lib64/python2.7/idlelib/run.pytmainAsV        %     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 MyHandlertsocketterrorR R:Rtshow_socket_errorR$R+thandle_request(taddresstitserverterr((s#/usr/lib64/python2.7/idlelib/run.pyR's   cCsddl}ddl}|j}t||j|jddkrnd|}|jd|d|n!|jdd|jdd||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 tkMessageBoxtTkt fix_scalingtwithdrawRt showerrortdestroy(RSRPRURVtroottmsg((s#/usr/lib64/python2.7/idlelib/run.pyRNs      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(t linecachet checkcachet flush_stdoutR R R7t last_typet last_valuetlast_tracebackR9t extract_tbtcleanup_tracebackt print_listtformat_exception_only( R^tefilettyptvalREtexcinfottbetexcludetlinesR((s#/usr/lib64/python2.7/idlelib/run.pyR8s      c Cs|}x>|rGx*|D]!}|ddj|rPqqWP|d=q Wx>|rx*|D]!}|ddj|rXPqXqXWP|d=qKWt|dkr||(tjdIJntjdj}xtt|D]}||\}}}} |dkrd}n|jdr2t j dkr2|d 8}n| ri|jdri|j d d ||fi} n|||| f||override SocketIO method - wait for MainThread to shut us downi N(RHRI(R((s#/usr/lib64/python2.7/idlelib/run.pytexithook4scCstatjdS(sEOverride SocketIO method - terminate wait on callback and exit threadN(R$R4RR(R((s#/usr/lib64/python2.7/idlelib/run.pytEOFhook8scCstatjdS(sinterrupt awakened threadN(R$R4RR(R((s#/usr/lib64/python2.7/idlelib/run.pytdecode_interrupthook>s(RRRRRR(((s#/usr/lib64/python2.7/idlelib/run.pyRKs   RcBsSeZdZdZdZdZdZdZdZddZ RS( cCs7||_tj|_tj|_tj|_dS(N(Rut__main__t__dict__tlocalsRtcalltipRt autocomplete(RRu((s#/usr/lib64/python2.7/idlelib/run.pyt__init__Gs  cBsy,d|_eaz||jUWdeaXWnkek r?nbej|_e rae ne |j j jd}|r|j jjqnXedS(Ns<>(Rt usr_exc_infoR$t interruptableRR6R5R R7R4R,R8RuRtgetvarRtopen_remote_stack_viewerR`(Rtcodetjit((s#/usr/lib64/python2.7/idlelib/run.pytruncodeMs"    cCstrtjndS(N(RRR(R((s#/usr/lib64/python2.7/idlelib/run.pytinterrupt_the_serverescCstj|j|S(N(Rtstart_debuggerRu(Rt gui_adap_oid((s#/usr/lib64/python2.7/idlelib/run.pytstart_the_debuggeriscCs|jj|dS(sDUnregister the Idb Adapter. Link objects and Idb then subject to GCN(Rut unregister(Rt idb_adap_oid((s#/usr/lib64/python2.7/idlelib/run.pytstop_the_debuggerlscCs|jj|S(N(Rt fetch_tip(RR((s#/usr/lib64/python2.7/idlelib/run.pytget_the_calltippscCs|jj||S(N(Rtfetch_completions(Rtwhattmode((s#/usr/lib64/python2.7/idlelib/run.pytget_the_completion_listsscCs|jr|j\}}}ndSd}|dk rI|jj|}nx)|rt|jjddkrt|j}qLW|t_|t_ t j ||}t j |S(NRRtrun(RR(RRRuRttb_framet f_globalsttb_nextR RaRbRt StackTreeItemRtremote_object_tree_item(Rt flist_oidRiRjREtflisttitem((s#/usr/lib64/python2.7/idlelib/run.pyt stackviewervs     N( RRRRRRRRRRR(((s#/usr/lib64/python2.7/idlelib/run.pyREs       (+R R^RHRLR9RR%R0tidlelibRRRRRRRRRR(RRRRRR$R6R+R4RRFR'RNR8ReR`R,RXt RPCServerRJRRKtobjectR(((s#/usr/lib64/python2.7/idlelib/run.pytsJ             G    !   &@