Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PR: move special case from walk to _ScopeVisitor._ImportFrom #538

Merged
merged 8 commits into from Nov 29, 2022
9 changes: 2 additions & 7 deletions rope/base/ast.py
Expand Up @@ -22,17 +22,12 @@ def parse(source, filename="<string>"):
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)

Expand Down
3 changes: 2 additions & 1 deletion rope/base/pynames.py
Expand Up @@ -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(
Expand Down
6 changes: 5 additions & 1 deletion rope/base/pyobjectsdef.py
Expand Up @@ -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 == "*":
Expand Down
1 change: 0 additions & 1 deletion rope/refactor/patchedast.py
Expand Up @@ -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)
Expand Down