cutcutcodec.core.compilation.graph_to_ast

Compile an assembly graph into an evaluable source code of tree.

Functions

graph_to_ast(graph)

Create the complete source code module from the assembly graph.

Details

cutcutcodec.core.compilation.graph_to_ast.graph_to_ast(graph: MultiDiGraph) Module[source]

Create the complete source code module from the assembly graph.

Parameters

graphnetworkx.MultiDiGraph

The assembly graph.

Returns

moduleast.Module

The syntaxical graph of an equivalent code. The function get_complete_tree returns the graph.

Examples

>>> import ast
>>> from cutcutcodec.core.classes.container import ContainerOutput
>>> from cutcutcodec.core.compilation.graph_to_ast import graph_to_ast
>>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph
>>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise
>>> graph = tree_to_graph(ContainerOutput(GeneratorAudioNoise(0).out_streams))
>>> graph_to_ast(graph)  
<ast.Module object at ...>
>>> print(ast.unparse(_))
"""Autogenerated project exportation script.

Creation: ...
Graph: MultiDiGraph with 2 nodes and 1 edges
"""
from cutcutcodec.core.classes.container import ContainerOutput
from cutcutcodec.core.classes.node import Node
from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise

def get_container_output_1(generator_audio_noise_1: Node) -> ContainerOutput:
    """Create the node 'container_output_1'."""
    container_output_1 = ContainerOutput.__new__(ContainerOutput)
    container_output_1.setstate([generator_audio_noise_1.out_streams[0]], state={})
    return container_output_1

def get_generator_audio_noise_1() -> GeneratorAudioNoise:
    """Create the node 'generator_audio_noise_1'."""
    generator_audio_noise_1 = GeneratorAudioNoise.__new__(GeneratorAudioNoise)
    generator_audio_noise_1.setstate([], state={'seed': 0.0, 'layout': 'stereo'})
    return generator_audio_noise_1

def get_complete_tree() -> ContainerOutput:
    """Retrive the complete assembly graph."""
    generator_audio_noise_1 = get_generator_audio_noise_1()
    container_output_1 = get_container_output_1(generator_audio_noise_1)
    return container_output_1
if __name__ == '__main__':
    get_complete_tree().write()
>>>