
    ;e/                     X   	 d dl Z d dlZd dlmZ d ZdadZi Zi Zi Z	i Z
d Zd Z G d d          Z G d	 d
          Zd Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Zd Zd Zd Zd Zedk    rd dlmZ  eddd           dS dS )     N)debuggeridb_adaptergui_adapterc                 8    t          |           }| t          |<   |S N)id
frametable)framefids     )/usr/lib/python3.11/idlelib/debugger_r.py
wrap_framer   (   s    
U))CJsOJ    c                 t    	 | d S | d         }t          |          }|t          |<   | d         | d         |f}|S )N   r      )r   tracebacktable)info	tracebacktraceback_idmodified_infos       r   	wrap_infor   -   sG    6|tG	)}}'0|$a$q'<8r   c                       e Zd Zd ZddZdS )GUIProxyc                 "    || _         || _        d S r   )connoid)selfr   gui_adap_oids      r   __init__zGUIProxy.__init__;   s    	r   Nc           	          | j                             | j        d|t          |          t	          |          fi            d S )Ninteraction)r   
remotecallr   r   r   )r   messager
   r   s       r   r!   zGUIProxy.interaction?   sI     		TX}%z%'8'8)D//J	! 	! 	! 	! 	!r   r   __name__
__module____qualname__r   r!    r   r   r   r   9   s7             ! ! ! ! ! !r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
IdbAdapterc                     || _         d S r   )idb)r   r,   s     r   r   zIdbAdapter.__init__H   s    r   c                 8    | j                                          d S r   )r,   set_stepr   s    r   r.   zIdbAdapter.set_stepM       r   c                 8    | j                                          d S r   )r,   set_quitr/   s    r   r2   zIdbAdapter.set_quitP   r0   r   c                 8    | j                                          d S r   )r,   set_continuer/   s    r   r4   zIdbAdapter.set_continueS   s    r   c                 T    t           |         }| j                            |           d S r   )r	   r,   set_nextr   r   r
   s      r   r6   zIdbAdapter.set_nextV   s'    3%     r   c                 T    t           |         }| j                            |           d S r   )r	   r,   
set_returnr7   s      r   r9   zIdbAdapter.set_returnZ   s'    3E"""""r   c                     t           |         }|d }nt          |         }| j                            ||          \  }}d |D             }||fS )Nc                 6    g | ]\  }}t          |          |fS r(   )r   ).0frame2ks      r   
<listcomp>z(IdbAdapter.get_stack.<locals>.<listcomp>e   s)    @@@YVQ*V$$a(@@@r   )r	   r   r,   	get_stack)r   r   tbidr
   tbstackis          r   r@   zIdbAdapter.get_stack^   sX    3<BB%B8%%eR00q@@%@@@axr   c                 N    dd l }| j                            ||j                   d S )Nr   )__main__r,   run__dict__)r   cmdrF   s      r   rG   zIdbAdapter.runh   s*    S(+,,,,,r   c                 <    | j                             ||          }|S r   )r,   	set_breakr   filenamelinenomsgs       r   rK   zIdbAdapter.set_breakl   s    h  622
r   c                 <    | j                             ||          }|S r   )r,   clear_breakrL   s       r   rQ   zIdbAdapter.clear_breakp   s    h""8V44
r   c                 :    | j                             |          }|S r   )r,   clear_all_file_breaksr   rM   rO   s      r   rS   z IdbAdapter.clear_all_file_breakst   s    h,,X66
r   c                 <    t           |         }t          ||          S r   )r	   getattr)r   r   namer
   s       r   
frame_attrzIdbAdapter.frame_attrz   s    3ud###r   c                 `    t           |         }|j        }t          |          }|t          |<   |S r   )r	   	f_globalsr   	dicttabler   r   r
   dictdids        r   frame_globalszIdbAdapter.frame_globals~   s+    3hh	#
r   c                 `    t           |         }|j        }t          |          }|t          |<   |S r   )r	   f_localsr   r[   r\   s        r   frame_localszIdbAdapter.frame_locals   s+    3~hh	#
r   c                 `    t           |         }|j        }t          |          }|t          |<   |S r   )r	   f_coder   	codetable)r   r   r
   codecids        r   
