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/shelve.py b/Lib/shelve.py
index 7a75445..2971354 100644
--- a/Lib/shelve.py
+++ b/Lib/shelve.py
@@ -20,7 +20,7 @@
                         # access returns a *copy* of the entry!
         del d[key]      # delete data stored at key (raises KeyError
                         # if no such key)
-        flag = d.has_key(key)   # true if the key exists; same as "key in d"
+        flag = key in d # true if the key exists
         list = d.keys() # a list of all existing keys (slow!)
 
         d.close()       # close it
@@ -94,14 +94,11 @@
     def __len__(self):
         return len(self.dict)
 
-    def has_key(self, key):
-        return self.dict.has_key(key)
-
     def __contains__(self, key):
-        return self.dict.has_key(key)
+        return key in self.dict
 
     def get(self, key, default=None):
-        if self.dict.has_key(key):
+        if key in self.dict:
             return self[key]
         return default