message: Do not assume Attribute nodes always have a QN - it may be missing for attributes of dynamic objects, like function calls.
diff: @@ -84,7 +84,10 @@ class SymbolRenamer(gast.NodeTransformer):
  return self._process(node)
  def visit_Attribute(self, node):
  + if anno.hasanno(node, anno.Basic.QN):
  return self._process(node)
  + # Attributes of dynamic objects will not have a QN.
  + return self.generic_visit(node)
  def rename_symbols(node, name_map):
  