frame_codezIdbAdapter.frame_code   s+    3|hh	#
r   c                 *    t           |         }|j        S r   )re   co_namer   rg   rf   s      r   	code_namezIdbAdapter.code_name   s    ~|r   c                 *    t           |         }|j        S r   )re   co_filenamerk   s      r   code_filenamezIdbAdapter.code_filename   s    ~r   c                      t          d          )Nz"dict_keys not public or pickleable)NotImplementedErrorr   r^   s     r   	dict_keyszIdbAdapter.dict_keys   s    !"FGGGr   c                 ^    t           |         }t          |                                          S r   )r[   listkeys)r   r^   r]   s      r   dict_keys_listzIdbAdapter.dict_keys_list   s!    ~DIIKK   r   c                 X    t           |         }||         }t          j        |          }|S r   )r[   reprlibrepr)r   r^   keyr]   values        r   	dict_itemzIdbAdapter.dict_item   s(    ~S	U##r   N)r%   r&   r'   r   r.   r2   r4   r6   r9   r@   rG   rK   rQ   rS   rX   r_   rb   rh   rl   ro   rs   rw   r}   r(   r   r   r*   r*   F   sC         
         ! ! !# # #  - - -      $ $ $             H H H! ! !    r   r*   c                     	 t          | |          }t          j        |          }t          |          }|                     t
          |           t
          S r   )r   r   Idbr*   registeridb_adap_oid)
rpchandlerr   	gui_proxyr,   idb_adaps        r   start_debuggerr      sN     \22I
,y
!
!C#Hh///r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
FrameProxyc                 >    || _         || _        d| _        i | _        d S )Nr   )_conn_fid_oid
_dictcache)r   r   r   s      r   r   zFrameProxy.__init__   s"    
	!	r   c                 *   |d d         dk    rt          |          |dk    r|                                 S |dk    r|                                 S |dk    r|                                 S | j                            | j        d| j        |fi           S )Nr   _rd   rZ   ra   rX   )AttributeError_get_f_code_get_f_globals_get_f_localsr   r"   r   r   r   rW   s     r   __getattr__zFrameProxy.__getattr__   s    8s?? &&&8##%%%;&&(((:%%'''z$$TY&*i%6< < 	<r   c                     | j                             | j        d| j        fi           }t	          | j         | j        |          S )Nrh   )r   r"   r   r   	CodeProxy)r   rg   s     r   r   zFrameProxy._get_f_code   s9    j##DI|di\2NNTY444r   c                 |    | j                             | j        d| j        fi           }|                     |          S )Nr_   r   r"   r   r   _get_dict_proxyrr   s     r   r   zFrameProxy._get_f_globals   s<    j##DI%)YL"6 6##C(((r   c                 |    | j                             | j        d| j        fi           }|                     |          S )Nrb   r   rr   s     r   r   zFrameProxy._get_f_locals   s<    j##DI~%)YL"6 6##C(((r   c                 |    || j         v r| j         |         S t          | j        | j        |          }|| j         |<   |S r   )r   	DictProxyr   r   )r   r^   dps      r   r   zFrameProxy._get_dict_proxy   sB    $/!!?3''tz49c22!	r   N)	r%   r&   r'   r   r   r   r   r   r   r(   r   r   r   r      sn          
< 
< 
<5 5 5) ) )
) ) )
    r   r   c                       e Zd Zd Zd ZdS )r   c                 0    || _         || _        || _        d S r   )r   r   _cid)r   r   r   rg   s       r   r   zCodeProxy.__init__       
				r   c                     |dk    r(| j                             | j        d| j        fi           S |dk    r(| j                             | j        d| j        fi           S d S )Nrj   rl   rn   ro   )r   r"   r   r   r   s     r   r   zCodeProxy.__getattr__   sr    9:((K*.)r; ; ;=  :((O*.)r; ; ; ! r   N)r%   r&   r'   r   r   r(   r   r   r   r      s2          
; ; ; ; ;r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )r   c                 0    || _         || _        || _        d S r   )r   r   _did)r   r   r   r^   s       r   r   zDictProxy.__init__  r   r   c                 R    | j                             | j        d| j        fi           S )Nrw   r   r"   r   r   r/   s    r   rv   zDictProxy.keys  s.    z$$TY%5	|RI I 	Ir   c                 T    | j                             | j        d| j        |fi           S )Nr}   r   )r   r{   s     r   __getitem__zDictProxy.__getitem__  s.    z$$TY&*i%5r; ; 	;r   c                      t          |          r   )r   r   s     r   r   zDictProxy.__getattr__  s    T"""r   N)r%   r&   r'   r   rv   r   r   r(   r   r   r   r     sS          I I I; ; ;# # # # #r   r   c                       e Zd Zd Zd ZdS )
GUIAdapterc                 "    || _         || _        d S r   )r   gui)r   r   r   s      r   r   zGUIAdapter.__init__  s    	r   c                 h    t          | j        |          }| j                            |||           d S r   )r   r   r   r!   )r   r#   r   r   r
   s        r   r!   zGUIAdapter.interaction!  s3    49c**We];;;;;r   Nr$   r(   r   r   r   r     s2          < < < < <r   r   c                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )IdbProxyc                 0    || _         || _        || _        d S r   )r   r   shell)r   r   r   r   s       r   r   zIdbProxy.__init__)  s    	


