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 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 )NzPath Browser)topZwm_titleZwm_iconnamer   r   r   r   settitle   s   zPathBrowser.settitlec                 C   s   t  S r   )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 )NFz__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    <