remove ast.__version__ (closes #12273)
diff --git a/Doc/library/ast.rst b/Doc/library/ast.rst
index 85081be..16de3ca 100644
--- a/Doc/library/ast.rst
+++ b/Doc/library/ast.rst
@@ -96,9 +96,6 @@
 Abstract Grammar
 ----------------
 
-The module defines a string constant ``__version__`` which is the Mercurial
-revision of the file shown below.
-
 The abstract grammar is currently defined as follows:
 
 .. literalinclude:: ../../Parser/Python.asdl
diff --git a/Lib/ast.py b/Lib/ast.py
index fb5adac..13f59f9 100644
--- a/Lib/ast.py
+++ b/Lib/ast.py
@@ -25,7 +25,6 @@
     :license: Python License.
 """
 from _ast import *
-from _ast import __version__
 
 
 def parse(source, filename='<unknown>', mode='exec'):
diff --git a/Misc/NEWS b/Misc/NEWS
index e75de01..dd40d40 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
 Core and Builtins
 -----------------
 
+- Issue #12273: Remove ast.__version__. AST changes can be accounted for by
+  checking sys.version_info or sys._mercurial.
+
 - Issue #11627: Fix segfault when __new__ on a exception returns a non-exception
   class.
 
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index cdce5a3..22ef3d0 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -900,10 +900,6 @@
         self.emit('if (PyDict_SetItemString(d, "AST", (PyObject*)&AST_type) < 0) return NULL;', 1)
         self.emit('if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)', 1)
         self.emit("return NULL;", 2)
-        # Value of version: "$Revision$"
-        self.emit('if (PyModule_AddStringConstant(m, "__version__", "%s") < 0)'
-                % (mod.version,), 1)
-        self.emit("return NULL;", 2)
         for dfn in mod.dfns:
             self.visit(dfn)
         self.emit("return m;", 1)
@@ -1124,29 +1120,6 @@
 
 common_msg = "/* File automatically generated by %s. */\n\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 get_file_revision(f):
-    """Fish out the last change to a file in hg."""
-    args = ["hg", "log", "--template", "{node|short}", "--limit", "1", f]
-    p = subprocess.Popen(args, stdout=subprocess.PIPE)
-    out = p.communicate()[0]
-    if p.returncode:
-        print >> sys.stderr, "error return code from hg"
-        sys.exit(1)
-    return out
-
-
 def main(srcfile):
     argv0 = sys.argv[0]
     components = argv0.split(os.sep)
@@ -1155,7 +1128,6 @@
     mod = asdl.parse(srcfile)
     if not asdl.check(mod):
         sys.exit(1)
-    mod.version = get_file_revision(srcfile)
     if INC_DIR:
         p = "%s/%s-ast.h" % (INC_DIR, mod.name)
         f = open(p, "w")
@@ -1175,7 +1147,6 @@
         p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")
         f = open(p, "w")
         f.write(auto_gen_msg)
-        f.write(c_file_msg % (mod.version,))
         f.write('#include "Python.h"\n')
         f.write('#include "%s-ast.h"\n' % mod.name)
         f.write('\n')
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index b597626..96c6bf8 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -1,14 +1,5 @@
 /* File automatically generated by Parser/asdl_c.py. */
 
-
-/*
-   __version__ e0e663132363.
-
-   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"
 
@@ -6750,8 +6741,6 @@
             NULL;
         if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
                 return NULL;
-        if (PyModule_AddStringConstant(m, "__version__", "e0e663132363") < 0)
-                return NULL;
         if (PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return
             NULL;
         if (PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0)