Use string.ascii_letters instead of string.letters (SF bug #226706).
diff --git a/Lib/Cookie.py b/Lib/Cookie.py
index dd116b7..3fc2ffc 100644
--- a/Lib/Cookie.py
+++ b/Lib/Cookie.py
@@ -249,7 +249,7 @@
 #       _LegalChars       is the list of chars which don't require "'s
 #       _Translator       hash-table for fast quoting
 #
-_LegalChars       = string.letters + string.digits + "!#$%&'*+-.^_`|~"
+_LegalChars       = string.ascii_letters + string.digits + "!#$%&'*+-.^_`|~"
 _Translator       = {
     '\000' : '\\000',  '\001' : '\\001',  '\002' : '\\002',
     '\003' : '\\003',  '\004' : '\\004',  '\005' : '\\005',
diff --git a/Lib/cmd.py b/Lib/cmd.py
index 10c11a2..eacd498 100644
--- a/Lib/cmd.py
+++ b/Lib/cmd.py
@@ -40,7 +40,7 @@
 __all__ = ["Cmd"]
 
 PROMPT = '(Cmd) '
-IDENTCHARS = string.letters + string.digits + '_'
+IDENTCHARS = string.ascii_letters + string.digits + '_'
 
 class Cmd:
     prompt = PROMPT
diff --git a/Lib/dospath.py b/Lib/dospath.py
index ed35d59..958f9f6 100644
--- a/Lib/dospath.py
+++ b/Lib/dospath.py
@@ -241,7 +241,7 @@
     if '$' not in path:
         return path
     import string
-    varchars = string.letters + string.digits + '_-'
+    varchars = string.ascii_letters + string.digits + "_-"
     res = ''
     index = 0
     pathlen = len(path)
diff --git a/Lib/lib-old/codehack.py b/Lib/lib-old/codehack.py
index 52ac6be..248205b 100644
--- a/Lib/lib-old/codehack.py
+++ b/Lib/lib-old/codehack.py
@@ -31,7 +31,7 @@
 # Because this is a pretty expensive hack, a cache is kept.
 
 SET_LINENO = 127 # The opcode (see "opcode.h" in the Python source)
-identchars = string.letters + string.digits + '_' # Identifier characters
+identchars = string.ascii_letters + string.digits + '_' # Identifier characters
 
 _namecache = {} # The cache
 
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 13de59b..d81e8fb 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -334,7 +334,7 @@
     if '$' not in path:
         return path
     import string
-    varchars = string.letters + string.digits + '_-'
+    varchars = string.ascii_letters + string.digits + '_-'
     res = ''
     index = 0
     pathlen = len(path)
diff --git a/Lib/plat-riscos/riscospath.py b/Lib/plat-riscos/riscospath.py
index d55a8b8..32f39ba 100644
--- a/Lib/plat-riscos/riscospath.py
+++ b/Lib/plat-riscos/riscospath.py
@@ -62,7 +62,7 @@
         s= q # find end of main FS name, not including special field
     else:
         for c in p[dash:s]:
-            if c not in string.letters:
+            if c not in string.ascii_letters:
                 q= 0
                 break # disallow invalid non-special-field characters in FS name
     r= q
diff --git a/Lib/test/test_mimetools.py b/Lib/test/test_mimetools.py
index 4ee11a1..0300714 100644
--- a/Lib/test/test_mimetools.py
+++ b/Lib/test/test_mimetools.py
@@ -2,7 +2,7 @@
 import mimetools
 
 import string,StringIO
-start = string.letters + "=" + string.digits + "\n"
+start = string.ascii_letters + "=" + string.digits + "\n"
 for enc in ['7bit','8bit','base64','quoted-printable']:
     print enc,
     i = StringIO.StringIO(start)
diff --git a/Lib/tokenize.py b/Lib/tokenize.py
index cbe4552..33c5e41 100644
--- a/Lib/tokenize.py
+++ b/Lib/tokenize.py
@@ -133,7 +133,7 @@
 
 def generate_tokens(readline):
     lnum = parenlev = continued = 0
-    namechars, numchars = string.letters + '_', string.digits
+    namechars, numchars = string.ascii_letters + '_', '0123456789'
     contstr, needcont = '', 0
     contline = None
     indents = [0]