
    5bhQ                         	 d dl Z d dlZd dl d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  G d de j                        Zd	 Zd
 Z G d d      Z G d de	      Z G d d      Zedk(  rd dlmZ  eddd       yy)    N)*)Frame	Scrollbar)macosx)ScrolledList)ListedToplevelc                   ,     e Zd Z	  fdZd Zd Z xZS )Idbc                 0    || _         t        | 	          y N)guisuper__init__)selfr   	__class__s     :/opt/python-3.12.12/usr/lib/python3.12/idlelib/debugger.pyr   zIdb.__init__    s        c                     	 t        |      r| j                          y t        |      }	 | j                  j	                  ||       y # t
        $ r Y y w xY wr   )_in_rpc_codeset_step_frame2messager   interactionTclError)r   framemessages      r   	user_linezIdb.user_line$   sR    	 MMO '	HH  %0 		s   A 	AAc                     	 t        |      r| j                          y t        |      }| j                  j	                  |||       y r   )r   r   r   r   r   )r   r   exc_infor   s       r   user_exceptionzIdb.user_exception2   s9    7MMO 'WeX6r   )__name__
__module____qualname__r   r   r   __classcell__)r   s   @r   r
   r
      s    <7r   r
   c                     	 | j                   j                  j                  d      ry| j                  }|y|j                   j                  }d|v rd|v ryt	        |      S )Nzrpc.pyTFidlelibdebugger)f_codeco_filenamecountf_backr   )r   
prev_frame	prev_names      r   r   r   :   sb    /||%%h/\\
%%11		!jI&= J''r   c                     	 | j                   }|j                  }| j                  }t        j                  j                  |      }| d| }|j                  dk7  r| d|j                   d}|S )N:?: z())r'   r(   f_linenoospathbasenameco_name)r   codefilenamelinenor4   r   s         r   r   r   I   sm    ,<<DH^^Fww)H
!F8$G||sIR~R0Nr   c                       e Zd Z	 dZdZdZdZdZdZdZ	ddZ
d ZddZd Zd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dZd Zd Zd Zd Z y)DebuggerNc                     	 |t        |       }|| _        || _        d | _        | j	                          d| _        d| _        y )NFr   )r
   pyshellidbr   make_guiinteractingnesting_level)r   r<   r=   s      r   r   zDebugger.__init__c   sE    	 ;d)C
 r   c                      	  j                   dkD  r1 j                           j                  j                  d fd       y 	 d _          j
                  j                   d _        S # d _        w xY w)Nr   d   c                  "     j                     S r   )run)argsr   s   r   <lambda>zDebugger.run.<locals>.<lambda>   s    4r   TF)r@   
abort_looprootafterr?   r=   rD   )r   rE   s   ``r   rD   zDebugger.runu   sf    < !OOIIOOC!89	%#D488<<&$DuDs   A, ,	A5c                 V   	 	 | j                          | j                  r| j                  j	                          y | j
                  r!| j
                  j                          d | _        | j                  j                          | j                  j                          y # t        $ r Y w xY wr   )
quit	Exceptionr?   topbellstackviewercloser<   close_debuggerdestroyr   events     r   rP   zDebugger.close   s    ,	IIK HHMMO""$d&6 	##%  		s   B 	B('B(c                 L   	 | j                   }|j                  | _        |j                  x| _        }t        |      x| _        }| j                  j                  d       | j                  j                  d       |j                  d| j                         | j                  j                  d| j                         t        |      x| _        }| j                  j                  d       g x| _        }t        |d| j                        x| _        }|j#                  |       t        |d	| j$                        x| _        }|j#                  |       t        |d
| j(                        x| _        }|j#                  |       t        |d| j,                        x| _        }|j#                  |       t        |d| j0                        x| _        }|j#                  |       |D ]&  }|j3                  d       |j                  d       ( t        |      x| _        }| j4                  j                  d       | j6                  s5t9        |      | j:                  _        | j6                  j=                  d       t?        |d| j@                  | j6                        | _!        | jB                  jE                  dd       | jF                  st9        |      | j:                  _#        t?        |d| jH                  | jF                        | _%        | jJ                  jE                  dd       | jL                  s5t9        |      | j:                  _&        | jL                  j=                  d       t?        |d| jN                  | jL                        | _(        | jP                  jE                  dd       | jR                  st9        |      | j:                  _)        t?        |d| jT                  | jR                        | _+        | jV                  jE                  dd       tY        |d      | _-        | jZ                  j                  d       tY        |d      | _.        | j\                  j                  dd       | j\                  j_                  d      | _0        t        |d      | _1        | jb                  j                  dd       t        |      | _2        | jd                  j                  dd       t        |d      | _3        | jf                  j                  dd       | j6                  ji                         r| jA                          | jL                  ji                         r| jO                          | jR                  ji                         r| jU                          y y )NzDebug ControlDebugWM_DELETE_WINDOWz<Escape>w)anchorGo)textcommandStepOverOutQuitdisabledstateleft)side   Stack)r[   r\   variabler   rowcolumnSourceLocalsGlobalsx)rY   fill
background)heightbothexpandrp   )5r<   flistrH   r   rM   wm_titlewm_iconnamewm_protocolrP   bindr   bframepackbuttonsButtoncontbcontappendstepbstepnextbnextretbretrK   	configurecframevstack
BooleanVarr   setCheckbutton
show_stackbstackgridvsourceshow_sourcebsourcevlocalsshow_localsblocalsvglobalsshow_globalsbglobalsLabelstatuserrorcgeterrorbgfstackflocalsfglobalsget)r   r<   rH   rM   r{   blbr   s           r   r>   zDebugger.make_gui   s+   2,,]]
"<<'	D'--3/*W%*DJJ7j$**-$Sz)f$rT499EE
Q
		!VTYYGG
