Exemple #1
0
 def modify_attr(attr: ast.Attribute) -> None:
     if (
         isinstance(attr.value, ast.UnaryOp)
         and isinstance(attr.value.op, ast.Invert)
         and isinstance(attr.value.operand, (ast.Constant, ast.JoinedStr))
     ):
         attr.value = ast.Call(
             func=ast.Name(id='run_shell', ctx=ast.Load()),
             args=[attr.value.operand],
             keywords=[]
         )
Exemple #2
0
    def visit_Attribute(self, node: ast.Attribute) -> Any:
        if type(node.value) == ast.Attribute:
            node.value = self.visit(node.value)
            return node

        if node.value.id != 'self':
            return node

        node.value.id = '__STORAGE__'

        return node
Exemple #3
0
 def visit_Attribute(self, attr: ast.Attribute) -> ast.Attribute:
     attr.value = self.modify_expr(attr.value)
     super().generic_visit(attr)
     return attr