python (3.11.7)

(root)/
lib/
python3.11/
idlelib/
__pycache__/
debugger.cpython-311.opt-1.pyc

eQdZddlZddlZddlTddlmZmZddlmZddl	m
Z
ddlmZGdd	ej
Zd
ZdZGdd
ZGdde
ZGddZedkrddlmZeddddSdS)aDebug user code with a GUI interface to a subclass of bdb.Bdb.

The Idb idb and Debugger gui instances each need a reference to each
other or to an rpc proxy for each other.

If IDLE is started with '-n', so that user code and idb both run in the
IDLE process, Debugger is called without an idb.  Debugger.__init__
calls Idb with its incomplete self.  Idb.__init__ stores gui and gui
then stores idb.

If IDLE is started normally, so that user code executes in a separate
process, debugger_r.start_remote_debugger is called, executing in the
IDLE process.  It calls 'start the debugger' in the remote process,
which calls Idb with a gui proxy.  Then Debugger is called in the IDLE
for more.
N)*)Frame	Scrollbar)macosx)ScrolledList)ListedToplevelc.eZdZdZfdZdZdZxZS)Idbz6Supply user_line and user_exception functions for Bdb.cV||_tdSN)guisuper__init__)selfr
	__class__s  D/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/idlelib/debugger.pyrzIdb.__init__ s&
ct|r|dSt|}	|j||dS#t
$rYdSwxYw)zmHandle a user stopping or breaking at a line.

        Convert frame to a string and send it to gui.
        N)_in_rpc_codeset_step_frame2messager
interactionTclError)rframemessages   r	user_linez
Idb.user_line$sx
	MMOOOF ''	H  %00000			DD	sA
