
    "e                         d dl Zd dlZd dlZd dlmZmZ d dlmZ  G d de      Z	 G d de      Z
 G d d	e      Zed
k(  r d dlmZ  eddd       d dlmZ  ee	       yy)    N)ModuleBrowserModuleBrowserTreeItem)TreeItemc                   &    e Zd ZddddZd Zd Zy)PathBrowserF)_htest_utestc                N    || _         || _        || _        | j                          y)zG
        _htest - bool, change box location when running htest
        N)masterr   r	   init)selfr   r   r	   s       %lib/python3.12/idlelib/pathbrowser.py__init__zPathBrowser.__init__   s"     		    c                 p    | j                   j                  d       | j                   j                  d       y)zSet window titles.zPath BrowserN)topwm_titlewm_iconnamer   s    r   settitlezPathBrowser.settitle   s&    .)^,r   c                     t               S N)PathBrowserTreeItemr   s    r   rootnodezPathBrowser.rootnode   s    "$$r   N)__name__
__module____qualname__r   r   r    r   r   r   r   	   s    ).u -
%r   r   c                       e Zd Zd Zd Zy)r   c                      y)Nzsys.pathr   r   s    r   GetTextzPathBrowserTreeItem.GetText   s    r   c                 l    g }t         j                  D ]  }t        |      }|j                  |         |S r   )syspathDirBrowserTreeItemappend)r   sublistdiritems       r   
GetSubListzPathBrowserTreeItem.GetSubList"   s7    88 	!C%c*DNN4 	! r   N)r   r   r   r!   r*   r   r   r   r   r      s    r   r   c                   .    e Zd Zg fdZd Zd Zd Zd Zy)r%   c                      || _         || _        y r   )r(   packages)r   r(   r-   s      r   r   zDirBrowserTreeItem.__init__,   s     r   c                 V    | j                   s| j                  S | j                   d   dz   S )Nz	: package)r-   r(   r   s    r   r!   zDirBrowserTreeItem.GetText0   s&    }}88O==${22r   c                    	 t        j                  | j                  xs t         j                        }g }|D ]q  }t         j
                  j                  | j                  |      }| j                  |      s?t         j
                  j                  |      }|j                  |||f       s |j                          g }|D ]1  \  }}}t        || j                  |gz         }|j                  |       3 | j                  |      D ]I  \  }}t        t         j
                  j                  | j                  |            }|j                  |       K |S # t        $ r g cY S w xY wr   )oslistdirr(   curdirOSErrorr$   joinispackagedirnormcaser&   sortr%   r-   listmodulesr   )r   namesr-   namefilennr'   r)   s           r   r*   zDirBrowserTreeItem.GetSubList6   s3   	JJtxx42995E  	2D77<<$/D  &WW%%d+T4 01		2
 	& 	!NBd%dDMMTF,BCDNN4 	! ((/ 	!HB(dhh)EFDNN4 	! !  	I	s   1E E E c                     t         j                  j                  |      syt         j                  j                  |d      }t         j                  j	                  |      S )z/ Return true for directories that are packages.Fz__init__.py)r1   r$   isdirr5   exists)r   r<   r   s      r   r6   zDirBrowserTreeItem.ispackagedirK   s<    ww}}T"ww||D-0ww~~d##r   c                    i }t         j                  j                  d d  }|t         j                  j                  z  }|t         j                  j                  z  }g }|D ]s  }t        |       }|d d  D ]]  }t        j                  j                  |      }||d  |k(  s+|d | }	|	|vs5d ||	<   |j                  ||f       |j                  |       _ u |j                          |S r   )	importlib	machineryEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESlenr1   r$   r7   r&   remover8   )
r   allnamesmodulessuffixessortedsuffir;   normed_namemod_names
             r   r9   zDirBrowserTreeItem.listmodulesR   s    &&99!<I''777I''999 		.DT
A  . gg..t4qr?d*#BQxHw.,0){D&9: -.		. 	r   N)r   r   r   r   r!   r*   r6   r9   r   r   r   r%   r%   *   s    %' !3*$r   r%   __main__)mainz"idlelib.idle_test.test_pathbrowser   F)	verbosityexit)run)importlib.machineryrB   r1   r#   idlelib.browserr   r   idlelib.treer   r   r   r%   r   unittestrR   idlelib.idle_test.htestrV   r   r   r   <module>r\      sc     	 
 @ !%- %(
( 
9 9x z	-G+ r   