
    "eQ                     8   d Z ddlmZ ddlmZmZmZ  e       Zde_        de_	         G d de      Z
 G d de
      Z G d	 d
e
      Z G d de
      Z G d de      ZeeeeeeeeeeeeeeiZddZd Zedk(  r ddlmZ  eddd       ddlmZ  ee       yy)z=Define tree items for debug stackviewer, which is only user.
    )Repr)TreeItemTreeNodeScrolledCanvasd   c                   >    e Zd Zd
dZd Zd Zd Zd Zd Zd Z	d	 Z
y)ObjectTreeItemNc                 .    || _         || _        || _        y N)	labeltextobjectsetfunction)selfr   object_r   s       "lib/python3.12/idlelib/debugobj.py__init__zObjectTreeItem.__init__   s    "&    c                     | j                   S r   )r   r   s    r   GetLabelTextzObjectTreeItem.GetLabelText   s    ~~r   c                 @    t         j                  | j                        S r   )myreprreprr   r   s    r   GetTextzObjectTreeItem.GetText   s    {{4;;''r   c                 &    | j                         syy )Npython)IsExpandabler   s    r   GetIconNamezObjectTreeItem.GetIconName   s      " #r   c                     | j                   d uS r   )r   r   s    r   
IsEditablezObjectTreeItem.IsEditable!   s    t++r   c                 Z    	 t        |      }| j                  |       || _        y #  Y y xY wr   )evalr   r   )r   textvalues      r   SetTextzObjectTreeItem.SetText#   s1    	 JEU#  DK	s   & *c                 0    t        | j                          S r   )dirr   r   s    r   r   zObjectTreeItem.IsExpandable+   s    4;;''''r   c                     t        | j                        }g }|D ]Q  }	 t        | j                  |      }t	        t        |      dz   ||| j                  fd      }|j                  |       S |S # t        $ r Y aw xY w)Nz =c                     t        |||       S r   )setattrr$   keyr   s      r   <lambda>z+ObjectTreeItem.GetSubList.<locals>.<lambda>8   s    GS%0 r   )r'   r   getattrAttributeErrormake_objecttreeitemstrappend)r   keyssublistr,   r$   items         r   
GetSubListzObjectTreeItem.GetSubList-   s    4;; 
	!CS1 'C4"%t{{ 12D
 NN4 
	!  " s   A00	A<;A<r   )__name__
__module____qualname__r   r   r   r   r    r%   r   r6    r   r   r	   r	      s*    '(, (r   r	   c                       e Zd Zd Zd Zy)ClassTreeItemc                      y)NTr:   r   s    r   r   zClassTreeItem.IsExpandable>   s    r   c                     t         j                  |       }t        | j                  j                        dk(  r$t        d| j                  j                  d         }n t        d| j                  j                        }|j                  d|       |S )N   z__bases__[0] =r   z__bases__ =)r	   r6   lenr   	__bases__r0   insert)r   r4   r5   s      r   r6   zClassTreeItem.GetSubList@   ss     ++D1t{{$$%*&'7%%a(*D '}dkk6K6KLDq$r   N)r7   r8   r9   r   r6   r:   r   r   r<   r<   =   s    r   r<   c                       e Zd Zd Zy)AtomicObjectTreeItemc                      y)NFr:   r   s    r   r   z!AtomicObjectTreeItem.IsExpandableK   s    r   N)r7   r8   r9   r   r:   r   r   rD   rD   J   s    r   rD   c                       e Zd Zd Zd Zd Zy)SequenceTreeItemc                 2    t        | j                        dkD  S )Nr   )r@   r   r   s    r   r   zSequenceTreeItem.IsExpandableO   s    4;;!##r   c                 >    t        t        | j                              S r   )ranger@   r   r   s    r   r3   zSequenceTreeItem.keysQ   s    S%&&r   c                     g }| j                         D ]C  }	 | j                  |   }|| j                  fd}t        |d||      }|j	                  |       E |S # t        $ r Y Sw xY w)Nc                     | ||<   y r   r:   r+   s      r   r   z0SequenceTreeItem.GetSubList.<locals>.setfunctionZ   s    $r   :)r3   r   KeyErrorr0   r2   )r   r4   r,   r$   r   r5   s         r   r6   zSequenceTreeItem.GetSubListS   sz    99; 	!CC( (+DKK %&#{E;GDNN4 	!   s   A	A'&A'N)r7   r8   r9   r   r3   r6   r:   r   r   rG   rG   N   s    $'r   rG   c                       e Zd Zd Zy)DictTreeItemc                 b    t        | j                        }	 |j                          |S #  Y |S xY wr   )listr   sort)r   r3   s     r   r3   zDictTreeItem.keysa   s4    DKK 	IIK 	s   ) .N)r7   r8   r9   r3   r:   r   r   rP   rP   `   s    r   rP   Nc                 \    t        |      }|t        v r
t        |   }nt        } || ||      S r   )typedispatchr	   )r   r   r   tcs        r   r0   r0   t   s/    WAH}QKY--r   c                    dd l }ddlm}  ||       }|j                  d       t	        t
        | j                         j                  d      dd        \  }}|j                  d|dz   |dz   fz         |j                  dd	
       |j                          t        |ddd      }|j                  j                  dd       t        d|      }t        |j                  d |      }|j!                          y )Nr   )ToplevelzTest debug object browser+r?   z+%d+%dr      yellow)bdbgwhite)r_   highlightthickness	takefocusboth)expandfillsys)rf   tkinterrZ   titlemapintgeometrysplit	configure	focus_setr   framepackr0   r   canvasupdate)	parentrf   rZ   topxyscr5   nodes	            r   _debug_object_browserry   }   s     
6
CII)*sFOO%++C045DAqLLQWa#g../MMQ8M$MMO	A	KBHHMMM(uc*DBIItT*DKKMr   __main__)mainzidlelib.idle_test.test_debugobj   F)	verbosityexit)runr   )__doc__reprlibr   idlelib.treer   r   r   r   	maxstringmaxotherr	   r<   rD   rG   rP   rj   floatr1   tuplerR   dictrU   rV   r0   ry   r7   unittestr{   idlelib.idle_test.htestr   r:   r   r   <module>r      s     ; ;	 &X &PN > ~ $#  				
,-.  z	*aeD+ r   