Get rid of dict.has_key(). Boy this has a lot of repercussions!
Not all code has been fixed yet; this is just a checkpoint...
The C API still has PyDict_HasKey() and _HasKeyString(); not sure
if I want to change those just yet.
diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py
index a4b7de4..ecb33d1 100644
--- a/Lib/test/test_userdict.py
+++ b/Lib/test/test_userdict.py
@@ -94,13 +94,10 @@
         self.assertEqual(u2.items(), d2.items())
         self.assertEqual(u2.values(), d2.values())
 
-        # Test has_key and "in".
+        # Test "in".
         for i in u2.keys():
-            self.assert_(u2.has_key(i))
             self.assert_(i in u2)
-            self.assertEqual(u1.has_key(i), d1.has_key(i))
             self.assertEqual(i in u1, i in d1)
-            self.assertEqual(u0.has_key(i), d0.has_key(i))
             self.assertEqual(i in u0, i in d0)
 
         # Test update
@@ -132,7 +129,7 @@
         # Test setdefault
         t = UserDict.UserDict()
         self.assertEqual(t.setdefault("x", 42), 42)
-        self.assert_(t.has_key("x"))
+        self.assert_("x" in t)
         self.assertEqual(t.setdefault("x", 23), 42)
 
         # Test pop
@@ -269,9 +266,6 @@
         self.assertEqual(s.keys(), [10, 30])
 
         ## Now, test the DictMixin methods one by one
-        # has_key
-        self.assert_(s.has_key(10))
-        self.assert_(not s.has_key(20))
 
         # __contains__
         self.assert_(10 in s)