예제 #1
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
예제 #2
0
 def visit_Assign(self, node: Assign) -> Any:
     # if assigning to autogenerated variable
     if len(node.targets) == 1 and node.targets[0].id.startswith(  # type:ignore
         self.context.prefix
     ):
         node.value = self.replace_with_call(node.value)  # type: ignore
     return node
예제 #3
0
파일: zx.py 프로젝트: P3t3rp4rk3r/zxpy
    def visit_Assign(self, assign: ast.Assign) -> ast.Assign:
        if isinstance(assign.value, ast.expr):
            expr = ast.Expr(assign.value)
            self.modify_expr(expr)
            assign.value = expr.value

        return assign
예제 #4
0
    def visit_Assign(self, node: ast.Assign) -> ast.Assign:
        self.found = False
        self.generic_visit(node)
        if self.found:
            node.value = self.do_placeholder(node.value)

        return node
예제 #5
0
 def visit_Assign(self, node: ast.Assign) -> ast.Assign:
     if len(node.targets) == 1:
         target = node.targets[0]
         if isinstance(target, ast.Name):
             key = target.id
             if key in self.mutations:
                 node.value = self.mutations[key]
                 self._used_mutations.remove(key)
     return node
예제 #6
0
파일: zx.py 프로젝트: tusharsadhwani/zxpy
    def visit_Assign(self, assign: ast.Assign) -> ast.Assign:
        assign.value = self.modify_expr(
            assign.value,
            return_stderr_and_returncode=isinstance(assign.targets[0],
                                                    ast.Tuple),
        )

        super().generic_visit(assign)
        return assign
예제 #7
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
예제 #8
0
        def visit_Assign(self, node: ast.Assign) -> ast.AST:
            """
            For nodes: replace with static value
            """

            if node in node_to_param:
                params = node_to_param[node]
                node.value = params.to_ast_node(
                    lineno=node.value.lineno, col_offset=node.value.col_offset)
                return node
            elif isinstance(node.value,
                            ast.Call) and len(node.value.keywords) > 0:
                new_keywords = []
                for keyword in node.value.keywords:
                    for n, p in node_to_param.items():
                        if n.value == keyword.value:
                            keyword.value = p.to_ast_node(
                                lineno=keyword.value.lineno,
                                col_offset=keyword.value.col_offset)
                    new_keywords.append(keyword)
                node.value.keywords = new_keywords
                return node
            else:
                return node