def visit_mypy_file(self, o: MypyFile) -> None: with self.scope.module_scope(o.fullname): self.is_package_init_file = o.is_package_init_file() self.add_type_alias_deps(self.scope.current_target()) for trigger, targets in o.plugin_deps.items(): self.map.setdefault(trigger, set()).update(targets) super().visit_mypy_file(o)
def visit_mypy_file(self, o: MypyFile) -> None: self.scope.enter_file(o.fullname()) self.is_package_init_file = o.is_package_init_file() if o in self.alias_deps: for alias in self.alias_deps[o]: self.add_dependency(make_trigger(alias)) super().visit_mypy_file(o) self.scope.leave()
def visit_mypy_file(self, o: MypyFile) -> None: self.scope.enter_file(o.fullname()) self.is_package_init_file = o.is_package_init_file() self.add_type_alias_deps(self.scope.current_target()) for trigger, targets in o.plugin_deps.items(): self.map.setdefault(trigger, set()).update(targets) super().visit_mypy_file(o) self.scope.leave()
def create_indirect_imported_name( file_node: MypyFile, module: str, relative: int, imported_name: str) -> Optional[SymbolTableNode]: """Create symbol table entry for a name imported from another module. These entries act as indirect references. """ target_module, ok = correct_relative_import( file_node.fullname, relative, module, file_node.is_package_init_file()) if not ok: return None target_name = '%s.%s' % (target_module, imported_name) link = ImportedName(target_name) # Use GDEF since this refers to a module-level definition. return SymbolTableNode(GDEF, link)
def create_indirect_imported_name(file_node: MypyFile, module: str, relative: int, imported_name: str) -> Optional[SymbolTableNode]: """Create symbol table entry for a name imported from another module. These entries act as indirect references. """ target_module, ok = correct_relative_import( file_node.fullname(), relative, module, file_node.is_package_init_file()) if not ok: return None target_name = '%s.%s' % (target_module, imported_name) link = ImportedName(target_name) # Use GDEF since this refers to a module-level definition. return SymbolTableNode(GDEF, link)
def visit_mypy_file(self, o: MypyFile) -> None: self.scope.enter_file(o.fullname()) self.is_package_init_file = o.is_package_init_file() self.add_type_alias_deps(self.scope.current_target()) super().visit_mypy_file(o) self.scope.leave()
def visit_mypy_file(self, o: MypyFile) -> None: self.scope.enter_file(o.fullname()) self.is_package_init_file = o.is_package_init_file() super().visit_mypy_file(o) self.scope.leave()
def find_import_name(import_node, line, column, suite, mypy_file: MypyFile): assert suite[0] == symbol.file_input stmt = suite[1] assert stmt[0] == symbol.stmt simple_stmt = stmt[1] assert simple_stmt[0] == symbol.simple_stmt small_stmt = simple_stmt[1] assert small_stmt[0] == symbol.small_stmt import_stmt = small_stmt[1] assert import_stmt[0] == symbol.import_stmt if isinstance(import_node, Import): import_name = import_stmt[1] assert import_name[0] == symbol.import_name dotted_as_names = import_name[2] for dotted_as_name in dotted_as_names[1:]: if dotted_as_name[0] != symbol.dotted_as_name: continue dotted_name = dotted_as_name[1] name = get_dotted_name_at_position(dotted_name, line, column) if name: return name, None elif isinstance(import_node, ImportAll): import_from = import_stmt[1] assert import_from[0] == symbol.import_from for element in import_from[2:]: if element[0] == token.NAME and element[1] == 'import': break elif element[0] == symbol.dotted_name: name = get_dotted_name_at_position(element, line, column) if name: import_id, ok = correct_relative_import( mypy_file.fullname(), import_node.relative, name, mypy_file.is_package_init_file()) if ok: return import_id, None elif isinstance(import_node, ImportFrom): import_from = import_stmt[1] assert import_from[0] == symbol.import_from import_as_names = None for element in import_from[2:]: if element[0] == symbol.dotted_name: name = get_dotted_name_at_position(element, line, column) if name: import_id, ok = correct_relative_import( mypy_file.fullname(), import_node.relative, name, mypy_file.is_package_init_file()) if ok: return import_id, None elif element[0] == symbol.import_as_names: for import_as_name in element[1:]: if import_as_name[0] == symbol.import_as_name: name = import_as_name[1] assert name[0] == token.NAME if token_contains_offset(name[2], name[3], len(name[1]), line, column): import_id, ok = correct_relative_import( mypy_file.fullname(), import_node.relative, import_node.id, mypy_file.is_package_init_file()) if ok: return import_id, name[1] return None, None