Q
		!VTYYGG
Q
		!vE488DD	A
		!vFDIIFF	A
		!AKKjK)FFF   %V},ff%{{$.sODNN!KKOOA!&$//DKKIQq)||%/_DNN""64#3#3dllLa*||%/_DNN"LLQ"64#3#3dllLa*}}&0oDNN##FD$5$5Oq+C,$3s+


s-zz|4C*/Sz0c!,!&1;;??OO<<== r   c                 0   || _         | j                  j                  |       |r |\  }}}	 |j                  }|	 | d| }d}nd}d }| j                  }| j                  j                  ||       | j                  }	|	r;| j                  j                  | j                   |      \  }
}|	j                  |
|       | j                  d       | j                  j                         r| j                          | j                   D ]  }|j                  d	        | j"                  j%                          | xj&                  dz  c_        | j(                  j*                  j-                  d
d       | xj&                  dz  c_        | j                   D ]  }|j                  d	        | j                  j                  d       | j                  j                  d| j                         d | _         y # t        $ r dt        |      z  }Y w xY w#  Y xY w)Nr[   z%sr0   yellow )r[   rq   rf   normalrb   vwait::idledebugwaitra   )r   r   r   r    AttributeErrorstrr   r   rO   r=   	get_stack
load_stackshow_variablesr   r   sync_source_liner}   rM   wakeupr@   rH   tkcall)r   r   r   infotypevaluetbm1bgsvstackir   s                r   r   zDebugger.interaction   s   
7+"OD%&]]  4r%)B BBBB

"4xx))$**b9HE1MM%#A<<!!#AKKhK'  	 	a		'#45aAKKjK) 2&

">
Q " &CI%&s   G2 H 2HHHc                     | j                   }|sy | j                  |      \  }}|d d |dd  z   dk7  r=t        j                  j	                  |      r| j
                  j                  ||       y y y )Nrf   z<>)r   _Debugger__frame2fileliner2   r3   existsrv   gotofileline)r   r   r7   r8   s       r   r   zDebugger.sync_source_line.  sk    

007&BQ<(23-'4/BGGNN84LJJ##Hf5 5M/r   c                 R    |j                   }|j                  }|j                  }||fS r   )r'   r(   r1   )r   r   r6   r7   r8   s        r   __frame2filelinezDebugger.__frame2fileline6  s*    ||##r   c                 X    | j                   j                          | j                          y r   )r=   set_continuerG   r   s    r   r   zDebugger.cont<  s    r   c                 X    | j                   j                          | j                          y r   )r=   r   rG   r   s    r   r   zDebugger.step@      r   c                 n    | j                   j                  | j                         | j                          y r   )r=   set_nextr   rG   r   s    r   r   zDebugger.nextD  s"    $**%r   c                 n    | j                   j                  | j                         | j                          y r   )r=   
set_returnr   rG   r   s    r   r   zDebugger.retH  s"    DJJ'r   c                 X    | j                   j                          | j                          y r   )r=   set_quitrG   r   s    r   rK   zDebugger.quitL  r   r   c                 R    | j                   j                  j                  ddd       y )Nr   r   1)rH   r   r   r   s    r   rG   zDebugger.abort_loopP  s    		%!2C8r   c                    | j                   s| j                  j                         rqt        | j                  | j
                  |       x| _         }| j                  r<| j                  j                  | j                  d       \  }}|j                  ||       y y | j                   }|r1| j                  j                         sd | _         |j                          d| j                  d<   y )Nrf   rr   )rO   r   r   StackViewerr   rv   r   r=   r   r   rP   )r   r   r   r   s       r   r   zDebugger.show_stackS  s    DKKOO$5$/TZZ$NNDrzz88--djj$?qeQ'  !!B$++//+#' 
