U :e/@sddlZddlZddlmZdZdadZiZiZiZ iZ ddZ ddZ Gd d d Z Gd d d Zd dZGdddZGdddZGdddZGdddZGdddZddZddZddZdd Zed!krdd"lmZed#d$d%d&dS)'N)debugger idb_adapterZ gui_adaptercCst|}|t|<|SN)id frametable)framefidr 7/usr/local/python38/lib/python3.8/idlelib/debugger_r.py wrap_frame(sr cCs>|dkr dS|d}t|}|t|<|d|d|f}|SdS)Nr)rtracebacktable)info tracebackZ traceback_id modified_infor r r wrap_info-src@seZdZddZdddZdS)GUIProxycCs||_||_dSr)connoid)selfr gui_adap_oidr r r __init__;szGUIProxy.__init__NcCs&|j|jd|t|t|fidS)N interaction)r remotecallrr r)rmessagerrr r r r?s zGUIProxy.interaction)N__name__ __module__ __qualname__rrr r r r r9src@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)S)* IdbAdaptercCs ||_dSr)idb)rr!r r r rHszIdbAdapter.__init__cCs|jdSr)r!set_steprr r r r"MszIdbAdapter.set_stepcCs|jdSr)r!set_quitr#r r r r$PszIdbAdapter.set_quitcCs|jdSr)r! set_continuer#r r r r%SszIdbAdapter.set_continuecCst|}|j|dSr)rr!set_nextrrrr r r r&VszIdbAdapter.set_nextcCst|}|j|dSr)rr! set_returnr'r r r r(ZszIdbAdapter.set_returncCsFt|}|dkrd}nt|}|j||\}}dd|D}||fS)NcSsg|]\}}t||fqSr )r ).0Zframe2kr r r esz(IdbAdapter.get_stack..)rrr! get_stack)rrtbidrtbstackir r r r,^szIdbAdapter.get_stackcCsddl}|j||jdS)Nr)__main__r!run__dict__)rcmdr1r r r r2hszIdbAdapter.runcCs|j||}|Sr)r! set_breakrfilenamelinenomsgr r r r5lszIdbAdapter.set_breakcCs|j||}|Sr)r! clear_breakr6r r r r:pszIdbAdapter.clear_breakcCs|j|}|Sr)r!clear_all_file_breaksrr7r9r r r r;ts z IdbAdapter.clear_all_file_breakscCst|}t||Sr)rgetattr)rrnamerr r r frame_attrzszIdbAdapter.frame_attrcCs"t|}|j}t|}|t|<|Sr)r f_globalsr dicttablerrrdictdidr r r frame_globals~s zIdbAdapter.frame_globalscCs"t|}|j}t|}|t|<|Sr)rf_localsrrArBr r r frame_localss zIdbAdapter.frame_localscCs"t|}|j}t|}|t|<|Sr)rf_coder codetable)rrrcodecidr r r frame_codes zIdbAdapter.frame_codecCst|}|jSr)rIco_namerrKrJr r r code_nameszIdbAdapter.code_namecCst|}|jSr)rI co_filenamerNr r r code_filenameszIdbAdapter.code_filenamecCs tddS)Nz"dict_keys not public or pickleable)NotImplementedErrorrrDr r r dict_keysszIdbAdapter.dict_keyscCst|}t|Sr)rAlistkeys)rrDrCr r r dict_keys_listszIdbAdapter.dict_keys_listcCst|}||}t|}|Sr)rAreprlibrepr)rrDkeyrCvaluer r r dict_items zIdbAdapter.dict_itemN)rrrrr"r$r%r&r(r,r2r5r:r;r?rErGrLrOrQrTrWr\r r r r r Fs(  r cCs,t||}t|}t|}|t|tSr)rrZIdbr register idb_adap_oid)Z rpchandlerrZ gui_proxyr!Zidb_adapr r r start_debuggers   r_c@s<eZdZddZddZddZddZd d Zd d Zd S) FrameProxycCs||_||_d|_i|_dS)Nr)_conn_fid_oid _dictcache)rrrr r r rszFrameProxy.__init__cCsb|dddkrt||dkr(|S|dkr8|S|dkrH|S|j|jd|j|fiS)Nr _rHr@rFr?)AttributeError _get_f_code_get_f_globals _get_f_localsrarrcrbrr>r r r __getattr__s zFrameProxy.__getattr__cCs(|j|jd|jfi}t|j|j|S)NrL)rarrcrb CodeProxy)rrKr r r rgszFrameProxy._get_f_codecCs"|j|jd|jfi}||S)NrErarrcrb_get_dict_proxyrSr r r rhs  zFrameProxy._get_f_globalscCs"|j|jd|jfi}||S)NrGrmrSr r r ris  zFrameProxy._get_f_localscCs2||jkr|j|St|j|j|}||j|<|Sr)rd DictProxyrarc)rrDZdpr r r rns    zFrameProxy._get_dict_proxyN) rrrrrkrgrhrirnr r r r r`s  r`c@seZdZddZddZdS)rlcCs||_||_||_dSr)rarc_cid)rrrrKr r r rszCodeProxy.__init__cCsD|dkr |j|jd|jfiS|dkr@|j|jd|jfiSdS)NrMrOrPrQ)rarrcrprjr r r rks  zCodeProxy.__getattr__N)rrrrrkr r r r rlsrlc@s,eZdZddZddZddZddZd S) rocCs||_||_||_dSr)rarc_did)rrrrDr r r rszDictProxy.__init__cCs|j|jd|jfiS)NrWrarrcrqr#r r r rVs  zDictProxy.keyscCs|j|jd|j|fiS)Nr\rr)rrZr r r __getitem__s zDictProxy.__getitem__cCs t|dSr)rfrjr r r rkszDictProxy.__getattr__N)rrrrrVrsrkr r r r ros roc@seZdZddZddZdS) GUIAdaptercCs||_||_dSr)rgui)rrrur r r rszGUIAdapter.__init__cCs t|j|}|j|||dSr)r`rrur)rrrrrr r r r!s zGUIAdapter.interactionNrr r r r rtsrtc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)IdbProxycCs||_||_||_dSr)rrshell)rrrwrr r r r)szIdbProxy.__init__cOs|j|j|||}|Sr)rrr)rZ methodnameargskwargsr[r r r call.sz IdbProxy.callcCs$|j|jd|fi}||jj_dS)Nr2)rZ asyncqueuerrwZinterpZ active_seq)rr4localsseqr r r r24sz IdbProxy.runcs.d|j|\}}fdd|D}||fS)Nr,cs g|]\}}tj||fqSr )r`r)r)rr*r#r r r+<sz&IdbProxy.get_stack..rzrb)rrr-r/r0r r#r r,9szIdbProxy.get_stackcCs|ddS)Nr%rzr#r r r r%?szIdbProxy.set_continuecCs|ddS)Nr"r~r#r r r r"BszIdbProxy.set_stepcCs|d|jdS)Nr&r}rrr r r r&EszIdbProxy.set_nextcCs|d|jdS)Nr(r}rr r r r(HszIdbProxy.set_returncCs|ddS)Nr$r~r#r r r r$KszIdbProxy.set_quitcCs|d||}|S)Nr5r~r6r r r r5NszIdbProxy.set_breakcCs|d||}|S)Nr:r~r6r r r r:RszIdbProxy.clear_breakcCs|d|}|S)Nr;r~r<r r r r;Vs zIdbProxy.clear_all_file_breaksN)rrrrrzr2r,r%r"r&r(r$r5r:r;r r r r rv'srvcCsD|ddtfiat||t}t||}t||}|t||SNexecZstart_the_debugger)rrr^rvrZDebuggerrtr])rpccltZpyshellZ idb_proxyruZgui_adapr r r start_remote_debuggerZs    rcCst||tdSr)close_subprocess_debugger unregisterrrr r r close_remote_debuggerrs rcCs|ddtfidS)NrZstop_the_debugger)rr^rr r r r~srcCs|ddtfi}dSr)rr)rZidb_adap_oid_retr r r restart_subprocess_debuggers rr1)mainz!idlelib.idle_test.test_debugger_rr F) verbosityexit)rXtypesZidlelibrZ debuggingr^rrrArIrr rrr r_r`rlrortrvrrrrrZunittestrr r r r s4   m* 3