Staging
v0.5.1
https://github.com/python/cpython
Revision 709b4c35cc6e6f5db58d9e440b5ca732b7fdb6a2 authored by R. David Murray on 11 February 2010, 00:25:17 UTC, committed by R. David Murray on 11 February 2010, 00:25:17 UTC
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78139 | r.david.murray | 2010-02-10 19:15:05 -0500 (Wed, 10 Feb 2010) | 15 lines

  Merged revisions 78137 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r78137 | r.david.murray | 2010-02-10 17:42:04 -0500 (Wed, 10 Feb 2010) | 8 lines

    Issue 7835:  Shelve's __del__ method calls its close method, and its
    close method refers to an identifier in the global module namespace.
    This means that when __del__ is called during interpreter shutdown (if,
    for example, the calling program still has a pointer to the shelf),
    sometimes that global identifier would wind up being None, causing
    mysterious 'ignored' exceptions.  This patch checks for the possible None
    value first before using the global, thus avoiding the error messages.
  ........
................
1 parent 5431928
Raw File
Tip revision: 709b4c35cc6e6f5db58d9e440b5ca732b7fdb6a2 authored by R. David Murray on 11 February 2010, 00:25:17 UTC
Merged revisions 78139 via svnmerge from
Tip revision: 709b4c3
keyword.py
#! /usr/bin/env python

"""Keywords (from "graminit.c")

This file is automatically generated; please don't muck it up!

To update the symbols in this file, 'cd' to the top directory of
the python source tree after building the interpreter and run:

    python Lib/keyword.py
"""

__all__ = ["iskeyword", "kwlist"]

kwlist = [
#--start keywords--
        'False',
        'None',
        'True',
        'and',
        'as',
        'assert',
        'break',
        'class',
        'continue',
        'def',
        'del',
        'elif',
        'else',
        'except',
        'finally',
        'for',
        'from',
        'global',
        'if',
        'import',
        'in',
        'is',
        'lambda',
        'nonlocal',
        'not',
        'or',
        'pass',
        'raise',
        'return',
        'try',
        'while',
        'with',
        'yield',
#--end keywords--
        ]

iskeyword = frozenset(kwlist).__contains__

def main():
    import sys, re

    args = sys.argv[1:]
    iptfile = args and args[0] or "Python/graminit.c"
    if len(args) > 1: optfile = args[1]
    else: optfile = "Lib/keyword.py"

    # scan the source file for keywords
    fp = open(iptfile)
    strprog = re.compile('"([^"]+)"')
    lines = []
    for line in fp:
        if '{1, "' in line:
            match = strprog.search(line)
            if match:
                lines.append("        '" + match.group(1) + "',\n")
    fp.close()
    lines.sort()

    # load the output skeleton from the target
    fp = open(optfile)
    format = fp.readlines()
    fp.close()

    # insert the lines of keywords
    try:
        start = format.index("#--start keywords--\n") + 1
        end = format.index("#--end keywords--\n")
        format[start:end] = lines
    except ValueError:
        sys.stderr.write("target does not contain format markers\n")
        sys.exit(1)

    # write the output file
    fp = open(optfile, 'w')
    fp.write(''.join(format))
    fp.close()

if __name__ == "__main__":
    main()
back to top