PHP 8.2.30
Preview: PathBrowser.py Size: 3.13 KB
//opt/alt/python34/lib64/python3.4/idlelib/PathBrowser.py

import os
import sys
import importlib.machinery

from idlelib.TreeWidget import TreeItem
from idlelib.ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
from idlelib.PyShell import PyShellFileList


class PathBrowser(ClassBrowser):

    def __init__(self, flist, _htest=False):
        """
        _htest - bool, change box location when running htest
        """
        self._htest = _htest
        self.init(flist)

    def settitle(self):
        "Set window titles."
        self.top.wm_title("Path Browser")
        self.top.wm_iconname("Path Browser")

    def rootnode(self):
        return PathBrowserTreeItem()

class PathBrowserTreeItem(TreeItem):

    def GetText(self):
        return "sys.path"

    def GetSubList(self):
        sublist = []
        for dir in sys.path:
            item = DirBrowserTreeItem(dir)
            sublist.append(item)
        return sublist

class DirBrowserTreeItem(TreeItem):

    def __init__(self, dir, packages=[]):
        self.dir = dir
        self.packages = packages

    def GetText(self):
        if not self.packages:
            return self.dir
        else:
            return self.packages[-1] + ": package"

    def GetSubList(self):
        try:
            names = os.listdir(self.dir or os.curdir)
        except OSError:
            return []
        packages = []
        for name in names:
            file = os.path.join(self.dir, name)
            if self.ispackagedir(file):
                nn = os.path.normcase(name)
                packages.append((nn, name, file))
        packages.sort()
        sublist = []
        for nn, name, file in packages:
            item = DirBrowserTreeItem(file, self.packages + [name])
            sublist.append(item)
        for nn, name in self.listmodules(names):
            item = ModuleBrowserTreeItem(os.path.join(self.dir, name))
            sublist.append(item)
        return sublist

    def ispackagedir(self, file):
        " Return true for directories that are packages."
        if not os.path.isdir(file):
            return False
        init = os.path.join(file, "__init__.py")
        return os.path.exists(init)

    def listmodules(self, allnames):
        modules = {}
        suffixes = importlib.machinery.EXTENSION_SUFFIXES[:]
        suffixes += importlib.machinery.SOURCE_SUFFIXES
        suffixes += importlib.machinery.BYTECODE_SUFFIXES
        sorted = []
        for suff in suffixes:
            i = -len(suff)
            for name in allnames[:]:
                normed_name = os.path.normcase(name)
                if normed_name[i:] == suff:
                    mod_name = name[:i]
                    if mod_name not in modules:
                        modules[mod_name] = None
                        sorted.append((normed_name, name))
                        allnames.remove(name)
        sorted.sort()
        return sorted

def _path_browser(parent):  # htest #
    flist = PyShellFileList(parent)
    PathBrowser(flist, _htest=True)
    parent.mainloop()

if __name__ == "__main__":
    from unittest import main
    main('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False)

    from idlelib.idle_test.htest import run
    run(_path_browser)

Directory Contents

Dirs: 3 × Files: 74

Name Size Perms Modified Actions
Icons DIR
- drwxr-xr-x 2024-05-23 07:04:39
Edit Download
idle_test DIR
- drwxr-xr-x 2024-05-23 07:04:39
Edit Download
- drwxr-xr-x 2024-05-23 07:04:39
Edit Download
6.53 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
8.99 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
17.32 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.32 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
2.97 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
5.79 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
5.89 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
55.07 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
6.83 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
8.15 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
9.47 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
2.90 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
2.46 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
7.59 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
2.50 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
62.80 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
31.44 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
6.51 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.91 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
1.82 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
18.32 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
665 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download
1.94 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
64.51 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.56 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
3.72 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
7.12 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
5.00 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
40.16 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
9.47 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
17.48 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
10.08 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
12.58 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
400 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download
570 B lrw-r--r-- 2019-03-18 16:51:26
Edit Download
3.96 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
415 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download
19.31 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
12.13 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
8.48 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
18.14 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
1.32 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
38.90 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
3.88 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
4.29 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
6.56 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.13 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.17 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
19.98 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
57.08 KB lrwxr-xr-x 2024-04-17 17:09:57
Edit Download
7.53 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
11.73 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
964 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download
6.48 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
20.29 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
1.03 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
13.35 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
7.87 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
4.27 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
2.57 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
6.84 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
7.31 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
4.32 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
17.99 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
3.15 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
8.28 KB lrw-r--r-- 2019-03-18 16:51:26
Edit Download
3.10 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
14.67 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
10.56 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
6.71 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
2.41 KB lrw-r--r-- 2024-04-17 17:09:57
Edit Download
1.27 KB lrw-r--r-- 2024-04-17 17:09:58
Edit Download
288 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download
159 B lrw-r--r-- 2024-04-17 17:09:57
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).