def get_attribute_name(node, import_aliases=None):
import_aliases = import_aliases or {}
if not isinstance(node, ast.Attribute):
raise ValueError('node must be an instance of ast.Attribute')
base = node.attr
name = ''
node = node.value
while isinstance(node, ast.Attribute):
name = node.attr + '.' + name
node = node.value
if isinstance(node, (ast.Call, ast.Subscript)):
return None
if not isinstance(node, ast.Name):
raise ValueError('could not resolve node for attribute')
name = (node.id + '.' + name)[:-1]
return import_aliases.get(name, name) + '.' + base
评论列表
文章目录