
    z%i/                     "   	 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       yy)     N)debuggeridb_adaptergui_adapterc                 .    t        |       }| t        |<   |S N)id
frametable)framefids     F/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/debugger_r.py
wrap_framer   (   s    
U)CJsOJ    c                 V    	 | y | d   }t        |      }|t        |<   | d   | d   |f}|S )N   r      )r   tracebacktable)info	tracebacktraceback_idmodified_infos       r   	wrap_infor   -   sC    6|G	)}'0|$a$q'<8r   c                       e Zd Zd ZddZy)GUIProxyc                      || _         || _        y r   )connoid)selfr   gui_adap_oids      r   __init__zGUIProxy.__init__;   s    	r   Nc           	      ~    | j                   j                  | j                  d|t        |      t	        |      fi        y )Ninteraction)r   
remotecallr   r   r   )r   messager
   r   s       r   r!   zGUIProxy.interaction?   s4     			TXX}%z%'8)D/J	!r   r   __name__
__module____qualname__r   r!    r   r   r   r   9   s     !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y)
IdbAdapterc                     || _         y r   )idb)r   r,   s     r   r   zIdbAdapter.__init__H   s	    r   c                 8    | j                   j                          y r   )r,   set_stepr   s    r   r.   zIdbAdapter.set_stepM       r   c                 8    | j                   j                          y r   )r,   set_quitr/   s    r   r2   zIdbAdapter.set_quitP   r0   r   c                 8    | j                   j                          y r   )r,   set_continuer/   s    r   r4   zIdbAdapter.set_continueS   s    r   c                 L    t         |   }| j                  j                  |       y r   )r	   r,   set_nextr   r   r
   s      r   r6   zIdbAdapter.set_nextV   s    3% r   c                 L    t         |   }| j                  j                  |       y r   )r	   r,   
set_returnr7   s      r   r9   zIdbAdapter.set_returnZ   s    3E"r   c                     t         |   }|d }n	t        |   }| j                  j                  ||      \  }}|D cg c]  \  }}t	        |      |f }}}||fS c c}}w r   )r	   r   r,   	get_stackr   )	r   r   tbidr
   tbstackiframe2ks	            r   r;   zIdbAdapter.get_stack^   si    3<B%B88%%eR0q:?@YVQ*V$a(@@ax As   Ac                 X    dd l }| j                  j                  ||j                         y )Nr   )__main__r,   run__dict__)r   cmdrC   s      r   rD   zIdbAdapter.runh   s    S(++,r   c                 >    | j                   j                  ||      }|S r   )r,   	set_breakr   filenamelinenomsgs       r   rH   zIdbAdapter.set_breakl   s    hh  62
r   c                 >    | j                   j                  ||      }|S r   )r,   clear_breakrI   s       r   rN   zIdbAdapter.clear_breakp   s    hh""8V4
r   c                 <    | j                   j                  |      }|S r   )r,   clear_all_file_breaksr   rJ   rL   s      r   rP   z IdbAdapter.clear_all_file_breakst   s    hh,,X6
r   c                 ,    t         |   }t        ||      S r   )r	   getattr)r   r   namer
   s       r   
frame_attrzIdbAdapter.frame_attrz   s    3ud##r   c                 X    t         |   }|j                  }t        |      }|t        |<   |S r   )r	   	f_globalsr   	dicttabler   r   r
   dictdids        r   frame_globalszIdbAdapter.frame_globals~   s+    3h	#
r   c                 X    t         |   }|j                  }t        |      }|t        |<   |S r   )r	   f_localsr   rX   rY   s        r   frame_localszIdbAdapter.frame_locals   s+    3~~h	#
r   c                 X    t         |   }|j                  }t        |      }|t        |<   |S r   )r	   f_coder   	codetable)r   r   r
   codecids        r   
frame_codezIdbAdapter.frame_code   s+    3||h	#
r   c                 ,    t         |   }|j                  S r   )rb   co_namer   rd   rc   s      r   	code_namezIdbAdapter.code_name   s    ~||r   c                 ,    t         |   }|j                  S r   )rb   co_filenamerh   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Gr   c                 F    t         |   }t        |j                               S r   )rX   listkeys)r   r[   rZ   s      r   dict_keys_listzIdbAdapter.dict_keys_list   s    ~DIIK  r   c                 L    t         |   }||   }t        j                  |      }|S r   )rX   reprlibrepr)r   r[   keyrZ   values        r   	dict_itemzIdbAdapter.dict_item   s'    ~S	U#r   N)r%   r&   r'   r   r.   r2   r4   r6   r9   r;   rD   rH   rN   rP   rU   r\   r_   re   ri   rl   rp   rt   rz   r(   r   r   r*   r*   F   sg    
 !#-$ H!r   r*   c                     	 t        | |      }t        j                  |      }t        |      }| j	                  t
        |       t
        S r   )r   r   Idbr*   registeridb_adap_oid)
