Use string.ascii_letters instead of string.letters (SF bug #226706).
diff --git a/Tools/idle/AutoExpand.py b/Tools/idle/AutoExpand.py
index 09f34b3..40d39f3 100644
--- a/Tools/idle/AutoExpand.py
+++ b/Tools/idle/AutoExpand.py
@@ -21,7 +21,7 @@
          ]),
     ]
 
-    wordchars = string.letters + string.digits + "_"
+    wordchars = string.ascii_letters + string.digits + "_"
 
     def __init__(self, editwin):
         self.text = editwin.text
diff --git a/Tools/idle/UndoDelegator.py b/Tools/idle/UndoDelegator.py
index ec7af81..3ef14c3 100644
--- a/Tools/idle/UndoDelegator.py
+++ b/Tools/idle/UndoDelegator.py
@@ -251,7 +251,7 @@
         self.chars = self.chars + cmd.chars
         return 1
 
-    alphanumeric = string.letters + string.digits + "_"
+    alphanumeric = string.ascii_letters + string.digits + "_"
 
     def classify(self, c):
         if c in self.alphanumeric:
diff --git a/Tools/scripts/fixheader.py b/Tools/scripts/fixheader.py
index 9b65a44..ba2e0c5 100755
--- a/Tools/scripts/fixheader.py
+++ b/Tools/scripts/fixheader.py
@@ -29,7 +29,7 @@
     sys.stderr.write('Processing %s ...\n' % file)
     magic = 'Py_'
     for c in file:
-        if c in string.letters + string.digits:
+        if c in string.ascii_letters + string.digits:
             magic = magic + string.upper(c)
         else: magic = magic + '_'
     sys.stdout = f
diff --git a/Tools/scripts/texi2html.py b/Tools/scripts/texi2html.py
index dfe96db..f3e7fb3 100755
--- a/Tools/scripts/texi2html.py
+++ b/Tools/scripts/texi2html.py
@@ -422,7 +422,7 @@
                 # Cannot happen unless spprog is changed
                 raise RuntimeError, 'unexpected funny '+`c`
             start = i
-            while i < n and text[i] in string.letters: i = i+1
+            while i < n and text[i] in string.ascii_letters: i = i+1
             if i == start:
                 # @ plus non-letter: literal next character
                 i = i+1
@@ -1260,7 +1260,7 @@
         if self.itemindex: self.index(self.itemindex, args)
         if self.itemarg:
             if self.itemarg[0] == '@' and self.itemarg[1:2] and \
-                            self.itemarg[1] in string.letters:
+                            self.itemarg[1] in string.ascii_letters:
                 args = self.itemarg + '{' + args + '}'
             else:
                 # some other character, e.g. '-'
@@ -1524,7 +1524,7 @@
 
 
 # Characters that are perfectly safe in filenames and hyperlinks
-goodchars = string.letters + string.digits + '!@-=+.'
+goodchars = string.ascii_letters + string.digits + '!@-=+.'
 
 # Replace characters that aren't perfectly safe by dashes
 # Underscores are bad since Cern HTTPD treats them as delimiters for