WeakKeyDictionary.has_key():  If the key being tested is not weakly
referencable (weakref.ref() raises TypeError), return 0 instead of
propogating the TypeError.
This closes SF bug #478536; bugfix candidate.
diff --git a/Lib/weakref.py b/Lib/weakref.py
index 39ec330..967458d 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -179,7 +179,11 @@
         return self.data.get(ref(key),default)
 
     def has_key(self, key):
-        return self.data.has_key(ref(key))
+        try:
+            wr = ref(key)
+        except TypeError:
+            return 0
+        return self.data.has_key(wr)
 
     def items(self):
         L = []