rpchandlerr   	gui_proxyr,   idb_adaps        r   start_debuggerr      sB     \2I
,,y
!C#Hh/r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)
FrameProxyc                 <    || _         || _        d| _        i | _        y )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| j                         S |dk(  r| j                         S |dk(  r| j                         S | j                  j                  | j                  d| j                  |fi       S )Nr   _ra   rW   r^   rU   )AttributeError_get_f_code_get_f_globals_get_f_localsr   r"   r   r   r   rT   s     r   __getattr__zFrameProxy.__getattr__   s    8s? &&8##%%;&&((:%%''zz$$TYY&*ii%6< 	<r   c                     | j                   j                  | j                  d| j                  fi       }t	        | j                   | j                  |      S )Nre   )r   r"   r   r   	CodeProxy)r   rd   s     r   r   zFrameProxy._get_f_code   s=    jj##DII|dii\2NTYY44r   c                     | j                   j                  | j                  d| j                  fi       }| j	                  |      S )Nr\   r   r"   r   r   _get_dict_proxyro   s     r   r   zFrameProxy._get_f_globals   s:    jj##DII%)YYL"6##C((r   c                     | j                   j                  | j                  d| j                  fi       }| j	                  |      S )Nr_   r   ro   s     r   r   zFrameProxy._get_f_locals   s:    jj##DII~%)YYL"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   sF    $//!??3''tzz499c2!	r   N)	r%   r&   r'   r   r   r   r   r   r   r(   r   r   r   r      s     
<5)
)
r   r   c                       e Zd Zd Zd Zy)r   c                 .    || _         || _        || _        y r   )r   r   _cid)r   r   r   rd   s       r   r   zCodeProxy.__init__       
		r   c                     |dk(  r3| j                   j                  | j                  d| j                  fi       S |dk(  r3| j                   j                  | j                  d| j                  fi       S y )Nrg   ri   rk   rl   )r   r"   r   r   r   s     r   r   zCodeProxy.__getattr__   sk    9::((K*.))r; ;= ::((O*.))r; ; !r   N)r%   r&   r'   r   r   r(   r   r   r   r      s    
;r   r   c                   $    e Zd Zd Zd Zd Zd Zy)r   c                 .    || _         || _        || _        y r   )r   r   _did)r   r   r   r[   s       r   r   zDictProxy.__init__  r   r   c                 h    | j                   j                  | j                  d| j                  fi       S )Nrt   r   r"   r   r   r/   s    r   rs   zDictProxy.keys  s.    zz$$TYY%5		|RI 	Ir   c                 j    | j                   j                  | j                  d| j                  |fi       S )Nrz   r   )r   rx   s     r   __getitem__zDictProxy.__getitem__  s/    zz$$TYY&*ii%5r; 	;r   c                     t        |      r   )r   r   s     r   r   zDictProxy.__getattr__  s    T""r   N)r%   r&   r'   r   rs   r   r   r(   r   r   r   r     s    I;#r   r   c                       e Zd Zd Zd Zy)
GUIAdapterc                      || _         || _        y r   )r   gui)r   r   r   s      r   r   zGUIAdapter.__init__  s    	r   c                 j    t        | j                  |      }| j                  j                  |||       y r   )r   r   r   r!   )r   r#   r   r   r
   s        r   r!   zGUIAdapter.interaction!  s(    499c*We];r   Nr$   r(   r   r   r   r     s    <r   r   c                   T    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y)IdbProxyc                 .    || _         || _        || _        y r   )r   r   shell)r   r   r   r   s       r   r   zIdbProxy.__init__)  s    	
r   c                V    | j                   j                  | j                  |||      }|S r   )r   r"   r   )r   
methodnameargskwargsry   s        r   callzIdbProxy.call.  s%    		$$TXXz4Hr   c                     | j                   j                  | j                  d|fi       }|| j                  j                  _        y )NrD   )r   
asyncqueuer   r   interp
active_seq)r   rF   localsseqs       r   rD   zIdbProxy.run4  s4    ii""488USFB?'*

$r   c                     | j                  d|j                  |      \  }}|D cg c]  \  }}t        | j                  |      |f }}}||fS c c}}w )Nr;   )r   r   r   r   )r   r
   r<   r>   r?   r   rA   s          r   r;   zIdbProxy.get_stack9  sR    99[%**d;q?DEVS!*TYY,a0EEax Fs   "Ac                 &    | j                  d       y )Nr4   r   r/   s    r   r4   zIdbProxy.set_continue?  s    		.!r   c                 &    | j                  d       y )Nr.   r   r/   s    r   r.   zIdbProxy.set_stepB      		*r   c                 <    | j                  d|j                         y )Nr6   r   r   r   r
   s     r   r6   zIdbProxy.set_nextE  s    		*ejj)r   c                 <    | j                  d|j                         y )Nr9   r   r   s     r   r9   zIdbProxy.set_returnH  s    		,

+r   c                 &    | j                  d       y )Nr2   r   r/   s    r   r2   zIdbProxy.set_quitK  r   r   c                 ,    | j                  d||      }|S )NrH   r   rI   s       r   rH   zIdbProxy.set_breakN  s    iiXv6
r   c                 ,    | j                  d||      }|S )NrN   r   rI   s       r   rN   zIdbProxy.clear_breakR  s    iix8
r   c                 *    | j                  d|      }|S )NrP   r   rQ   s      r   rP   zIdbProxy.clear_all_file_breaksV  s    ii/:
r   N)r%   r&   r'   r   r   rD   r;   r4   r.   r6   r9   r2   rH   rN   rP   r(   r   r   r   r   '  s>    
+
"*,r   r   c                     	 | j                  ddt        fi       at        | |t              }t	        j
                  ||      }t        | |      }| j                  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  sd     $$V-A$0?B8L,7I


GY
/C&#&H
OOL(+Jr   c                 F    	 t        |        | j                  t               y r   )close_subprocess_debugger
unregisterr   r   s    r   close_remote_debuggerr   r  s     f%
l#r   c                 6    | j                  ddt        fi        y )Nr   stop_the_debugger)r"   r~   r   s    r   r   r   ~  s    
f1L?BGr   c                 6    | j                  ddt        fi       }y r   )r"   r   )r   idb_adap_oid_rets     r   restart_subprocess_debuggerr     s    ((1E*6">r   rC   )mainz!idlelib.idle_test.test_debugger_rr   F)	verbosityexit)rv   typesidlelibr   	debuggingr~   r   r	   rX   rb   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Z,' 'T; ; # #0	< 	<1 1f0
$HP z	,F r   