|
|
|
@ -369,13 +369,14 @@ def ast_to_func(ast_root, dyfunc, delete_on_exit=True):
|
|
|
|
|
function, the other inner functions are invisible for the decorated function.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def remove_file(filepath):
|
|
|
|
|
def remove_if_exit(filepath):
|
|
|
|
|
if os.path.exists(filepath):
|
|
|
|
|
os.remove(filepath)
|
|
|
|
|
|
|
|
|
|
source = ast_to_source_code(ast_root)
|
|
|
|
|
import_fluid = "import paddle.fluid as fluid\n"
|
|
|
|
|
source = import_fluid + source
|
|
|
|
|
|
|
|
|
|
if six.PY2:
|
|
|
|
|
source = source.encode('utf-8')
|
|
|
|
|
f = tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False)
|
|
|
|
@ -387,8 +388,8 @@ def ast_to_func(ast_root, dyfunc, delete_on_exit=True):
|
|
|
|
|
f.write(source)
|
|
|
|
|
|
|
|
|
|
if delete_on_exit:
|
|
|
|
|
atexit.register(lambda: remove_file(f.name))
|
|
|
|
|
atexit.register(lambda: remove_file(f.name[:-3] + ".pyc"))
|
|
|
|
|
atexit.register(lambda: remove_if_exit(f.name))
|
|
|
|
|
atexit.register(lambda: remove_if_exit(f.name[:-3] + ".pyc"))
|
|
|
|
|
|
|
|
|
|
module = imp.load_source(module_name, f.name)
|
|
|
|
|
func_name = dyfunc.__name__
|
|
|
|
|