o
     JAfy                     @   s   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 deZ	G dd deZ
G dd	 d	eZd
d ZedkrSd dlmZ edddd d dlmZ ee dS dS )    N)ModuleBrowserModuleBrowserTreeItem)TreeItemc                   @   s,   e Zd ZdddddZdd Zdd Zd	S )
PathBrowserF)_htest_utestc                C   s   || _ || _|| _|   dS )zG
        _htest - bool, change box location when running htest
        N)masterr   r   init)selfr   r   r    r   */usr/lib/python3.10/idlelib/pathbrowser.py__init__   s   zPathBrowser.__init__c                 C   s   | j d | j d dS )zSet window titles.zPath BrowserN)topZwm_titleZwm_iconnamer
   r   r   r   settitle   s   zPathBrowser.settitlec                 C   s   t  S N)PathBrowserTreeItemr   r   r   r   rootnode   s   zPathBrowser.rootnodeN)__name__
__module____qualname__r   r   r   r   r   r   r   r   	   s    	r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s   dS )Nzsys.pathr   r   r   r   r   GetText   s   zPathBrowserTreeItem.GetTextc                 C   s&   g }t jD ]}t|}|| q|S r   )syspathDirBrowserTreeItemappend)r
   sublistdiritemr   r   r   
GetSubList"   s
   
zPathBrowserTreeItem.GetSubListN)r   r   r   r   r   r   r   r   r   r      s    r   c                   @   s8   e Zd Zg fddZdd Zdd Zdd Zd	d
 ZdS )r   c                 C   s   || _ || _d S r   )r   packages)r
   r   r    r   r   r   r   ,   s   
zDirBrowserTreeItem.__init__c                 C   s   | j s| jS | j d d S )Nz	: package)r    r   r   r   r   r   r   0   s   zDirBrowserTreeItem.GetTextc                 C   s   zt | jpt j}W n ty   g  Y S w g }|D ]}t j| j|}| |r8t j|}|	|||f q|
  g }|D ]\}}}t|| j|g }|	| qA| |D ]\}}tt j| j|}|	| qZ|S r   )oslistdirr   curdirOSErrorr   joinispackagedirnormcaser   sortr   r    listmodulesr   )r
   namesr    namefilennr   r   r   r   r   r   6   s*   
zDirBrowserTreeItem.GetSubListc                 C   s*   t j|sdS t j|d}t j|S )z/ Return true for directories that are packages.Fz__init__.py)r"   r   isdirr&   exists)r
   r-   r	   r   r   r   r'   K   s   zDirBrowserTreeItem.ispackagedirc           
      C   s   i }t jjd d  }|t jj7 }|t jj7 }g }|D ]8}t| }|d d  D ]*}tj|}||d  |krQ|d | }	|	|vrQd ||	< |	||f |
| q'q|  |S r   )	importlib	machineryEXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXESlenr"   r   r(   r   remover)   )
r
   ZallnamesmodulessuffixessortedZsuffir,   Znormed_nameZmod_namer   r   r   r*   R   s&   

zDirBrowserTreeItem.listmodulesN)r   r   r   r   r   r   r'   r*   r   r   r   r   r   *   s    r   c                 C   s   t | dd |   d S )NT)r   )r   Zmainloop)parentr   r   r   _path_browserf   s   r=   __main__)mainz"idlelib.idle_test.test_pathbrowser   F)	verbosityexit)run)importlib.machineryr1   r"   r   Zidlelib.browserr   r   Zidlelib.treer   r   r   r   r=   r   Zunittestr?   Zidlelib.idle_test.htestrC   r   r   r   r   <module>   s    <