예제 #1
0
def show_ast(tree):
    if rich_output():
        import showast  # We can import showast only when in a notebook
        return showast.show_ast(tree)
    else:
        import ast  # Textual alternative
        print(ast.dump(tree))
예제 #2
0
def show_ast(tree: AST) -> Optional[Any]:
    if rich_output():
        import showast  # We can import showast only when in a notebook
        return showast.show_ast(tree)
    else:
        import ast  # Textual alternative111
        print(ast.dump(tree))
        return None
예제 #3
0
    xy_ast = ast.parse('x+y')

from .bookutils import rich_output

if __name__ == '__main__':
    if rich_output():
        # Normally, this will do
        from showast import show_ast
    else:

        def show_ast(tree):
            ast.dump(tree, indent=4)


if __name__ == '__main__':
    show_ast(xy_ast)

if __name__ == '__main__':
    xy_ast

if __name__ == '__main__':
    xy_ast.body[0]

if __name__ == '__main__':
    xy_ast.body[0].value  # type: ignore


def get_expression(src):
    return ast.parse(src).body[0].value

예제 #4
0
if __name__ == '__main__':
    print_content(my_sqrt_source, '.py')

if __name__ == '__main__':
    my_sqrt_ast = ast.parse(my_sqrt_source)

if __name__ == '__main__':
    print(ast.dump(my_sqrt_ast, indent=4))

from .bookutils import rich_output

if __name__ == '__main__':
    if rich_output():
        import showast
        showast.show_ast(my_sqrt_ast)

if __name__ == '__main__':
    print_content(ast.unparse(my_sqrt_ast), '.py')

### Annotating Functions with Given Types

if __name__ == '__main__':
    print('\n### Annotating Functions with Given Types')



def parse_type(name):
    class ValueVisitor(ast.NodeVisitor):
        def visit_Expr(self, node):
            self.value_node = node.value
예제 #5
0
if __name__ == "__main__":
    triangle_ast = ast.parse(triangle_source)

if __name__ == "__main__":
    print(astor.dump_tree(triangle_ast))

if __package__ is None or __package__ == "":
    from fuzzingbook_utils import rich_output
else:
    from .fuzzingbook_utils import rich_output

if __name__ == "__main__":
    if rich_output():
        import showast
        showast.show_ast(triangle_ast)

if __name__ == "__main__":
    print_content(astor.to_source(triangle_ast), '.py')

# ## A Simple Mutator for Functions

if __name__ == "__main__":
    print('\n## A Simple Mutator for Functions')


class MuFunctionAnalyzer:
    def __init__(self, fn, log=False):
        self.fn = fn
        self.name = fn.__name__
        src = inspect.getsource(fn)
    from .bookutils import rich_output

if __name__ == "__main__":
    if rich_output():
        from showast import show_ast
    else:

        def show_ast(tree):
            ast.dump(tree)


if __name__ == "__main__":
    tree = ast.parse(source)

if __name__ == "__main__":
    show_ast(tree)

from ast import NodeTransformer, FunctionDef, fix_missing_locations

if __name__ == "__main__":
    subtree_to_be_injected = ast.parse("print('entering function')")

if __name__ == "__main__":
    show_ast(subtree_to_be_injected)

if __name__ == "__main__":
    subtree_to_be_injected = subtree_to_be_injected.body[0]


class InjectPass(NodeTransformer):
    def visit_FunctionDef(self, node):
if __package__ is None or __package__ == "":
    from bookutils import rich_output
else:
    from .bookutils import rich_output

if __name__ == "__main__":
    if rich_output():
        from showast import show_ast
    else:

        def show_ast(tree):
            ast.dump(tree)


if __name__ == "__main__":
    show_ast(fun_tree)

if __name__ == "__main__":
    test_source = (
        '''if remove_html_markup('<foo>bar</foo>') != 'bar':\n''' +
        '''    raise RuntimeError("Missing functionality")\n''' +
        '''assert remove_html_markup('"foo"') == '"foo"', "My Test"''')

if __name__ == "__main__":
    test_tree = ast.parse(test_source)

if __name__ == "__main__":
    print_content(astor.to_source(test_tree), '.py')

import copy