A! A!ct|r|dSt|}|j|||dS)z)Handle an the occurrence of an exception.N)rrrr
r)rrexc_infors    ruser_exceptionzIdb.user_exception2sQ	MMOOOF ''WeX66666r)__name__
__module____qualname____doc__rrr
__classcell__)rs@rr
r
s\<<7777777rr
c|jjdrdS|j}|dS|jj}d|vrd|vrdSt	|S)z)Determine if debugger is within RPC code.zrpc.pyTNFidlelibdebugger)f_codeco_filenamecountf_backr)r
prev_frame	prev_names   rrr:si|%%h//(t\
5%1		!!jI&=&=5J'''rc|j}|j}|j}tj|}|d|}|jdkr
|d|jd}|S)z"Return a message string for frame.:?: z())r(r)f_linenoospathbasenameco_name)rcodefilenamelinenor5rs      rrrIsj<DH
^Fw))H$$F$$G|s00000NrceZdZdZdZdZdZdZdZdZ	dZ
ddZdZddZ
dZddZdZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZddZdZdZdZ dZ!dS)DebuggerzThe debugger interface.

    This class handles the drawing of the debugger window and
    the interactions with the underlying debugger session.
    Nc|t|}||_||_d|_|d|_d|_dS)aInstantiate and draw a debugger window.

        :param pyshell: An instance of the PyShell Window
        :type  pyshell: :class:`idlelib.pyshell.PyShell`

        :param idb: An instance of the IDLE debugger (optional)
        :type  idb: :class:`idlelib.debugger.Idb`
        NFr)r
pyshellidbrmake_guiinteracting
nesting_level)rr=r>s   rrzDebugger.__init__csL;d))C


 rcjdkr5jdfddS	d_jjd_S#d_wxYw)zRun the debugger.rdcjSr)run)argsrsr<lambda>zDebugger.run.<locals>.<lambda>s4rNTF)rA
abort_looprootafterr@r>rE)rrFs``rrEzDebugger.runus>!!OOIOOC!8!8!8!8!8999F	%#D48<&$DuD$$$$sA!!	A*cH	|n#t$rYnwxYw|jr|jdS|jr |jd|_|j|j	dS)zClose the debugger and window.N)
quit	Exceptionr@topbellstackviewercloser=close_debuggerdestroyrevents  rrQzDebugger.closes	IIKKKK			D		HMMOOOF	>""$$$d&6	
##%%%s
$$c|j}|j|_|jx|_}t|x|_}|jd|jd|d|j|j	d|jt|x|_}|jdgx|_
}t|d|jx|_}||t|d	|jx|_}||t|d
|jx|_}||t|d|jx|_}||t|d|jx|_}|||D].}|d
|d/t|x|_}|jd|js3t9||j_|jdt?|d|j |j|_!|j!"dd|j#st9||j_#t?|d|j$|j#|_%|j%"dd|j&s3t9||j_&|j&dt?|d|j'|j&|_(|j("dd|j)st9||j_)t?|d|j*|j)|_+|j+"ddtY|d|_-|j-dtY|d|_.|j.dd|j./d|_0t|d|_1|j1ddt||_2|j2ddt|d|_3|j3dd|j4r| |j&4r|'|j)4r|*dSdS) z$Draw the debugger gui on the screen.z
Debug ControlDebugWM_DELETE_WINDOWz<Escape>w)anchorGo)textcommandStepOverOutQuitdisabledstateleft)sideStack)r\r]variablerrowcolumnSourceLocalsGlobalsx)rZfill
background)heightbothexpandrqN)5r=flistrIrrNwm_titlewm_iconnamewm_protocolrQbindrbframepackbuttonsButtoncontbcontappendstepbstepnextbnextretbretrL	configurecframevstack
BooleanVarrsetCheckbutton
show_stackbstackgridvsourceshow_sourcebsourcevlocalsshow_localsblocalsvglobalsshow_globalsbglobalsLabelstatuserrorcgeterrorbgfstackflocalsfglobalsget)rr=rIrNr|blbrs        rr?zDebugger.make_guis,]
"<'	D'---3/***W%%%*DJ777

j$*---$Szz)f$$$rT49EEEE
Q
		!VTYGGGG
Q
		!VTYGGGG
Q
		!vE48DDDD	A
		!vFDIFFFF	A
		!	 	 A
KKjK)))
FFF$V}},ff%%%{	$.sOODN!KOOA!&$/DKIIIQq)))|	5%/__DN""64#3dlLLLa***|	 %/__DN"LQ"64#3dlLLLa***}	6&0ooDN##FD$5
OOO

q+++C,,,$$$3s+++

s---z|44C***///Szz000c!,,,

!&111;??	OO<	=	 	 	 rc||_|j||rF|\}}}	|j}n"#t$rdt|z}YnwxYw|	|d|}n#YnxYwd}nd}d}|j}|j|||j}	|	r9|j	
|j|\}
}|	|
||d|j
r||jD]}|d	|j|xjdz
c_|jjd
d|xjdzc_|jD]}|d	|jd|jd|jd|_dS)
Nr\z%sr1yellow)r\rrrgnormalrcvwait::idledebugwaitrb)rrrr AttributeErrorstrrrrPr>	get_stack
load_stackshow_variablesrrsync_source_liner~rNwakeuprArItkcall)
rrrinfotypevaluetbm1bgsvstackirs
             rrzDebugger.interactions8
7+++	"OD%
&]!
&
&
&CII%
& ))%))BBDBBBBB
"444


	$x))$*b99HE1MM%###A<	$!!###	(	(A
KKhK''''	
a	'#4555a	*	*A
KKjK))))2&&&
">>>


s4AAA!!A%c|j}|sdS||\}}|dd|ddzdkr<tj|r|j||dSdSdS)Nrgz<>)r_Debugger__frame2fileliner3r4existsrwgotofileline)rrr8r9s    rrzDebugger.sync_source_line.s
	F0077&BQB<(233-'4//BGNN84L4L/J##Hf555550///rc4|j}|j}|j}||fSr)r(r)r2)rrr7r8r9s     r__frame2filelinezDebugger.__frame2fileline6s#|#rc`|j|dSr)r>set_continuerHrs rrz
Debugger.cont<s,rc`|j|dSr)r>rrHrs rrz
Debugger.step@,rcl|j|j|dSr)r>set_nextrrHrs rrz
Debugger.nextDs0$*%%%rcl|j|j|dSr)r>
set_returnrrHrs rrzDebugger.retHs0DJ'''rc`|j|dSr)r>set_quitrHrs rrLz
Debugger.quitLrrcH|jjddddS)Nrr1)rIrrrs rrHzDebugger.abort_loopPs%	%!2C88888rc|js|jrft|j|j|x|_}|jr;|j|jd\}}|	||dSdS|j}|r4|jsd|_|
d|jd<dS)Nrgrs)rPrrStackViewerrrwrr>rrrQ)rrrrs    rrzDebugger.show_stackSs
	&DKOO$5$5
	&$/TZ$N$NNDrz
