a XC?hf@sddlZddlZddlZddlZddlmZmZddlm Z m Z m Z dddZ Gddde Z Gdd d e ZGd d d eZd d ZedkrddlmZeddddddlmZeedS)N)ObjectTreeItemmake_objecttreeitem)TreeNodeTreeItemScrolledCanvascCsT|durt|}t|dddatjjdddt||attj dta t dS)NZwhiter)ZbgZhighlightthicknessZboth)expandZfill) tkToplevelrZscframeZpack StackTreeItemitemrZcanvasZnoder)rootflisttbtopr8/opt/alt/python39/lib64/python3.9/idlelib/stackviewer.py StackBrowser s  rc@s6eZdZd ddZddZddZdd Zd d ZdS) r NcCs ||_|||_||_dSN)r get_stackstack get_exceptiontext)selfrrrrr__init__s zStackTreeItem.__init__cCsL|durtj}g}|r&|jdur&|j}|durH||j|jf|j}q&|Sr)syslast_tracebacktb_frametb_nextappend tb_lineno)rrrrrrrszStackTreeItem.get_stackcCs@tj}tj}t|dr|j}t|}|dur<|dt|}|S)N__name__z: )r last_type last_valuehasattrr"str)rtypevaluesrrrr's zStackTreeItem.get_exceptioncCs|jSr)rrrrrGetText1szStackTreeItem.GetTextcCs*g}|jD]}t||j}||q |Sr)r FrameTreeItemrr )rsublistinfor rrr GetSubList4s    zStackTreeItem.GetSubList)NN)r" __module__ __qualname__rrrr+r/rrrrr s    r c@s,eZdZddZddZddZddZd S) r,cCs||_||_dSr)r.r)rr.rrrrr>szFrameTreeItem.__init__c Cs||j\}}z|jd}Wnd}Yn0|j}|j}|j}t||}|}|dvrhd|||f}nd||||f}|S)Nr"?)r2Nz%s, line %d: %sz%s.%s(...), line %d: %s)r. f_globalsf_code co_filenameco_name linecachegetlinestrip) rr linenomodnamecodefilenamefuncnameZ sourceliner rrrr+Bs    zFrameTreeItem.GetTextcCsR|j\}}g}|j|jur4td|j|j}||td|j|j}|||S)Nzz )r.r4f_localsVariablesTreeItemrr )rr r;r-r rrrr/Ts    zFrameTreeItem.GetSubListcCs6|jr2|j\}}|jj}tj|r2|j||dSr)rr.r5r6ospathisfileZ gotofileline)rr r;r>rrr OnDoubleClick^s   zFrameTreeItem.OnDoubleClickN)r"r0r1rr+r/rErrrrr,<s r,c@s,eZdZddZddZddZddZd S) rAcCs|jSr)Z labeltextr*rrrr+hszVariablesTreeItem.GetTextcCsdSrrr*rrr GetLabelTextkszVariablesTreeItem.GetLabelTextcCst|jdkS)Nr)lenobjectr*rrr IsExpandablenszVariablesTreeItem.IsExpandablec Cshg}|jD]T}z|j|}Wnty6YqYn0||jfdd}t|d||}||q|S)NcSs |||<dSrr)r(keyrHrrr setfunctionxsz1VariablesTreeItem.GetSubList..setfunctionz =)rHkeysKeyErrorrr )rr-rJr(rKr rrrr/qs   zVariablesTreeItem.GetSubListN)r"r0r1r+rFrIr/rrrrrAfsrAc Csddlm}t|}|dtt|ddd\}}|d|d|df||}zt Wn t yt \}}}Yn0|t _ |t _|t _t||||d t ` t `t `dS) Nr)PyShellFileListzTest StackViewer+rz+%d+%d2)rrr)Zidlelib.pyshellrNr r titlemapintZgeometrysplitZintentional_name_error NameErrorrexc_infor#r$rr) parentrNrxyrexc_type exc_valueZexc_tbrrr _stack_viewers"     r]__main__)mainz"idlelib.idle_test.test_stackviewerF) verbosityexit)run)NNN)r8rBrZtkinterr Zidlelib.debugobjrrZ idlelib.treerrrrr r,rAr]r"Zunittestr_Zidlelib.idle_test.htestrcrrrrs '*