Esempio n. 1
0
    def visit_Assign(self, node: ast.Assign):
        if not isinstance(node.value, (ast.List, ast.Tuple)):
            return self.generic_visit(node)

        new_targets = []
        for target in node.targets:
            new_targets.append(self.visit(target))
        node.targets = cast('List[ast.expr]', new_targets)
        replacement_literal = ast.Call(func=ast.Name(self.literal_tracer,
                                                     ast.Load()),
                                       args=[node.value],
                                       keywords=[])
        ast.copy_location(node.value, replacement_literal)
        node.value = replacement_literal
        return node
Esempio n. 2
0
 def visit_Assign(self, node: ast.Assign):
     new_targets = []
     for target in node.targets:
         new_targets.append(self.visit(target))
     node.targets = new_targets
     orig_value_id = id(node.value)
     with fast.location_of(node.value):
         node.value = self._make_tuple_event_for(
             self.visit(node.value), TraceEvent.before_assign_rhs, orig_node_id=orig_value_id
         )
         node.value = fast.Call(
             func=self._emitter_ast(),
             args=[TraceEvent.after_assign_rhs.to_ast(), self._get_copy_id_ast(orig_value_id)],
             keywords=fast.kwargs(ret=node.value),
         )
     return node