MCPcopy Index your code
hub / github.com/RustPython/RustPython / _ModuleBrowser

Class _ModuleBrowser

Lib/pyclbr.py:186–266  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

184
185
186class _ModuleBrowser(ast.NodeVisitor):
187 def __init__(self, module, path, file, tree, inpackage):
188 self.path = path
189 self.tree = tree
190 self.file = file
191 self.module = module
192 self.inpackage = inpackage
193 self.stack = []
194
195 def visit_ClassDef(self, node):
196 bases = []
197 for base in node.bases:
198 name = ast.unparse(base)
199 if name in self.tree:
200 # We know this super class.
201 bases.append(self.tree[name])
202 elif len(names := name.split(".")) > 1:
203 # Super class form is module.class:
204 # look in module for class.
205 *_, module, class_ = names
206 if module in _modules:
207 bases.append(_modules[module].get(class_, name))
208 else:
209 bases.append(name)
210
211 parent = self.stack[-1] if self.stack else None
212 class_ = Class(self.module, node.name, bases, self.file, node.lineno,
213 parent=parent, end_lineno=node.end_lineno)
214 if parent is None:
215 self.tree[node.name] = class_
216 self.stack.append(class_)
217 self.generic_visit(node)
218 self.stack.pop()
219
220 def visit_FunctionDef(self, node, *, is_async=False):
221 parent = self.stack[-1] if self.stack else None
222 function = Function(self.module, node.name, self.file, node.lineno,
223 parent, is_async, end_lineno=node.end_lineno)
224 if parent is None:
225 self.tree[node.name] = function
226 self.stack.append(function)
227 self.generic_visit(node)
228 self.stack.pop()
229
230 def visit_AsyncFunctionDef(self, node):
231 self.visit_FunctionDef(node, is_async=True)
232
233 def visit_Import(self, node):
234 if node.col_offset != 0:
235 return
236
237 for module in node.names:
238 try:
239 try:
240 _readmodule(module.name, self.path, self.inpackage)
241 except ImportError:
242 _readmodule(module.name, [])
243 except (ImportError, SyntaxError):

Callers 1

_create_treeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected