diff --git a/rope/base/ast.py b/rope/base/ast.py index afdeb95f5..a2923fb9f 100644 --- a/rope/base/ast.py +++ b/rope/base/ast.py @@ -22,17 +22,12 @@ def parse(source, filename=""): raise error -def walk(node, walker) -> None: +def walk(node, walker): """Walk the syntax tree""" method_name = "_" + node.__class__.__name__ method = getattr(walker, method_name, None) if method is not None: - if isinstance(node, ast.ImportFrom) and node.module is None: - # In python < 2.7 ``node.module == ''`` for relative imports - # but for python 2.7 it is None. Generalizing it to ''. - node.module = "" - method(node) - return + return method(node) for child in get_child_nodes(node): walk(child, walker) diff --git a/rope/base/pynames.py b/rope/base/pynames.py index e15af4714..45fb2d030 100644 --- a/rope/base/pynames.py +++ b/rope/base/pynames.py @@ -114,7 +114,8 @@ def _get_pymodule(self): pycore = self.importing_module.pycore if self.resource is not None: self.pymodule.set(pycore.project.get_pymodule(self.resource)) - elif self.module_name is not None: + else: + assert isinstance(self.module_name, str) try: if self.level == 0: pymodule = pycore.project.get_module( diff --git a/rope/base/pyobjectsdef.py b/rope/base/pyobjectsdef.py index 9069dab0c..abab073ed 100644 --- a/rope/base/pyobjectsdef.py +++ b/rope/base/pyobjectsdef.py @@ -531,7 +531,11 @@ def _ImportFrom(self, node): level = 0 if node.level: level = node.level - imported_module = pynames.ImportedModule(self.get_module(), node.module, level) + imported_module = pynames.ImportedModule( + self.get_module(), + node.module or "", + level, + ) if self._is_ignored_import(imported_module): return if len(node.names) == 1 and node.names[0].name == "*": diff --git a/rope/refactor/patchedast.py b/rope/refactor/patchedast.py index cfcdc56a3..7ffa8de87 100644 --- a/rope/refactor/patchedast.py +++ b/rope/refactor/patchedast.py @@ -522,7 +522,6 @@ def _ImportFrom(self, node): children = ["from"] if node.level: children.append("." * node.level) - # see comment at rope.base.ast.walk children.extend([node.module or "", "import"]) children.extend(self._child_nodes(node.names, ",")) self._handle(node, children)