a  ze/@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 F/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/debugger_r.py wrap_frame(sr cCs>|dur 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|}|durd}nt|}|j||\}}dd|D}||fS)NcSsg|]\}}t||fqSr )r ).0Zframe2kr r r ez(IdbAdapter.get_stack..)rrr! get_stack)rrtbidrtbstackir r r r-^szIdbAdapter.get_stackcCsddl}|j||jdS)Nr)__main__r!run__dict__)rcmdr2r r r r3hszIdbAdapter.runcCs|j||}|Sr)r! set_breakrfilenamelinenomsgr r r r6lszIdbAdapter.set_breakcCs|j||}|Sr)r! clear_breakr7r r r r;pszIdbAdapter.clear_breakcCs|j|}|Sr)r!clear_all_file_breaksrr8r:r 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_localsrrBrCr r r frame_localss zIdbAdapter.frame_localscCs"t|}|j}t|}|t|<|Sr)rf_coder codetable)rrrcodecidr r r frame_codes zIdbAdapter.frame_codecCst|}|jSr)rJco_namerrLrKr r r code_nameszIdbAdapter.code_namecCst|}|jSr)rJ co_filenamerOr r r code_filenameszIdbAdapter.code_filenamecCs tddS)Nz"dict_keys not public or pickleable)NotImplementedErrorrrEr r r dict_keysszIdbAdapter.dict_keyscCst|}t|Sr)rBlistkeys)rrErDr r r dict_keys_listszIdbAdapter.dict_keys_listcCst|}||}t|}|Sr)rBreprlibrepr)rrEkeyrDvaluer r r dict_items zIdbAdapter.dict_itemN)rrrrr"r$r%r&r(r-r3r6r;r<r@rFrHrMrPrRrUrXr]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 _rIrArGr@)AttributeError _get_f_code_get_f_globals _get_f_localsrbrrdrcrr?r r r __getattr__s  zFrameProxy.__getattr__cCs(|j|jd|jfi}t|j|j|S)NrM)rbrrdrc CodeProxy)rrLr r r rhszFrameProxy._get_f_codecCs"|j|jd|jfi}||S)NrFrbrrdrc_get_dict_proxyrTr r r ris zFrameProxy._get_f_globalscCs"|j|jd|jfi}||S)NrHrnrTr r r rjs zFrameProxy._get_f_localscCs2||jvr|j|St|j|j|}||j|<|Sr)re DictProxyrbrd)rrEZdpr r r ros    zFrameProxy._get_dict_proxyN) rrrrrlrhrirjror r r r ras  rac@seZdZddZddZdS)rmcCs||_||_||_dSr)rbrd_cid)rrrrLr r r rszCodeProxy.__init__cCsD|dkr |j|jd|jfiS|dkr@|j|jd|jfiSdS)NrNrPrQrR)rbrrdrqrkr r r rls  zCodeProxy.__getattr__N)rrrrrlr r r r rmsrmc@s,eZdZddZddZddZddZd S) rpcCs||_||_||_dSr)rbrd_did)rrrrEr r r rszDictProxy.__init__cCs|j|jd|jfiS)NrXrbrrdrrr#r r r rWs  zDictProxy.keyscCs|j|jd|j|fiS)Nr]rs)rr[r r r __getitem__s  zDictProxy.__getitem__cCs t|dSr)rgrkr r r rlszDictProxy.__getattr__N)rrrrrWrtrlr r r r rps rpc@seZdZddZddZdS) GUIAdaptercCs||_||_dSr)rgui)rrrvr r r rszGUIAdapter.__init__cCs t|j|}|j|||dSr)rarrvr)rrrrrr r r r!s zGUIAdapter.interactionNrr r r r rusruc@sleZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZdS)IdbProxycCs||_||_||_dSr)rrshell)rrrxrr r r r)szIdbProxy.__init__cOs|j|j|||}|Sr)rrr)rZ methodnameargskwargsr\r r r call.sz IdbProxy.callcCs$|j|jd|fi}||jj_dS)Nr3)rZ asyncqueuerrxZinterpZ active_seq)rr5localsseqr r r r34sz IdbProxy.runcs.d|j|\}}fdd|D}||fS)Nr-cs g|]\}}tj||fqSr )rar)r)rr*r#r r r+<r,z&IdbProxy.get_stack..r{rc)rrr.r0r1r r#r r-9szIdbProxy.get_stackcCs|ddS)Nr%r{r#r r r r%?szIdbProxy.set_continuecCs|ddS)Nr"rr#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$rr#r r r r$KszIdbProxy.set_quitcCs|d||}|S)Nr6rr7r r r r6NszIdbProxy.set_breakcCs|d||}|S)Nr;rr7r r r r;RszIdbProxy.clear_breakcCs|d|}|S)Nr<rr=r r r r<Vs zIdbProxy.clear_all_file_breaksN)rrrrr{r3r-r%r"r&r(r$r6r;r<r r r r rw'srwcCsD|ddtfiat||t}t||}t||}|t||SNexecZstart_the_debugger)rrr_rwrZDebuggerrur^)rpccltZpyshellZ idb_proxyrvZgui_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_debuggersrr2)mainz!idlelib.idle_test.test_debugger_rr F) verbosityexit)rYtypesZidlelibrZ debuggingr_rrrBrJrr rrr r`rarmrprurwrrrrrZunittestrr r r r s4   m* 3