def test_to_function_with_inline_types(self) -> None: """ Tests that `function` can generate a function_def with inline types """ function_def = deepcopy( next( filter( rpartial(isinstance, FunctionDef), class_with_method_types_ast.body ) ) ) function_name = function_def.name function_type = get_function_type(function_def) gen_ast = emit.function( intermediate_repr=parse.function( function_def=function_def, function_name=function_name, function_type=function_type, ), function_name=function_name, function_type=function_type, emit_default_doc=False, inline_types=True, emit_separating_tab=True, indent_level=1, emit_as_kwonlyargs=False, ) # emit.file(gen_ast, os.path.join(os.path.dirname(__file__), 'delme.py'), mode='wt') run_ast_test( self, gen_ast=gen_ast, gold=function_def, )
def test_to_function_emit_as_kwonlyargs(self) -> None: """ Tests whether `function` produces method with keyword only arguments """ function_def = deepcopy( next( filter( rpartial(isinstance, FunctionDef), ast.parse(class_with_method_types_str.replace("self", "self, *")) .body[0] .body, ) ) ) # Reindent docstring function_def.body[0].value.value = "\n{tab}{docstring}\n{tab}".format( tab=tab, docstring=reindent( deindent(ast.get_docstring(function_def)), ), ) function_name = function_def.name function_type = get_function_type(function_def) gen_ast = emit.function( parse.docstring(docstring_str), function_name=function_name, function_type=function_type, emit_default_doc=False, inline_types=True, emit_separating_tab=PY3_8, indent_level=0, emit_as_kwonlyargs=True, ) gen_ast.body[0].value.value = "\n{tab}{docstring}".format( tab=tab, docstring=reindent(deindent(ast.get_docstring(gen_ast))) ) run_ast_test( self, gen_ast=gen_ast, gold=function_def, )
def test_to_function(self) -> None: """ Tests whether `function` produces method from `class_with_method_types_ast` given `docstring_str` """ function_def = deepcopy( next( filter( rpartial(isinstance, FunctionDef), class_with_method_types_ast.body ) ) ) # Reindent docstring function_def.body[0].value.value = "\n{tab}{docstring}\n{tab}".format( tab=tab, docstring=reindent( deindent(ast.get_docstring(function_def).translate("\n\t")), ), ) function_name = function_def.name function_type = get_function_type(function_def) gen_ast = emit.function( parse.docstring(docstring_str), function_name=function_name, function_type=function_type, emit_default_doc=False, inline_types=True, emit_separating_tab=PY3_8, indent_level=0, emit_as_kwonlyargs=False, ) gen_ast.body[0].value.value = "\n{tab}{docstring}".format( tab=tab, docstring=reindent(deindent(ast.get_docstring(gen_ast))) ) run_ast_test( self, gen_ast=gen_ast, gold=function_def, )
def test_to_function_with_docstring_types(self) -> None: """ Tests that `function` can generate a function_def with types in docstring """ # Sanity check run_ast_test( self, class_with_method_ast, gold=ast.parse(class_with_method_str).body[0], ) function_def = deepcopy( next(filter(rpartial(isinstance, FunctionDef), class_with_method_ast.body)) ) # Reindent docstring function_def.body[0].value.value = "\n{tab}{docstring}\n{tab}".format( tab=tab, docstring=reindent(ast.get_docstring(function_def)) ) ir = parse.function(function_def) gen_ast = emit.function( ir, function_name=function_def.name, function_type=get_function_type(function_def), emit_default_doc=False, inline_types=False, indent_level=1, emit_separating_tab=True, emit_as_kwonlyargs=False, ) gen_ast.body[0].value.value = "\n{tab}{docstring}\n{tab}".format( tab=tab, docstring=reindent(ast.get_docstring(gen_ast)) ) run_ast_test( self, gen_ast=gen_ast, gold=function_def, )
def test_from_class_with_body_in_method_to_method_with_body(self) -> None: """ Tests if this can make the roundtrip from a full function to a full function """ annotate_ancestry(class_with_method_and_body_types_ast) function_def = next( filter( rpartial(isinstance, FunctionDef), class_with_method_and_body_types_ast.body, ) ) # Reindent docstring function_def.body[0].value.value = "\n{tab}{docstring}\n{tab}".format( tab=tab, docstring=reindent(ast.get_docstring(function_def)) ) ir = parse.function( find_in_ast( "C.function_name".split("."), class_with_method_and_body_types_ast, ), ) gen_ast = emit.function( ir, emit_default_doc=False, function_name="function_name", function_type="self", indent_level=1, emit_separating_tab=True, emit_as_kwonlyargs=False, ) # emit.file(gen_ast, os.path.join(os.path.dirname(__file__), "delme.py"), mode="wt") run_ast_test( self, gen_ast=gen_ast, gold=function_def, )