B YI~dl/�@s�ddlZddlmZdZdadZiZiZiZiZ dd�Z dd�Z Gd d �d �Z Gd d �d �Z d d�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�Zdd�Zdd�Zdd�Zdd �Zed!kr�dd"lmZed#d$d%d&�dS)'�N)�debugger� idb_adapterZ gui_adaptercCst|�}|t|<|S)N)�id� frametable)�frame�fid�r�7/opt/alt/python37/lib64/python3.7/idlelib/debugger_r.py� wrap_frame(sr cCs>|dkr dS|d}t|�}|t|<|d|d|f}|SdS)N�r�)r�tracebacktable)�info� tracebackZ traceback_id� modified_inforrr � wrap_info-src@seZdZdd�Zddd�ZdS)�GUIProxycCs||_||_dS)N)�conn�oid)�selfr� gui_adap_oidrrr �__init__;szGUIProxy.__init__NcCs&|j�|jd|t|�t|�fi�dS)N� interaction)r� remotecallrr r)r�messagerrrrr r?s zGUIProxy.interaction)N)�__name__� __module__� __qualname__rrrrrr r9src@s�eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*� IdbAdaptercCs ||_dS)N)�idb)rrrrr rHszIdbAdapter.__init__cCs|j��dS)N)r�set_step)rrrr r MszIdbAdapter.set_stepcCs|j��dS)N)r�set_quit)rrrr r!PszIdbAdapter.set_quitcCs|j��dS)N)r� set_continue)rrrr r"SszIdbAdapter.set_continuecCst|}|j�|�dS)N)rr�set_next)rrrrrr r#VszIdbAdapter.set_nextcCst|}|j�|�dS)N)rr� set_return)rrrrrr r$ZszIdbAdapter.set_returncCsFt|}|dkrd}nt|}|j�||�\}}dd�|D�}||fS)NcSsg|]\}}t|�|f�qSr)r )�.0Zframe2�krrr � esz(IdbAdapter.get_stack..)rr r� get_stack)rr�tbidr�tb�stack�irrr r(^szIdbAdapter.get_stackcCsddl}|j�||j�dS)Nr)�__main__r�run�__dict__)r�cmdr-rrr r.hszIdbAdapter.runcCs|j�||�}|S)N)r� set_break)r�filename�lineno�msgrrr r1lszIdbAdapter.set_breakcCs|j�||�}|S)N)r� clear_break)rr2r3r4rrr r5pszIdbAdapter.clear_breakcCs|j�|�}|S)N)r�clear_all_file_breaks)rr2r4rrr r6ts z IdbAdapter.clear_all_file_breakscCst|}t||�S)N)r�getattr)rr�namerrrr � frame_attrzszIdbAdapter.frame_attrcCs"t|}|j}t|�}|t|<|S)N)r� f_globalsr� dicttable)rrr�dict�didrrr � frame_globals~s zIdbAdapter.frame_globalscCs"t|}|j}t|�}|t|<|S)N)r�f_localsrr;)rrrr<r=rrr � frame_locals�s zIdbAdapter.frame_localscCs"t|}|j}t|�}|t|<|S)N)r�f_coder� codetable)rrr�code�cidrrr � frame_code�s zIdbAdapter.frame_codecCst|}|jS)N)rB�co_name)rrDrCrrr � code_name�szIdbAdapter.code_namecCst|}|jS)N)rB� co_filename)rrDrCrrr � code_filename�szIdbAdapter.code_filenamecCs td��dS)Nz"dict_keys not public or pickleable)�NotImplementedError)rr=rrr � dict_keys�szIdbAdapter.dict_keyscCst|}t|���S)N)r;�list�keys)rr=r<rrr �dict_keys_list�szIdbAdapter.dict_keys_listcCst|}||}t|�}|S)N)r;�repr)rr=�keyr<�valuerrr � dict_item�szIdbAdapter.dict_itemN)rrrrr r!r"r#r$r(r.r1r5r6r9r>r@rErGrIrKrNrRrrrr rFs(  rcCs,t||�}t�|�}t|�}|�t|�tS)N)rrZIdbr�register� idb_adap_oid)Z rpchandlerrZ gui_proxyrZidb_adaprrr �start_debugger�s   rUc@s<eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd S)� FrameProxycCs||_||_d|_i|_dS)Nr)�_conn�_fid�_oid� _dictcache)rrrrrr r�szFrameProxy.__init__cCsb|dd�dkrt|��|dkr(|��S|dkr8|��S|dkrH|��S|j�|jd|j|fi�S)Nr �_rAr:r?r9)�AttributeError� _get_f_code�_get_f_globals� _get_f_localsrWrrYrX)rr8rrr � __getattr__�s zFrameProxy.__getattr__cCs(|j�|jd|jfi�}t|j|j|�S)NrE)rWrrYrX� CodeProxy)rrDrrr r]�szFrameProxy._get_f_codecCs"|j�|jd|jfi�}|�|�S)Nr>)rWrrYrX�_get_dict_proxy)rr=rrr r^�s  zFrameProxy._get_f_globalscCs"|j�|jd|jfi�}|�|�S)Nr@)rWrrYrXrb)rr=rrr r_�s  zFrameProxy._get_f_localscCs2||jkr|j|St|j|j|�}||j|<|S)N)rZ� DictProxyrWrY)rr=Zdprrr rb�s    zFrameProxy._get_dict_proxyN) rrrrr`r]r^r_rbrrrr rV�s  rVc@seZdZdd�Zdd�ZdS)racCs||_||_||_dS)N)rWrY�_cid)rrrrDrrr r�szCodeProxy.__init__cCsD|dkr |j�|jd|jfi�S|dkr@|j�|jd|jfi�SdS)NrFrGrHrI)rWrrYrd)rr8rrr r`�s    zCodeProxy.__getattr__N)rrrrr`rrrr ra�srac@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) rccCs||_||_||_dS)N)rWrY�_did)rrrr=rrr rszDictProxy.__init__cCs|j�|jd|jfi�S)NrN)rWrrYre)rrrr rMs zDictProxy.keyscCs|j�|jd|j|fi�S)NrR)rWrrYre)rrPrrr � __getitem__s zDictProxy.__getitem__cCs t|��dS)N)r\)rr8rrr r`szDictProxy.__getattr__N)rrrrrMrfr`rrrr rcs rcc@seZdZdd�Zdd�ZdS)� GUIAdaptercCs||_||_dS)N)r�gui)rrrhrrr rszGUIAdapter.__init__cCs t|j|�}|j�|||�dS)N)rVrrhr)rrrrrrrr r!s zGUIAdapter.interactionN)rrrrrrrrr rgsrgc@sleZdZdd�Zdd�Zdd�Zdd�Zd d �Zd d �Zd d�Z dd�Z dd�Z dd�Z dd�Z dd�ZdS)�IdbProxycCs||_||_||_dS)N)rr�shell)rrrjrrrr r)szIdbProxy.__init__cOs|j�|j|||�}|S)N)rrr)rZ methodname�args�kwargsrQrrr �call.sz IdbProxy.callcCs$|j�|jd|fi�}||jj_dS)Nr.)rZ asyncqueuerrjZinterpZ active_seq)rr0�locals�seqrrr r.4sz IdbProxy.runcs.��d|j|�\}}�fdd�|D�}||fS)Nr(cs g|]\}}t�j|�|f�qSr)rVr)r%rr&)rrr r'<sz&IdbProxy.get_stack..)rmrX)rrr)r+r,r)rr r(9szIdbProxy.get_stackcCs|�d�dS)Nr")rm)rrrr r"?szIdbProxy.set_continuecCs|�d�dS)Nr )rm)rrrr r BszIdbProxy.set_stepcCs|�d|j�dS)Nr#)rmrX)rrrrr r#EszIdbProxy.set_nextcCs|�d|j�dS)Nr$)rmrX)rrrrr r$HszIdbProxy.set_returncCs|�d�dS)Nr!)rm)rrrr r!KszIdbProxy.set_quitcCs|�d||�}|S)Nr1)rm)rr2r3r4rrr r1NszIdbProxy.set_breakcCs|�d||�}|S)Nr5)rm)rr2r3r4rrr r5RszIdbProxy.clear_breakcCs|�d|�}|S)Nr6)rm)rr2r4rrr r6Vs zIdbProxy.clear_all_file_breaksN)rrrrrmr.r(r"r r#r$r!r1r5r6rrrr ri'sricCsD|�ddtfi�at||t�}t�||�}t||�}|�t|�|S)N�exec�start_the_debugger)rrrTrirZDebuggerrgrS)�rpccltZpyshellZ idb_proxyrhZgui_adaprrr �start_remote_debuggerZs     rscCst|�|�t�dS)N)�close_subprocess_debuggerZ unregisterr)rrrrr �close_remote_debuggerrs rucCs|�ddtfi�dS)NrpZstop_the_debugger)rrT)rrrrr rt~srtcCs|�ddtfi�}dS)Nrprq)rr)rrZidb_adap_oid_retrrr �restart_subprocess_debugger�s rvr-)�mainzidlelib.idle_test.test_debuggerr F)� verbosity�exit)�typesZidlelibrZ debuggingrTrrr;rBr r rrrrUrVrarcrgrirsrurtrvrZunittestrwrrrr �s2   m* 3