$%DKK!r   c                 Z    | j                   j                         r| j                          y y r   )r   r   r   r   s    r   r   zDebugger.show_source`  s#    <<!!# r   c                 8    |d   | _         | j                          y Nr   )r   r   )r   	stackitems     r   
show_framezDebugger.show_framed  s    q\
r   c                     | j                   }| j                  j                         r|sDt        | j                  d      | _         n(|r&d | _         |j                          d| j                  d<   | j                          y )Nrm   rf   rr   )localsviewerr   r   NamespaceViewerr   rP   r   )r   lvs     r   r   zDebugger.show_localsh  sa    <<$3DLL($K!$(!
)*X&r   c                     | j                   }| j                  j                         r|sDt        | j                  d      | _         n(|r&d | _         |j                          d| j                  d<   | j                          y )Nrn   rf   rr   )globalsviewerr   r   r   r   rP   r   )r   gvs     r   r   zDebugger.show_globalst  sa    ==%4T]]I%N"%)"
*+h'r   c                 l   | j                   }| j                  }| j                  }|sd x}}n"|j                  }|j                  }|r|r||u rd }|r1|j                  ||| j                  j                  j                         |r2|j                  ||| j                  j                  j                         y y r   )	r   r   r   f_locals	f_globals	load_dictr<   interprpcclt)r   forcer   r   r   ldictgdicts          r   r   zDebugger.show_variables  s    

  EENNEOOEbUe^LLt||':':'A'ABLLt||':':'A'AB r   c                 >    	 | j                   j                  ||       y r   )r=   	set_breakr   r7   r8   s      r   set_breakpointzDebugger.set_breakpoint  s    	 	8V,r   c                 <    | j                   j                  ||       y r   )r=   clear_breakr   s      r   clear_breakpointzDebugger.clear_breakpoint  s    Xv.r   c                 :    | j                   j                  |       y r   )r=   clear_all_file_breaks)r   r7   s     r   clear_file_breakszDebugger.clear_file_breaks  s    &&x0r   c                     	 | j                   j                  j                  D ]<  }|j                  j                  }	 |j
                  D ]  }| j                  ||        > y # t        $ r Y Kw xY wr   )r<   rv   inversedictior7   breakpointsr   r   )r   editwinr7   r8   s       r   load_breakpointszDebugger.load_breakpoints  sg    L||))55Gzz**H%11F''&9 2 6
 " s   #A""	A.-A.r   )r   )!r    r!   r"   r   r   r   r   rO   r   r   r   rD   rP   r>   r   r   r   r   r   r   r   rK   rG   r   r   r   r   r   r   r   r   r   r    r   r   r:   r:   U   s    
 FGGHKLM$'%R$J X0d6 9&$

C -/1r   r:   c                   F    e Zd Z	 d ZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zy)r   c                     t        j                         rt        j                  | |       nt        j                  | |d       || _        || _        g | _        y )NP   )width)r   isAquaTkr   r   rv   r   r   )r   masterrv   r   s       r   r   zStackViewer.__init__  sE    ?? !!$/!!$b9

r   Nc                    || _         | j                          t        t        |            D ]  }||   \  }}	 |j                  d   }|j
                  }|j                  }|j                  }	dd l}
|
j                  ||      }|j                         }|	dv r	d|||fz  }n	d||	||fz  }||k(  rd|z   }| j                  |        || j                  |       y y #  d}Y xY w)Nr    r/   r   )r/   r   Nz%s, line %d: %sz%s.%s(), line %d: %sz> )r   clearrangelenr   r'   r(   r5   	linecachegetlinestripr   select)r   r   indexr   r   r8   modnamer6   r7   funcnamer  
sourcelineitems                r   r   zStackViewer.load_stack  s    


s5z"A!!HME6//*5 <<D''H||H"**8V<J#))+J?*(GVZ+HH-(171E EEzd{KK' #( KK !s   CCc                 J    	 | j                   rt        j                  | |      S y r   )r   r   popup_eventrS   s     r   r  zStackViewer.popup_event  s$    ::++D%88 r   c                     	 | j                   }|j                  d| j                         |j                  d| j                         y )NzGo to source line)labelr\   zShow stack frame)menuadd_commandgoto_source_lineshow_stack_frame)r   r  s     r   	fill_menuzStackViewer.fill_menu  sL    yy2!%!6!6 	 	81!%!6!6 	 	8r   c                     	 d|cxk  rt        | j                        k  r,n y | j                  j                  | j                  |          y y r   )r  r   r   r   r   r  s     r   	on_selectzStackViewer.on_select  s:    'DJJ'HH

5 12 (r   c                 (    	 | j                  |       y r   )r   r  s     r   	on_doublezStackViewer.on_double  s    r   c                 \    | j                   j                  d      }| j                  |       y )Nactive)listboxr  r   r  s     r   r  zStackViewer.goto_source_line  s$    ""8,r   c                     | j                   j                  d      }d|cxk  rt        | j                        k  r,n y | j                  j                  | j                  |          y y )Nr  r   )r  r  r  r   r   r   r  s     r   r  zStackViewer.show_stack_frame  sK    ""8,'DJJ'HH

5 12 (r   c                 8   d|cxk  rt        | j                        k  sy  y | j                  |   \  }}|j                  }|j                  }t        j
                  j                  |      r0| j                  j                  |      }|r|j                  |       y y y r   )
r  r   r'   r(   r2   r3   isfilerv   opengotoline)r   r  r   r8   r6   r7   edits          r   r   zStackViewer.show_source  s    U,S_, -

5)v||##77>>(#::??8,Df%  $r   r   )r    r!   r"   r   r   r  r  r  r  r  r  r   r   r   r   r   r     s2    )
49
83
  3
	&r   r   c                   (    e Zd Z	 ddZdZddZd Zy)r   Nc           
         d}d}|rdt        |      z  }|| _        || _        dd l}|j	                         | _        d| j
                  _        d| j
                  _        t        |      x| _	        }| j                  j                  dd       t        ||dd	
      | _        | j                  j                  d       t        |d      x| _        }|j                  dd       t        |t!        dt#        d|            dd||f      x| _        }	|	j                  ddd       |	j&                  |d<   |j(                  |	d<   t        |	      x| _        }
|	j-                  dd|
d      | _        | j1                  |       y )Nr   (      <   rf   rs   rt      groove)r[   borderwidthreliefro   )rp   vbar)namerighty)re   rp   ,  )rr   scrollregionrd   )re   rp   ru   r\   yscrollcommandnw)windowrY   )r  r   titlereprlibReprrepr	maxstringmaxotherr   r   r|   r   r  r   r-  Canvasminmaxcanvasyviewr   subframecreate_windowsfidr   )r   r   r6  odictr   rr   r7  r   r-  r?  rA  s              r   r   zNamespaceViewer.__init__  sW   E
]F
LLN	 				"6]*
U

qv.5u!HM


S!$U88	D		wS	)%e-0c"fo-F45q%3H J 	Jf 	fQ7 ,,Y#'88 #(=0((Aht(L	ur   r   c                 x   || j                   u r|sy | j                  }| j                  }t        |j                  j                               D ]  }|j                           d | _         |s!t        |d      }|j                  dd       n|j                         }t        |      }	d}
|	D ]  }||   }| j                  j                  |      }|r|dd }t        ||      }|j                  |
dd       t        |dd	      }|j                  d|       |j                  |
dd       |
dz   }
 || _         |j                          |j                         }|j!                         }| j"                  }dd||f| j"                  d
<   |dkD  rd|d<   |j%                  d       y ||d<   |j%                  d       y )NNoner   r   ri   rf   r   r4  )rj   rk   sticky)r   r+  r2  r1  rr   )ru   )
prev_odictrA  r   listchildrenvaluesrR   r   r   keyssortedr9  Entryinsertupdate_idletaskswinfo_reqwidthwinfo_reqheightr?  r|   )r   rD  r   
rpc_clientrA  r   cl	keys_listnamesrj   r.  r   svaluer   rr   r?  s                    r   r   zNamespaceViewer.load_dict  s   DOO#E==

h''..01AIIK 2hV,AFFqF# 

I9%ECd. #Ab\F(.3q6(!;F#3q6!e   !!#'')))+'(!UF&;N#C<"F8JJaJ %F8JJaJ r   c                 8    | j                   j                          y r   )r   rR   r   s    r   rP   zNamespaceViewer.closeR  s    

r   r   )r   N)r    r!   r"   r   rH  r   rP   r   r   r   r   r     s    56 J4!lr   r   __main__)mainzidlelib.idle_test.test_debuggerr)  F)	verbosityexit)bdbr2   tkintertkinter.ttkr   r   r%   r   idlelib.scrolledlistr   idlelib.windowr   Bdbr
   r   r   r:   r   r   r    unittestr[  r   r   r   <module>re     s   "  	  (  - )7#'' 7:(	P Pf
Q&, Q&hW Wt z	*aeD r   