From 0db62aaf0987db16fc36d3331786168a70ccda8b Mon Sep 17 00:00:00 2001
From: Brett Cannon <bcannon@gmail.com>
Date: Mon, 12 Feb 2007 03:51:02 +0000
Subject: Modify Parser/asdl_c.py so that the __version__ number for
 Python/Python-ast.c is specified at the top of the file.  Also add a note
 that Python/Python-ast.c needs to be committed separately after a change to
 the AST grammar to capture the revision number of the change (which is what
 __version__ is set to).

---
 Include/Python-ast.h |  2 +-
 Parser/asdl_c.py     | 21 +++++++++++++++++++--
 Python/Python-ast.c  | 11 ++++++++++-
 3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/Include/Python-ast.h b/Include/Python-ast.h
index 5d4147b..8b395a8 100644
--- a/Include/Python-ast.h
+++ b/Include/Python-ast.h
@@ -1,4 +1,4 @@
-/* File automatically generated by Parser/asdl_c.py */
+/* File automatically generated by Parser/asdl_c.py. */
 
 #include "asdl.h"
 
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index 4d330a3..14859ee 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -525,6 +525,9 @@ static PyObject* ast2obj_int(bool b)
                              (cons.name, cons.name), 1)
             self.emit("if (!%s_singleton) return 0;" % cons.name, 1)
 
+def parse_version(mod):
+    return mod.version.value[12:-3]
+
 class ASTModuleVisitor(PickleVisitor):
 
     def visitModule(self, mod):
@@ -540,7 +543,8 @@ class ASTModuleVisitor(PickleVisitor):
         self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
         self.emit("return;", 2)
         # Value of version: "$Revision$"
-        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)' % mod.version.value[12:-3], 1)
+        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
+                % parse_version(mod), 1)
         self.emit("return;", 2)
         for dfn in mod.dfns:
             self.visit(dfn)
@@ -721,11 +725,23 @@ class ChainOfVisitors:
             v.visit(object)
             v.emit("", 0)
 
+common_msg = "/* File automatically generated by %s. */\n"
+
+c_file_msg = """
+/*
+   __version__ %s.
+
+   This module must be committed separately after each AST grammar change;
+   The __version__ number is set to the revision number of the commit
+   containing the grammar change.
+*/
+"""
+
 def main(srcfile):
     argv0 = sys.argv[0]
     components = argv0.split(os.sep)
     argv0 = os.sep.join(components[-2:])
-    auto_gen_msg = '/* File automatically generated by %s */\n' % argv0
+    auto_gen_msg = common_msg % argv0
     mod = asdl.parse(srcfile)
     if not asdl.check(mod):
         sys.exit(1)
@@ -746,6 +762,7 @@ def main(srcfile):
         p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
         f = open(p, "wb")
         print >> f, auto_gen_msg
+        print >> f, c_file_msg % parse_version(mod)
         print >> f, '#include "Python.h"'
         print >> f, '#include "%s-ast.h"' % mod.name
         print >> f
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index a02303d..46a1817 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -1,4 +1,13 @@
-/* File automatically generated by Parser/asdl_c.py */
+/* File automatically generated by Parser/asdl_c.py. */
+
+
+/*
+   __version__ 53731.
+
+   This module must be committed separately after each AST grammar change;
+   The __version__ number is set to the revision number of the commit
+   containing the grammar change.
+*/
 
 #include "Python.h"
 #include "Python-ast.h"
-- 
cgit v0.12

