ยปCore Development>Code coverage>Lib/idlelib/PathBrowser.py

Python code coverage for Lib/idlelib/PathBrowser.py

#countcontent
1n/aimport os
2n/aimport sys
3n/aimport importlib.machinery
4n/a
5n/afrom idlelib.TreeWidget import TreeItem
6n/afrom idlelib.ClassBrowser import ClassBrowser, ModuleBrowserTreeItem
7n/a
8n/aclass PathBrowser(ClassBrowser):
9n/a
10n/a def __init__(self, flist):
11n/a self.init(flist)
12n/a
13n/a def settitle(self):
14n/a self.top.wm_title("Path Browser")
15n/a self.top.wm_iconname("Path Browser")
16n/a
17n/a def rootnode(self):
18n/a return PathBrowserTreeItem()
19n/a
20n/aclass PathBrowserTreeItem(TreeItem):
21n/a
22n/a def GetText(self):
23n/a return "sys.path"
24n/a
25n/a def GetSubList(self):
26n/a sublist = []
27n/a for dir in sys.path:
28n/a item = DirBrowserTreeItem(dir)
29n/a sublist.append(item)
30n/a return sublist
31n/a
32n/aclass DirBrowserTreeItem(TreeItem):
33n/a
34n/a def __init__(self, dir, packages=[]):
35n/a self.dir = dir
36n/a self.packages = packages
37n/a
38n/a def GetText(self):
39n/a if not self.packages:
40n/a return self.dir
41n/a else:
42n/a return self.packages[-1] + ": package"
43n/a
44n/a def GetSubList(self):
45n/a try:
46n/a names = os.listdir(self.dir or os.curdir)
47n/a except OSError:
48n/a return []
49n/a packages = []
50n/a for name in names:
51n/a file = os.path.join(self.dir, name)
52n/a if self.ispackagedir(file):
53n/a nn = os.path.normcase(name)
54n/a packages.append((nn, name, file))
55n/a packages.sort()
56n/a sublist = []
57n/a for nn, name, file in packages:
58n/a item = DirBrowserTreeItem(file, self.packages + [name])
59n/a sublist.append(item)
60n/a for nn, name in self.listmodules(names):
61n/a item = ModuleBrowserTreeItem(os.path.join(self.dir, name))
62n/a sublist.append(item)
63n/a return sublist
64n/a
65n/a def ispackagedir(self, file):
66n/a if not os.path.isdir(file):
67n/a return 0
68n/a init = os.path.join(file, "__init__.py")
69n/a return os.path.exists(init)
70n/a
71n/a def listmodules(self, allnames):
72n/a modules = {}
73n/a suffixes = importlib.machinery.EXTENSION_SUFFIXES[:]
74n/a suffixes += importlib.machinery.SOURCE_SUFFIXES[:]
75n/a suffixes += importlib.machinery.BYTECODE_SUFFIXES[:]
76n/a sorted = []
77n/a for suff in suffixes:
78n/a i = -len(suff)
79n/a for name in allnames[:]:
80n/a normed_name = os.path.normcase(name)
81n/a if normed_name[i:] == suff:
82n/a mod_name = name[:i]
83n/a if mod_name not in modules:
84n/a modules[mod_name] = None
85n/a sorted.append((normed_name, name))
86n/a allnames.remove(name)
87n/a sorted.sort()
88n/a return sorted
89n/a
90n/adef main():
91n/a from idlelib import PyShell
92n/a PathBrowser(PyShell.flist)
93n/a if sys.stdin is sys.__stdin__:
94n/a mainloop()
95n/a
96n/aif __name__ == "__main__":
97n/a from unittest import main
98n/a main('idlelib.idle_test.test_pathbrowser', verbosity=2, exit=False)