в каких случаях ast.fix_missing_locations() меняет дерево?
Я пытаюсь найти пример, в котором посещение наследника NodeTransformer будет отличаться от посещения наследника NodeTransformer и использования fix_missing_locations в дереве.
Вот пример из документации (который по какой-то причине не работает, т.е. дерево не меняется в зависимости от того, применяем мы fix_missing_locations или нет):
from ast import *
class RewriteName(NodeTransformer):
def visit_Name(self, node):
return Subscript(
value=Name(id='data', ctx=Load()),
slice=Constant(value=node.id),
ctx=node.ctx
)
tree = parse('foo', mode='eval')
new_tree = fix_missing_locations(RewriteName().visit(tree))
new_uncorrected_tree = RewriteName().visit(tree)
new_tree_str = dump(new_tree, include_attributes=True)
new_uncorrected_tree_str = dump(new_uncorrected_tree, include_attributes=True)
print(new_tree_str == new_uncorrected_tree_str) # True