diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -1255,7 +1255,7 @@ sys.exit(1) if INC_DIR: p = "%s/%s-ast.h" % (INC_DIR, mod.name) - f = open(p, "w") + f = open(p + ".tmp", "w") f.write(auto_gen_msg) f.write('#include "asdl.h"\n\n') c = ChainOfVisitors(TypeDefVisitor(f), @@ -1267,10 +1267,11 @@ f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n") f.write("int PyAST_Check(PyObject* obj);\n") f.close() + os.rename(p + ".tmp", p) if SRC_DIR: p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c") - f = open(p, "w") + f = open(p + ".tmp", "w") f.write(auto_gen_msg) f.write('#include \n') f.write('\n') @@ -1290,6 +1291,7 @@ ) v.visit(mod) f.close() + os.rename(p + ".tmp", p) if __name__ == "__main__": import sys