Skip to content

Commit

Permalink
Merge pull request #538 from edreamleo/ekr-walk-special-case
Browse files Browse the repository at this point in the history
PR: move special case from walk to _ScopeVisitor._ImportFrom
  • Loading branch information
lieryan committed Nov 29, 2022
2 parents 806e7d2 + 2f380ec commit 6354019
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 10 deletions.
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

0 comments on commit 6354019

Please sign in to comment.