MCPcopy
hub / github.com/python/mypy / get_module_symbol

Method get_module_symbol

mypy/semanal.py:6782–6809  ·  view source on GitHub ↗

Look up a symbol from a module. Return None if no matching symbol could be bound.

(self, node: MypyFile, name: str)

Source from the content-addressed store, hash-verified

6780 return None
6781
6782 def get_module_symbol(self, node: MypyFile, name: str) -> SymbolTableNode | None:
6783 """Look up a symbol from a module.
6784
6785 Return None if no matching symbol could be bound.
6786 """
6787 module = node.fullname
6788 names = node.names
6789 sym = names.get(name)
6790 if not sym:
6791 fullname = module + "." + name
6792 if fullname in self.modules and self.is_visible_import(module, fullname):
6793 sym = SymbolTableNode(GDEF, self.modules[fullname])
6794 elif self.is_incomplete_namespace(module):
6795 self.record_incomplete_ref()
6796 elif "__getattr__" in names:
6797 gvar = self.create_getattr_var(names["__getattr__"], name, fullname)
6798 if gvar:
6799 sym = SymbolTableNode(GDEF, gvar)
6800 elif self.is_missing_module(fullname):
6801 # We use the fullname of the original definition so that we can
6802 # detect whether two names refer to the same thing.
6803 var_type = AnyType(TypeOfAny.from_unimported_type)
6804 v = Var(name, type=var_type)
6805 v._fullname = fullname
6806 sym = SymbolTableNode(GDEF, v)
6807 elif sym.module_hidden:
6808 sym = None
6809 return sym
6810
6811 def is_visible_import(self, base_id: str, id: str) -> bool:
6812 # TODO: can we reuse SCC-level tracking from build.py instead?

Callers 2

visit_member_exprMethod · 0.95
lookup_qualifiedMethod · 0.95

Calls 9

is_visible_importMethod · 0.95
record_incomplete_refMethod · 0.95
create_getattr_varMethod · 0.95
is_missing_moduleMethod · 0.95
SymbolTableNodeClass · 0.90
AnyTypeClass · 0.90
VarClass · 0.90
getMethod · 0.45

Tested by

no test coverage detected