MCPcopy Index your code
hub / github.com/python/cpython / DirBrowserTreeItem

Class DirBrowserTreeItem

Lib/idlelib/pathbrowser.py:42–99  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40
41
42class DirBrowserTreeItem(TreeItem):
43
44 def __init__(self, dir, packages=[]):
45 self.dir = dir
46 self.packages = packages
47
48 def GetText(self):
49 if not self.packages:
50 return self.dir
51 else:
52 return self.packages[-1] + ": package"
53
54 def GetSubList(self):
55 try:
56 names = os.listdir(self.dir or os.curdir)
57 except OSError:
58 return []
59 packages = []
60 for name in names:
61 file = os.path.join(self.dir, name)
62 if self.ispackagedir(file):
63 nn = os.path.normcase(name)
64 packages.append((nn, name, file))
65 packages.sort()
66 sublist = []
67 for nn, name, file in packages:
68 item = DirBrowserTreeItem(file, self.packages + [name])
69 sublist.append(item)
70 for nn, name in self.listmodules(names):
71 item = ModuleBrowserTreeItem(os.path.join(self.dir, name))
72 sublist.append(item)
73 return sublist
74
75 def ispackagedir(self, file):
76 " Return true for directories that are packages."
77 if not os.path.isdir(file):
78 return False
79 init = os.path.join(file, "__init__.py")
80 return os.path.exists(init)
81
82 def listmodules(self, allnames):
83 modules = {}
84 suffixes = importlib.machinery.EXTENSION_SUFFIXES[:]
85 suffixes += importlib.machinery.SOURCE_SUFFIXES
86 suffixes += importlib.machinery.BYTECODE_SUFFIXES
87 sorted = []
88 for suff in suffixes:
89 i = -len(suff)
90 for name in allnames[:]:
91 normed_name = os.path.normcase(name)
92 if normed_name[i:] == suff:
93 mod_name = name[:i]
94 if mod_name not in modules:
95 modules[mod_name] = None
96 sorted.append((normed_name, name))
97 allnames.remove(name)
98 sorted.sort()
99 return sorted

Callers 2

GetSubListMethod · 0.85
GetSubListMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…