Yf-6@s2ddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl m Z ddl m Z ddl mZddl mZddl mZdd l mZddlZx)d/D]!Zeeeejde=qWdZddlZddddZdaddZedejZeddZdadada dddZ!ddZ"dd Z#d!d"Z$d#d$Z%d%d&Z&d'd(Z'Gd)d*d*ej(Z)Gd+d,d,ej*Z+Gd-d.d.e,Z-eddS)0N)CallTips) AutoComplete)RemoteDebugger)RemoteObjectBrowser) StackViewer)rpc)PyShell) IOBinding simpledialog messageboxfontdialog filedialog commondialog colorchooserztkinter.z 127.0.0.1c CsT|dkrtj}y&|jtj|||||Wntk rOYnXdS)zuShow Idle-format warning after replacing warnings.showwarning. The only difference is the formatter called. N)sysstderrwriterZidle_formatwarningIOError)messagecategoryfilenamelinenofileliner0/opt/alt/python35/lib64/python3.5/idlelib/run.pyidle_showwarning_subproc s    rcCsF|r'tdkrBtjatt_ntdk rBtt_dadS)zFReplace warning.showwarning with idle_showwarning_subproc, or reverse.N)_warnings_showwarningwarnings showwarningr)Zcapturerrrcapture_warnings0s     r!TcCs|jddS)zProcess any tk events that are ready to be dispatched if tkinter has been imported, a tcl interpreter has been created and tk has been loaded.updateN)eval)tclrrrhandle_tk_events@sr%Fc Cs|ay2ttjdks$tttjd}WntddtjdSYnXtddgtjdd.print_exc) linecache checkcache flush_stdoutrrr? last_type last_valuelast_tracebackset)rsrjvalrHZexcinfor)rprqrrrr@s    r@c Csn|dd}x;|rMx'|D]}|ddj|r Pq WP|d=qWx;|rx'|D]}|d dj|r^Pq^WP|d =qQWt|dkr|dd|ddEOFErrorr8threadinterrupt_mainrr3r2r4Zcurrent_threadr)reprrArqr=)selfrCZclient_addressZerfrrr handle_errors&   zMyRPCServer.handle_errorN)__name__ __module__ __qualname__rrrrrrNs rNc@s@eZdZddZddZddZddZd S) rOcCst|}|jd||jd|_tj|jdtjt_ tj |jdtjt_ tj |jdtjt_ t jt_ddl}|j|_tj |_|jd|_t jj|d dd d dS) zOverride base methodr{consolestdinstdoutrrNinterpZmyseqwaitg?) Executiveregisterget_remote_proxyrrZPseudoInputFiler encodingrrZPseudoOutputFilerrr displayhookpydocZ plainpagerZpagerZ _keep_stdinr RPCHandlerZ getresponse)rZ executiverrrrhandle.s     zMyHandler.handlecCstjddS)z>override SocketIO method - wait for MainThread to shut us down N)rLrM)rrrrexithookFszMyHandler.exithookcCsdatjdS)zEOverride SocketIO method - terminate wait on callback and exit threadTN)r=rr)rrrrEOFhookJszMyHandler.EOFhookcCsdatjdS)zinterrupt awakened threadTN)r=rr)rrrrdecode_interrupthookPszMyHandler.decode_interrupthookN)rrrrrrrrrrrrO,s    rOc@sseZdZddZddZddZddZd d Zd d Zd dZ dddZ dS)rcCs7||_tj|_tj|_tj|_dS)N)r__main____dict__localsrcalltipr autocomplete)rrrrr__init__Ys  zExecutive.__init__cCsy1d|_dazt||jWddaXWngtk rEYn]tj|_trdtt |j j j d}|r|j j jYnXtdS)NTFz<>) usr_exc_info interruptabler{rr>rr?r=r9r@rrZgetvarrZopen_remote_stack_viewerru)rcodeZjitrrrruncode_s"   zExecutive.runcodecCstrtjdS)N)rrr)rrrrinterrupt_the_serverxszExecutive.interrupt_the_servercCstj|j|S)N)rZstart_debuggerr)rZ gui_adap_oidrrrstart_the_debugger|szExecutive.start_the_debuggercCs|jj|dS)zDUnregister the Idb Adapter. Link objects and Idb then subject to GCN)rZ unregister)rZ idb_adap_oidrrrstop_the_debuggerszExecutive.stop_the_debuggercCs|jj|S)N)rZ fetch_tip)rr)rrrget_the_calltipszExecutive.get_the_calltipcCs|jj||S)N)rZfetch_completions)rZwhatmoderrrget_the_completion_listsz!Executive.get_the_completion_listNcCs|jr|j\}}}ndSd}|dk rF|jj|}x)|rq|jjddkrq|j}qIW|t_|t_t j ||}t j |S)Nrrrun)rr) rrrtb_frame f_globalstb_nextrrvrwrZ StackTreeItemrZremote_object_tree_item)rZ flist_oidrjrzrHZflistitemrrr stackviewers     zExecutive.stackviewer) rrrrrrrrrrrrrrrrWs        r)r r r r rrr).rrsrLrA_threadrr4r<rWZidlelibrrrrrrrr rmoddelattrmodulesr6rrrr!ZTclr$r%r8r=rrIr5rQr@rgrur9Z RPCServerrNrrOobjectrrrrrsV                I   $   +A