Hacked By AnonymousFox

Current Path : /opt/alt/python37/lib64/python3.7/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/idlelib/__pycache__/debugger_r.cpython-37.pyc

B

� fl/�@s�dZddlZddlmZdZdadZiZiZiZ	iZ
dd�Zdd	�ZGd
d�d�Z
Gdd
�d
�Zdd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�Zdd�Zdd�Zdd�Zd d!�Zed"kr�dd#lmZed$d%d&d'�dS)(a�Support for remote Python debugging.

Some ASCII art to describe the structure:

       IN PYTHON SUBPROCESS          #             IN IDLE PROCESS
                                     #
                                     #        oid='gui_adapter'
                 +----------+        #       +------------+          +-----+
                 | GUIProxy |--remote#call-->| GUIAdapter |--calls-->| GUI |
+-----+--calls-->+----------+        #       +------------+          +-----+
| Idb |                               #                             /
+-----+<-calls--+------------+         #      +----------+<--calls-/
                | IdbAdapter |<--remote#call--| IdbProxy |
                +------------+         #      +----------+
                oid='idb_adapter'      #

The purpose of the Proxy and Adapter classes is to translate certain
arguments and return values that cannot be transported through the RPC
barrier, in particular frame and traceback objects.

�N)�debugger�idb_adapterZgui_adaptercCst|�}|t|<|S)N)�id�
frametable)�frame�fid�r�7/opt/alt/python37/lib64/python3.7/idlelib/debugger_r.py�
wrap_frame(sr
cCsN|dkrdS|d}t|tj�s$t�t|�}|t|<|d|d|f}|SdS)z0replace info[2], a traceback instance, by its IDN�r�)�
isinstance�types�
TracebackType�AssertionErrorr�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
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)S)*�
IdbAdaptercCs
||_dS)N)�idb)rr#rrr	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	�
<listcomp>esz(IdbAdapter.get_stack.<locals>.<listcomp>)rrr#�	get_stack)rr�tbidr�tb�stack�irrr	r,^szIdbAdapter.get_stackcCsddl}|j�||j�dS)Nr)�__main__r#�run�__dict__)r�cmdr1rrr	r2hszIdbAdapter.runcCs|j�||�}|S)N)r#�	set_break)r�filename�lineno�msgrrr	r5lszIdbAdapter.set_breakcCs|j�||�}|S)N)r#�clear_break)rr6r7r8rrr	r9pszIdbAdapter.clear_breakcCs|j�|�}|S)N)r#�clear_all_file_breaks)rr6r8rrr	r:ts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@rArrr	�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)rF�co_name)rrHrGrrr	�	code_name�szIdbAdapter.code_namecCst|}|jS)N)rF�co_filename)rrHrGrrr	�
code_filename�szIdbAdapter.code_filenamecCstd��dS)Nz"dict_keys not public or pickleable)�NotImplementedError)rrArrr	�	dict_keys�szIdbAdapter.dict_keyscCst|}t|���S)N)r?�list�keys)rrAr@rrr	�dict_keys_list�szIdbAdapter.dict_keys_listcCst|}||}t|�}|S)N)r?�repr)rrA�keyr@�valuerrr	�	dict_item�szIdbAdapter.dict_itemN)rr r!rr$r%r&r'r(r,r2r5r9r:r=rBrDrIrKrMrOrRrVrrrr	r"Fs(
	r"cCs,t||�}t�|�}t|�}|�t|�tS)a|Start the debugger and its RPC link in the Python subprocess

    Start the subprocess side of the split debugger and set up that side of the
    RPC link by instantiating the GUIProxy, Idb debugger, and IdbAdapter
    objects and linking them together.  Register the IdbAdapter with the
    RPCServer to handle RPC requests from the split debugger GUI via the
    IdbProxy.

    )rrZIdbr"�register�idb_adap_oid)Z
rpchandlerrZ	gui_proxyr#Zidb_adaprrr	�start_debugger�s



rYc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�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�_rEr>rCr=)�AttributeError�_get_f_code�_get_f_globals�
_get_f_localsr[rr]r\)rr<rrr	�__getattr__�szFrameProxy.__getattr__cCs(|j�|jd|jfi�}t|j|j|�S)NrI)r[rr]r\�	CodeProxy)rrHrrr	ra�szFrameProxy._get_f_codecCs"|j�|jd|jfi�}|�|�S)NrB)r[rr]r\�_get_dict_proxy)rrArrr	rb�szFrameProxy._get_f_globalscCs"|j�|jd|jfi�}|�|�S)NrD)r[rr]r\rf)rrArrr	rc�szFrameProxy._get_f_localscCs2||jkr|j|St|j|j|�}||j|<|S)N)r^�	DictProxyr[r])rrAZdprrr	rf�s



