Beispiel #1
0
def main(infilename, outfilename):
    node = ast.parse(open(infilename).read())
    node = transformers.ParentChildNodeTransformer().visit(node)
    visitor = visitors.GraphNodeVisitor()
    visitor.visit(node)
    visitor.graph.write_png(outfilename)
    os.system('open ' + outfilename)
Beispiel #2
0
    def test_does_not_have_edge(self, visitor):
        node = transformers.ParentChildNodeTransformer().visit(
            ast.parse('x = 1'))

        visitor.visit(node)

        assert not visitor.graph.get_edge(str(node), str(node.body[0].value))
Beispiel #3
0
 def labelize(self, src):
     """
     replace x + 1
     with    egt_v['x:1'] + 1
     """
     node = ast.parse(src)
     value = transformers.ParentChildNodeTransformer().visit(node)
     return astunparse.unparse(self.name_trans.visit(value)).strip()
Beispiel #4
0
def ast_playing(source_code):
    node = ast.parse(source_code)
    node = transformers.ParentChildNodeTransformer().visit(node)
    visitor = visitors.GraphNodeVisitor()
    visitor.visit(node)
    for n in ast.walk(node):
        print(type(n))
    visitor.graph.write_png('graph_1.png')
Beispiel #5
0
    def test_multi_parents_node_label(self, visitor):
        node = transformers.ParentChildNodeTransformer().visit(
            ast.parse('x = 1\nx = 2'))

        visitor.visit(node)

        dot_node = visitor.graph.get_node(str(node.body[0].targets[0]))[0]
        assert dot_node.get_label() == "ast.Name(id='x', ctx=ast.Store())"
Beispiel #6
0
    def test_edge_label(self, visitor):
        node = transformers.ParentChildNodeTransformer().visit(
            ast.parse('x = 1'))

        visitor.visit(node)

        dot_edge = visitor.graph.get_edge(str(node), str(node.body[0]))[0]
        assert dot_edge.get_label() == 'body[0]'
Beispiel #7
0
    def test_node_label(self, visitor):
        node = transformers.ParentChildNodeTransformer().visit(
            ast.parse('x = 1'))

        visitor.visit(node)

        dot_node = visitor.graph.get_node(str(node.body[0].value))[0]
        assert dot_node.get_label() == 'ast.Num(n=1)'
 def dump_ast(mod, name):
     if IMPORT_ASTMONKEY:
         mod = deepcopy(mod)
         mod = transformers.ParentChildNodeTransformer().visit(deepcopy(mod))
         visitor = visitors.GraphNodeVisitor()
         visitor.visit(mod)
         visitor.graph.write_png(name + '.png')
         print("\033[1;32;40mAST visualization saved as \033[94m%s.png\033[0m" % name)
     else:
         print("\033[93mInstall astmonkey for visualization.\033[0m")
    def extract_wir(self) -> networkx.DiGraph:
        """
        Extract the WIR
        """
        enriched_ast = transformers.ParentChildNodeTransformer().visit(
            self.ast_root)
        assert isinstance(enriched_ast, ast.Module)
        self.process_node(enriched_ast)

        return self.graph
def main():
    code = ''
    for line in sys.stdin:
        code += line
        print(line)
    node = ast.parse(code)
    node = transformers.ParentChildNodeTransformer().visit(node)
    visitor = visitors.GraphNodeVisitor()
    visitor.visit(node)

    visitor.graph.write_png('src/main/resources/graph.png')
Beispiel #11
0
    def test_node_label(self, visitor):
        node = transformers.ParentChildNodeTransformer().visit(
            ast.parse('x = 1'))

        visitor.visit(node)

        dot_node = visitor.graph.get_node(str(node.body[0].value))[0]
        if sys.version_info >= (3, 8):
            assert dot_node.get_label() == 'ast.Constant(value=1, kind=None)'
        else:
            assert dot_node.get_label() == 'ast.Num(n=1)'
import ast
from astmonkey import utils, transformers

node = ast.parse('def foo(x):\n\t"""doc"""')
node = transformers.ParentChildNodeTransformer().visit(node)

docstring_node = node.body[0].body[0].value
assert (not utils.is_docstring(node))
assert (utils.is_docstring(docstring_node))
Beispiel #13
0
 def transformer(self):
     return transformers.ParentChildNodeTransformer()
Beispiel #14
0
    def test_non_docstring_node(self):
        node = transformers.ParentChildNodeTransformer().visit(ast.parse(''))

        assert not utils.is_docstring(node)
Beispiel #15
0
    def test_class_docstring_node(self):
        node = transformers.ParentChildNodeTransformer().visit(ast.parse('class X:\n\t"""doc"""'))

        assert utils.is_docstring(node.body[0].body[0].value)