(8--dj$??q

eQ'''''
(
(!B
$+//++
#' 


$%DK!!!rcd|jr|dSdSr)rrrrs rrzDebugger.show_source`s:<	$!!#####	$	$rcH|d|_|dSNr)rr)r	stackitems  r
show_framezDebugger.show_frameds%q\
rc|j}|jr|st|jd|_n'|r%d|_|d|jd<|dS)Nrnrgrs)localsviewerrrNamespaceViewerrrQr)rlvs  rrzDebugger.show_localshs

<	+
L$3DL($K$K!
+$(!


)*X&rc|j}|jr|st|jd|_n'|r%d|_|d|jd<|dS)Nrorgrs)
globalsviewerrrrrrQr)rgvs  rrzDebugger.show_globalsts

=	,
O%4T]I%N%N"
,%)"


*+
h'rrc|j}|j}|j}|sdx}}n|j}|j}|r|r||urd}|r&||||jjj|r(||||jjjdSdSr)	rrrf_locals	f_globals	load_dictr=interprpcclt)rforcerrrldictgdicts       rrzDebugger.show_variabless




	  EEENEOE
b
Ue^^
	CLLt|':'ABBB
	CLLt|':'ABBBBB	C	Crc<|j||dS)zzSet a filename-lineno breakpoint in the debugger.

        Called from self.load_breakpoints and EW.setbreakpoint
        N)r>	set_breakrr8r9s   rset_breakpointzDebugger.set_breakpoints"
	
8V,,,,,rc<|j||dSr)r>clear_breakrs   rclear_breakpointzDebugger.clear_breakpoints Xv.....rc:|j|dSr)r>clear_all_file_breaks)rr8s  rclear_file_breakszDebugger.clear_file_breakss&&x00000rc|jjjD]?}|jj}	|jD]}|||0#t$rY<wxYwdS)z>Load PyShellEditorWindow breakpoints into subprocess debugger.N)r=rwinversedictior8breakpointsrr)reditwinr8r9s    rload_breakpointszDebugger.load_breakpointss|)5		Gz*H
%1::F''&9999:!



		s A
AAr)r)"r r!r"r#rrrrrPrrrrErQr?rrrrrrrrLrHrrrrrrrrrrrrr;r;Us
FGGHKLM$'%'%'%R$J J J X0000d666   999&&&$$$





CCCC ---///111rr;cJeZdZdZdZddZdZdZdZdZ	d	Z
d
ZdZdS)
rz#Code stack viewer for debugger GUI.ctjrtj||ntj||d||_||_g|_dS)NP)width)risAquaTkrrrwr
r)rmasterrwr
s    rrzStackViewer.__init__s[?	:
!$////!$b9999



rNc||_|tt|D]}||\}}	|jd}n	#d}YnxYw|j}|j}|j}	ddl}
|
	||}|
}|	dvr	d|||fz}n	d||	||fz}||krd|z}|||||dSdS)Nr r0r)r0rNz%s, line %d: %sz%s.%s(), line %d: %sz> )
rclearrangelenrr(r)r6	linecachegetlinestriprselect)
rrindexrrr9modnamer7r8funcnamer
sourcelineitems
             rrzStackViewer.load_stacks2


s5zz""		A!!HME6
/*5
<D'H|H"**8V<<J#))++J?**(GVZ+HH-(171EEEzzd{KKKKs
AAc>|jrtj||SdSOverride base method.N)rrpopup_eventrTs  rrzStackViewer.popup_events):	9+D%888	9	9rc|j}|d|j|d|jdS)rzGo to source line)labelr]zShow stack frameN)menuadd_commandgoto_source_lineshow_stack_frame)rrs  r	fill_menuzStackViewer.fill_menus_y2!%!6		8	8	81!%!6		8	8	8	8	8rcd|cxkrt|jkr+ndS|j|j|dSdS)rrN)rrr
rrr	s  r	on_selectzStackViewer.on_selectsZ''''DJ''''''H
5 122222('rc0||dSr)rrs  r	on_doublezStackViewer.on_doublesrcd|jd}||dS)Nactive)listboxr	rrs  rrzStackViewer.goto_source_lines1""8,,rc|jd}d|cxkrt|jkr+ndS|j|j|dSdS)Nrr)r r	rrr
rrs  rrzStackViewer.show_stack_frameso""8,,''''DJ''''''H
5 122222('rc0d|cxkrt|jksndS|j|\}}|j}|j}tj|r3|j|}|r|	|dSdSdSr)
rrr(r)r3r4isfilerwopengotoline)rr	rr9r7r8edits       rrzStackViewer.show_sourcesU,,,,S__,,,,F
5)
v|#
7>>(##	&:??8,,D
&

f%%%%%	&	&
&
&rr)
r r!r"r#rrrrrrrrrrrrrrs))


4999
888333
      333
	&	&	&	&	&rrc,eZdZdZddZdZd	dZdZdS)
rz/Global/local namespace viewer for debugger GUI.Nc
@d}d}|rdt|z}||_||_ddl}||_d|j_d|j_t|x|_	}|j	
ddt||dd	
|_|j
dt|d
x|_}|
ddt|t!dt#d|dd||fx|_}	|	
ddd|	j|d<|j|	d<t|	x|_}
|	dd|
d|_||dS)Nr(<rgrtrugroove)r\borderwidthreliefrp)rqvbar)namerighty)rfrq,)rsscrollregionre)rfrqrvr]yscrollcommandnw)windowrZ)rrtitlereprlibReprrepr	maxstringmaxotherrrr}rrrr0Canvasminmaxcanvasyviewrsubframe
create_windowsfidr)rrr9dictrrsr:rr0rBrDs           rrzNamespaceViewer.__init__s	"D		\F
LLNN	 		"6]]*
U
qv...5u!HMMM

S!!!$U8888	D		wS	)))%e-0c"foo-F-F45q%3H J J J	Jf	fQ777 ,Y#'8 #(==0
((Aht(LL	trrrc||jur|sdS|j}|j}t|jD]}|d|_|s)t|d}|ddn|	}t|}	d}
|	D]}||}|j|}
|r
|
dd}
t||}||
ddt|dd	}|
d|
||
dd|
dz}
||_||}|}|j}dd||f|jd
<|dkrd|d<|d
dS||d<|d
dS)NNonerrrjrgrr7)rkrlsticky)rr.r5r4rs)rv)rGrDrlistchildrenvaluesrSrrkeyssortedr<Entryinsertupdate_idletaskswinfo_reqwidthwinfo_reqheightrBr})rrGr
rpc_clientrDrcl	keys_listnamesrkr1rsvaluerrsrBs                 rrzNamespaceViewer.load_dicts49UF=
h'..0011		A
IIKKKK		hV,,,A
FFqF####		I9%%EC

T
..*#AbD\F(...3q666(!;;;F###3q666!e	!!###''))))++'(!UF&;N#C<<"F8JJaJ     %F8JJaJ     rc8|jdSr)rrSrs rrQzNamespaceViewer.closeRs
rr)rN)r r!r"r#rrGrrQrrrrrsY556D4!4!4!4!lrr__main__)mainzidlelib.idle_test.test_debuggerr,F)	verbosityexit)r#bdbr3tkintertkinter.ttkrrr&ridlelib.scrolledlistridlelib.windowrBdbr
rrr;rrr unittestr]rrr<module>rgs"


				((((((((------))))))77777#'777:
(
(
(			PPPPPPPPf
Q&Q&Q&Q&Q&,Q&Q&Q&hWWWWWWWWtzD	*aeDDDDDDr