
    dI                         d dl Z d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
 ddZ G d de	          Z G d de	          Z G d	 d
e          Zd Zedk    r'd dlmZ  eddd           d dlmZ  ee           dS dS )    N)ObjectTreeItemmake_objecttreeitem)TreeNodeTreeItemScrolledCanvasc                 *   |t          j        |           }t          |dd          at          j                            dd           t          ||          at          t          j	        d t                    a
t                                           d S )Nwhiter   )bghighlightthickness   both)expandfill)tkToplevelr   scframepackStackTreeItemitemr   canvasnoder   )rootexcflisttops       %  /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/idlelib/stackviewer.pyStackBrowserr   	   su    
{k$	A	>	>	>BHMMM(((e$$DBItT**DKKMMMMM    c                   (    e Zd ZddZd Zd Zd ZdS )r   Nc                     || _         |                     |d n|j                  | _        t	          |          j         dt          |           | _        d S )Nz: )r   	get_stack__traceback__stacktype__name__strtext)selfr   r   s      r   __init__zStackTreeItem.__init__   sO    
^^CKDDS=NOO
Cyy)77SXX77			r   c                     g }|r|j         |j        }|*|                    |j         |j        f           |j        }|*|S N)tb_frametb_nextappend	tb_lineno)r)   tbr$   s      r   r"   zStackTreeItem.get_stack   sR     	"+%BnLL"+r|4555B n r   c                     | j         S r,   )r(   r)   s    r   GetTextzStackTreeItem.GetText$   s
    yr   c                 r    g }| j         D ],}t          || j                  }|                    |           -|S r,   )r$   FrameTreeItemr   r/   )r)   sublistinfor   s       r   
GetSubListzStackTreeItem.GetSubList'   sC    J 	! 	!D tz22DNN4    r   r,   )r&   
__module____qualname__r*   r"   r4   r9    r   r   r   r      sU        8 8 8 8
        r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )r6   c                 "    || _         || _        d S r,   )r8   r   )r)   r8   r   s      r   r*   zFrameTreeItem.__init__1   s    	


r   c                     | j         \  }}	 |j        d         }n	#  d}Y nxY w|j        }|j        }|j        }t          j        ||          }|                                }|dv r	d|||fz  }n	d||||fz  }|S )Nr&   ?)r@    Nz%s, line %d: %sz%s.%s(...), line %d: %s)r8   	f_globalsf_codeco_filenameco_name	linecachegetlinestrip)	r)   r   linenomodnamecodefilenamefuncname
sourceliner   s	            r   r4   zFrameTreeItem.GetText5   s    	v	oj1GG	GGG|#<&x88
%%''
&&$'DDDD,-3Z0A ADs     c                     | j         \  }}g }|j        |j        ur0t          d|j        | j                  }|                    |           t          d|j        | j                  }|                    |           |S )Nz<locals>z	<globals>)r8   rB   f_localsVariablesTreeItemr   r/   )r)   r   rI   r7   r   s        r   r9   zFrameTreeItem.GetSubListG   st    	v?%.00$ZLLDNN4    eotzJJtr   c                     | j         rR| j        \  }}|j        j        }t          j                            |          r| j                             ||           d S d S d S r,   )r   r8   rC   rD   ospathisfilegotofileline)r)   r   rI   rL   s       r   OnDoubleClickzFrameTreeItem.OnDoubleClickQ   si    : 	: IME6|/Hw~~h'' :
''&99999		: 	:: :r   N)r&   r:   r;   r*   r4   r9   rW   r<   r   r   r6   r6   /   sP            $  : : : : :r   r6   c                   &    e Zd Zd Zd Zd Zd ZdS )rQ   c                     | j         S r,   )	labeltextr3   s    r   r4   zVariablesTreeItem.GetText[   s
    ~r   c                     d S r,   r<   r3   s    r   GetLabelTextzVariablesTreeItem.GetLabelText^   s    tr   c                 2    t          | j                  dk    S )Nr   )lenobjectr3   s    r   IsExpandablezVariablesTreeItem.IsExpandablea   s    4;!##r   c                     g }| j                                         D ]U}	 | j         |         }n# t          $ r Y w xY w|| j         fd}t          |dz   ||          }|                    |           V|S )Nc                     | ||<   d S r,   r<   )valuekeyr_   s      r   setfunctionz1VariablesTreeItem.GetSubList.<locals>.setfunctionk   s    #sr   z =)r_   keysKeyErrorr   r/   )r)   r7   rd   rc   re   r   s         r   r9   zVariablesTreeItem.GetSubListd   s    ;##%% 	! 	!CC(   '*4; $ $ $ $&sTz5+FFDNN4    s   -
::N)r&   r:   r;   r4   r\   r`   r9   r<   r   r   rQ   rQ   Y   sP            $ $ $    r   rQ   c                    ddl m} t          j        |           }|                    d           t          t          |                                                     d          dd                    \  }}|                    d|dz   |dz   fz              ||          }	 t           d S # t          $ r}t          ||||	           Y d }~d S d }~ww xY w)
Nr   )PyShellFileListzTest StackViewer+r   z+%d+%d2      )r   r   )idlelib.pyshellri   r   r   titlemapintgeometrysplitintentional_name_error	NameErrorr   )parentri   r   xyr   es          r   _stack_viewerry   r   s    //////
+f

CII !!!sFOO%%++C00455DAqLLQVQW--...OC  E3 3 3 3S!5c22222222223s   !B* *
C4CC__main__)mainz"idlelib.idle_test.test_stackviewer   F)	verbosityexit)run)NN)rF   rS   tkinterr   idlelib.debugobjr   r   idlelib.treer   r   r   r   r   r6   rQ   ry   r&   unittestr{   idlelib.idle_test.htestr   r<   r   r   <module>r      se       				     @ @ @ @ @ @ @ @ ; ; ; ; ; ; ; ; ; ;       H   6': ': ': ': ':H ': ': ':T       2
3 
3 
3 zD	-GGGG++++++C r   