в каких случаях 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

Ответы (0 шт):