zFrameProxy._get_dict_proxyN)	rr r!rrdrarbrcrfrrrr	rZ�srZc@seZdZdd�Zdd�ZdS)recCs||_||_||_dS)N)r[r]�_cid)rrrrHrrr	r�szCodeProxy.__init__cCsD|dkr |j�|jd|jfi�S|dkr@|j�|jd|jfi�SdS)NrJrKrLrM)r[rr]rh)rr<rrr	rd�szCodeProxy.__getattr__N)rr r!rrdrrrr	re�srec@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rgcCs||_||_||_dS)N)r[r]�_did)rrrrArrr	rszDictProxy.__init__cCs|j�|jd|jfi�S)NrR)r[rr]ri)rrrr	rQs
zDictProxy.keyscCs|j�|jd|j|fi�S)NrV)r[rr]ri)rrTrrr	�__getitem__szDictProxy.__getitem__cCst|��dS)N)r`)rr<rrr	rdszDictProxy.__getattr__N)rr r!rrQrjrdrrrr	rgs	rgc@seZdZdd�Zdd�ZdS)�
GUIAdaptercCs||_||_dS)N)r�gui)rrrlrrr	rszGUIAdapter.__init__cCs t|j|�}|j�|||�dS)N)rZrrlr)rrrrrrrr	r!szGUIAdapter.interactionN)rr r!rrrrrr	rksrkc@sleZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�IdbProxycCs||_||_||_dS)N)rr�shell)rrrnrrrr	r)szIdbProxy.__init__cOs|j�|j|||�}|S)N)rrr)rZ
methodname�args�kwargsrUrrr	�call.sz
IdbProxy.callcCs$|j�|jd|fi�}||jj_dS)Nr2)rZ
asyncqueuerrnZinterpZ
active_seq)rr4�locals�seqrrr	r24szIdbProxy.runcs.��d|j|�\}}�fdd�|D�}||fS)Nr,cs g|]\}}t�j|�|f�qSr)rZr)r)rr*)rrr	r+<sz&IdbProxy.get_stack.<locals>.<listcomp>)rqr\)rrr-r/r0r)rr	r,9szIdbProxy.get_stackcCs|�d�dS)Nr&)rq)rrrr	r&?szIdbProxy.set_continuecCs|�d�dS)Nr$)rq)rrrr	r$BszIdbProxy.set_stepcCs|�d|j�dS)Nr')rqr\)rrrrr	r'EszIdbProxy.set_nextcCs|�d|j�dS)Nr()rqr\)rrrrr	r(HszIdbProxy.set_returncCs|�d�dS)Nr%)rq)rrrr	r%KszIdbProxy.set_quitcCs|�d||�}|S)Nr5)rq)rr6r7r8rrr	r5NszIdbProxy.set_breakcCs|�d||�}|S)Nr9)rq)rr6r7r8rrr	r9RszIdbProxy.clear_breakcCs|�d|�}|S)Nr:)rq)rr6r8rrr	r:VszIdbProxy.clear_all_file_breaksN)rr r!rrqr2r,r&r$r'r(r%r5r9r:rrrr	rm'srmcCsD|�ddtfi�at||t�}t�||�}t||�}|�t|�|S)a]Start the subprocess debugger, initialize the debugger GUI and RPC link

    Request the RPCServer start the Python subprocess debugger and link.  Set
    up the Idle side of the split debugger by instantiating the IdbProxy,
    debugger GUI, and debugger GUIAdapter objects and linking them together.

    Register the GUIAdapter with the RPCClient to handle debugger GUI
    interaction requests coming from the subprocess debugger via the GUIProxy.

    The IdbAdapter will pass execution and environment requests coming from the
    Idle debugger GUI to the subprocess debugger via the IdbProxy.

    �exec�start_the_debugger)rrrXrmrZDebuggerrkrW)�rpccltZpyshellZ	idb_proxyrlZgui_adaprrr	�start_remote_debuggerZs

rwcCst|�|�t�dS)a]Shut down subprocess debugger and Idle side of debugger RPC link

    Request that the RPCServer shut down the subprocess debugger and link.
    Unregister the GUIAdapter, which will cause a GC on the Idle process
    debugger and RPC link objects.  (The second reference to the debugger GUI
    is deleted in pyshell.close_remote_debugger().)

    N)�close_subprocess_debuggerZ
unregisterr)rvrrr	�close_remote_debuggerrs	rycCs|�ddtfi�dS)NrtZstop_the_debugger)rrX)rvrrr	rx~srxcCs&|�ddtfi�}|tks"td��dS)Nrtruz Idb restarted with different oid)rrrXr)rvZidb_adap_oid_retrrr	�restart_subprocess_debugger�s
rzr1)�mainzidlelib.idle_test.test_debuggerrF)�	verbosity�exit)�__doc__rZidlelibrZ	debuggingrXrrr?rFrr
rrr"rYrZrergrkrmrwryrxrzrZunittestr{rrrr	�<module>s4
m*3

Hacked By AnonymousFox1.0, Coded By AnonymousFox