def to_code(e, recursive=True, arg_values=None, arg_types=None, partial_types=None, indentation=' '): """Return the equivalent of an entity in TensorFlow code. See `to_graph` for more details. Args: e: A Python entity. recursive: See to_graph. arg_values: See to_graph. arg_types: See to_graph. partial_types: See to_graph. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap( recursive=recursive, nocompile_decorators=(convert, graph_ready, convert_inline), partial_types=partial_types, api_module=tf_inspect.getmodule(to_graph)) conversion.entity_to_graph(e, conversion_map, arg_values, arg_types) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed(tuple( six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def to_code(e, recursive=True, arg_values=None, arg_types=None, partial_types=None, indentation=' '): """Return the equivalent of an entity in TensorFlow code. See `to_graph` for more details. Args: e: A Python entity. recursive: See to_graph. arg_values: See to_graph. arg_types: See to_graph. partial_types: See to_graph. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap( recursive=recursive, nocompile_decorators=(convert, graph_ready, convert_inline), partial_types=partial_types, api_module=tf_inspect.getmodule(to_graph)) conversion.entity_to_graph(e, conversion_map, arg_values, arg_types) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed( tuple(six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def to_code(o, recursive=True, arg_value_hints=None, partial_types=None, indentation=' '): """Return the equivalent of an entity in TensorFlow code. See `to_graph` for more details. Args: o: A Python function or class. recursive: Whether to recusrively convert any functions that the decorator function may call. arg_value_hints: A dict mapping parameter names to objects that can hint at the type of those parameters. partial_types: A set of types (e.g. classes) that will not be converted entirely. Calls to member functions for these types will be renamed independently. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap( recursive=recursive, nocompile_decorators=(convert, graph_ready, convert_inline), partial_types=partial_types) conversion.object_to_graph(o, conversion_map, arg_value_hints) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed( tuple(six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def test_ast_to_source(self): node = gast.If( test=gast.Num(1), body=[ gast.Assign( targets=[gast.Name('a', gast.Store(), None)], value=gast.Name('b', gast.Load(), None)) ], orelse=[ gast.Assign( targets=[gast.Name('a', gast.Store(), None)], value=gast.Str('c')) ]) self.assertEqual( textwrap.dedent(""" if 1: a = b else: a = 'c' """).strip(), compiler.ast_to_source(node, indentation=' ').strip())
def to_code(f, arg_value_hints=None, indentation=' '): """Return the equivalent of a function in TensorFlow code. Args: f: A Python function with arbitrary arguments and return values. arg_value_hints: A dict mapping parameter names to objects that can hint at the type of those parameters. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap() conversion.object_to_graph(f, conversion_map, arg_value_hints) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed( tuple(six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def to_code(f, arg_value_hints=None, indentation=' '): """Return the equivalent of a function in TensorFlow code. Args: f: A Python function with arbitrary arguments and return values. arg_value_hints: A dict mapping parameter names to objects that can hint at the type of those parameters. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap() conversion.object_to_graph(f, conversion_map, arg_value_hints) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed(tuple( six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def to_code(o, recursive=True, arg_value_hints=None, partial_types=None, indentation=' '): """Return the equivalent of an entity in TensorFlow code. See `to_graph` for more details. Args: o: A Python function or class. recursive: Whether to recusrively convert any functions that the decorator function may call. arg_value_hints: A dict mapping parameter names to objects that can hint at the type of those parameters. partial_types: A set of types (e.g. classes) that will not be converted entirely. Calls to member functions for these types will be renamed independently. indentation: String, when to use for each level of indentation. Returns: String. """ conversion_map = conversion.ConversionMap( recursive=recursive, nocompile_decorators=(convert, graph_ready, convert_inline), partial_types=partial_types) conversion.object_to_graph(o, conversion_map, arg_value_hints) imports = '\n'.join(config.COMPILED_IMPORT_STATEMENTS) code = '\n'.join( compiler.ast_to_source(dep, indentation) for dep in reversed(tuple( six.itervalues(conversion_map.dependency_cache)))) return imports + '\n\n' + code
def try_ast_to_source(node): try: return compiler.ast_to_source(node) except AssertionError: return '<could not convert AST to source>'