r   c                J    | j                             | j        |||          }|S r   )r   r"   r   )r   
methodnameargskwargsr|   s        r   callzIdbProxy.call.  s$    	$$TXz4HHr   c                 n    | j                             | j        d|fi           }|| j        j        _        d S )NrG   )r   
asyncqueuer   r   interp
active_seq)r   rI   localsseqs       r   rG   zIdbProxy.run4  s4    i""48USFB??'*
$$$r   c                 f                           d|j        |          \  }} fd|D             }||fS )Nr@   c                 D    g | ]\  }}t          j        |          |fS r(   )r   r   )r<   r   r>   r   s      r   r?   z&IdbProxy.get_stack.<locals>.<listcomp><  s.    EEEVS!*TY,,a0EEEr   r   r   )r   r
   rA   rC   rD   s   `    r   r@   zIdbProxy.get_stack9  s@    99[%*d;;qEEEEuEEEaxr   c                 0    |                      d           d S )Nr4   r   r/   s    r   r4   zIdbProxy.set_continue?  s    		.!!!!!r   c                 0    |                      d           d S )Nr.   r   r/   s    r   r.   zIdbProxy.set_stepB      		*r   c                 <    |                      d|j                   d S )Nr6   r   r   r
   s     r   r6   zIdbProxy.set_nextE  s    		*ej)))))r   c                 <    |                      d|j                   d S )Nr9   r   r   s     r   r9   zIdbProxy.set_returnH  s    		,
+++++r   c                 0    |                      d           d S )Nr2   r   r/   s    r   r2   zIdbProxy.set_quitK  r   r   c                 4    |                      d||          }|S )NrK   r   rL   s       r   rK   zIdbProxy.set_breakN  s    iiXv66
r   c                 4    |                      d||          }|S )NrQ   r   rL   s       r   rQ   zIdbProxy.clear_breakR  s    iix88
r   c                 2    |                      d|          }|S )NrS   r   rT   s      r   rS   zIdbProxy.clear_all_file_breaksV  s    ii/::
r   N)r%   r&   r'   r   r   rG   r@   r4   r.   r6   r9   r2   rK   rQ   rS   r(   r   r   r   r   '  s          
  + + +
  " " "  * * *, , ,          r   r   c                     	 |                      ddt          fi           at          | |t                    }t	          j        ||          }t          | |          }|                     t          |           |S Nexecstart_the_debugger)r"   r   r   r   r   Debuggerr   r   )rpccltpyshell	idb_proxyr   gui_adaps        r   start_remote_debuggerr   Z  su     $$V-A$0?B8 8L,77I

GY
/
/C&#&&H
OOL(+++Jr   c                 Z    	 t          |            |                     t                     d S r   )close_subprocess_debugger
unregisterr   r   s    r   close_remote_debuggerr   r  s1     f%%%
l#####r   c                 B    |                      ddt          fi            d S )Nr   stop_the_debugger)r"   r   r   s    r   r   r   ~  s%    
f1L?BGGGGGr   c                 B    |                      ddt          fi           }d S r   )r"   r   )r   idb_adap_oid_rets     r   restart_subprocess_debuggerr     s*    ((1E*6"> >r   rF   )mainz!idlelib.idle_test.test_debugger_rr   F)	verbosityexit)ry   typesidlelibr   	debuggingr   r   r	   r[   re   r   r   r   r   r*   r   r   r   r   r   r   r   r   r   r   r%   unittestr   r(   r   r   <module>r      s,  *        	 
		  

 
 
! ! ! ! ! ! ! !h h h h h h h hZ  ,' ' ' ' ' ' ' 'T; ; ; ; ; ; ; ; # # # # # # # #0	< 	< 	< 	< 	< 	< 	< 	<1 1 1 1 1 1 1 1f  0
$ 
$ 
$H H HP P P zD	,FFFFFF r   