def from_ast(node: ast.AST, old_object, file: str = None):
"""
:param node:
:param old_object:
:return:
"""
if isinstance(old_object, types.CodeType):
compiler = ast_to_code
elif isinstance(old_object, types.ModuleType):
compiler = ast_to_module
elif isinstance(old_object, types.FunctionType):
compiler = ast_to_func
elif isinstance(old_object, types.MethodType):
compiler = ast_to_method
elif isinstance(old_object, str):
compiler = ast_to_source
elif isinstance(old_object, type):
compiler = ast_to_class
elif isinstance(old_object, ast.AST):
compiler = ast_to_node
elif old_object:
raise TypeError('Unexpected type for node: {}'.format(str(type(node))))
else:
raise ValueError('Not specified value')
result = compiler(node, old_object, file=file)
return result
评论列表
文章目录