diff --git a/Lib/stringprep.py b/Lib/stringprep.py
index 31e40e0..bb4b565 100644
--- a/Lib/stringprep.py
+++ b/Lib/stringprep.py
@@ -5,7 +5,7 @@
 and mappings, for which a mapping function is provided.
 """
 
-import unicodedata, sets
+import unicodedata
 
 assert unicodedata.unidata_version == '3.2.0'
 
@@ -16,7 +16,7 @@
     return (c & 0xFFFF) not in (0xFFFE, 0xFFFF)
 
 
-b1_set = sets.Set([173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65279] + range(65024,65040))
+b1_set = set([173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65279] + range(65024,65040))
 def in_table_b1(code):
     return ord(code) in b1_set
 
@@ -217,7 +217,7 @@
 def in_table_c21(code):
     return ord(code) < 128 and unicodedata.category(code) == "Cc"
 
-c22_specials = sets.Set([1757, 1807, 6158, 8204, 8205, 8232, 8233, 65279] + range(8288,8292) + range(8298,8304) + range(65529,65533) + range(119155,119163))
+c22_specials = set([1757, 1807, 6158, 8204, 8205, 8232, 8233, 65279] + range(8288,8292) + range(8298,8304) + range(65529,65533) + range(119155,119163))
 def in_table_c22(code):
     c = ord(code)
     if c < 128: return False
@@ -244,22 +244,22 @@
     return unicodedata.category(code) == "Cs"
 
 
-c6_set = sets.Set(range(65529,65534))
+c6_set = set(range(65529,65534))
 def in_table_c6(code):
     return ord(code) in c6_set
 
 
-c7_set = sets.Set(range(12272,12284))
+c7_set = set(range(12272,12284))
 def in_table_c7(code):
     return ord(code) in c7_set
 
 
-c8_set = sets.Set([832, 833, 8206, 8207] + range(8234,8239) + range(8298,8304))
+c8_set = set([832, 833, 8206, 8207] + range(8234,8239) + range(8298,8304))
 def in_table_c8(code):
     return ord(code) in c8_set
 
 
-c9_set = sets.Set([917505] + range(917536,917632))
+c9_set = set([917505] + range(917536,917632))
 def in_table_c9(code):
     return ord(code) in c9_set
 
@@ -270,3 +270,4 @@
 
 def in_table_d2(code):
     return unicodedata.bidirectional(code) == "L"
+
diff --git a/Tools/unicode/mkstringprep.py b/Tools/unicode/mkstringprep.py
index 1dd1e04..c621967 100644
--- a/Tools/unicode/mkstringprep.py
+++ b/Tools/unicode/mkstringprep.py
@@ -1,5 +1,4 @@
-import re, unicodedata, sys, sets
-from sets import Set
+import re, unicodedata, sys
 
 if sys.maxunicode == 65535:
     raise RuntimeError, "need UCS-4 Python"
@@ -40,10 +39,10 @@
         single.append(prev)
     tuple = " + ".join(["range(%d,%d)" % t for t in tuple])
     if not single:
-        return "sets.Set(%s)" % tuple
+        return "set(%s)" % tuple
     if not tuple:
-        return "sets.Set(%s)" % repr(single)
-    return "sets.Set(%s + %s)" % (repr(single),tuple)
+        return "set(%s)" % repr(single)
+    return "set(%s + %s)" % (repr(single),tuple)
 
 ############## Read the tables in the RFC #######################
 
@@ -114,7 +113,7 @@
 and mappings, for which a mapping function is provided.
 \"\"\"
 
-import unicodedata, sets
+import unicodedata
 """
 
 print "assert unicodedata.unidata_version == %s" % repr(unicodedata.unidata_version)
@@ -124,14 +123,14 @@
 name, table = tables[0]
 del tables[0]
 assert name == "A.1"
-table = Set(table.keys())
-Cn = Set(gen_category(["Cn"]))
+table = set(table.keys())
+Cn = set(gen_category(["Cn"]))
 
 # FDD0..FDEF are process internal codes
-Cn -= Set(range(0xFDD0, 0xFDF0))
+Cn -= set(range(0xFDD0, 0xFDF0))
 # not a character
-Cn -= Set(range(0xFFFE, 0x110000, 0x10000))
-Cn -= Set(range(0xFFFF, 0x110000, 0x10000))
+Cn -= set(range(0xFFFE, 0x110000, 0x10000))
+Cn -= set(range(0xFFFF, 0x110000, 0x10000))
 
 # assert table == Cn
 
@@ -251,8 +250,8 @@
 del tables[0]
 assert name == "C.1.2"
 
-# table = Set(table.keys())
-# Zs = Set(gen_category(["Zs"])) - Set([0x20])
+# table = set(table.keys())
+# Zs = set(gen_category(["Zs"])) - set([0x20])
 # assert Zs == table
 
 print """
@@ -268,9 +267,9 @@
 del tables[0]
 assert name == "C.2.1"
 
-Cc = Set(gen_category(["Cc"]))
-Cc_ascii = Cc & Set(range(128))
-table_c21 = Set(table_c21.keys())
+Cc = set(gen_category(["Cc"]))
+Cc_ascii = Cc & set(range(128))
+table_c21 = set(table_c21.keys())
 assert Cc_ascii == table_c21
 
 print """
@@ -285,7 +284,7 @@
 assert name == "C.2.2"
 
 Cc_nonascii = Cc - Cc_ascii
-table_c22 = Set(table_c22.keys())
+table_c22 = set(table_c22.keys())
 assert len(Cc_nonascii - table_c22) == 0
 
 specials = list(table_c22 - Cc_nonascii)
@@ -308,8 +307,8 @@
 del tables[0]
 assert name == "C.3"
 
-Co = Set(gen_category(["Co"]))
-assert Set(table.keys()) == Co
+Co = set(gen_category(["Co"]))
+assert set(table.keys()) == Co
 
 print """
 def in_table_c3(code):
@@ -322,10 +321,10 @@
 del tables[0]
 assert name == "C.4"
 
-nonchar = Set(range(0xFDD0,0xFDF0) +
+nonchar = set(range(0xFDD0,0xFDF0) +
               range(0xFFFE,0x110000,0x10000) +
               range(0xFFFF,0x110000,0x10000))
-table = Set(table.keys())
+table = set(table.keys())
 assert table == nonchar
 
 print """
@@ -341,8 +340,8 @@
 del tables[0]
 assert name == "C.5"
 
-Cs = Set(gen_category(["Cs"]))
-assert Set(table.keys()) == Cs
+Cs = set(gen_category(["Cs"]))
+assert set(table.keys()) == Cs
 
 print """
 def in_table_c5(code):
@@ -410,8 +409,8 @@
 del tables[0]
 assert name == "D.1"
 
-RandAL = Set(gen_bidirectional(["R","AL"]))
-assert Set(table.keys()) == RandAL
+RandAL = set(gen_bidirectional(["R","AL"]))
+assert set(table.keys()) == RandAL
 
 print """
 def in_table_d1(code):
@@ -423,8 +422,8 @@
 del tables[0]
 assert name == "D.2"
 
-L = Set(gen_bidirectional(["L"]))
-assert Set(table.keys()) == L
+L = set(gen_bidirectional(["L"]))
+assert set(table.keys()) == L
 
 print """
 def in_table_d2(code):
