Nailed test_weakref.py.  Pfew, messy!
diff --git a/Lib/weakref.py b/Lib/weakref.py
index 0122da4..c20d1b6 100644
--- a/Lib/weakref.py
+++ b/Lib/weakref.py
@@ -106,10 +106,10 @@
                 yield wr.key, value
 
     def iterkeys(self):
-        return self.data.keys()
+        return iter(self.data.keys())
 
     def __iter__(self):
-        return self.data.keys()
+        return iter(self.data.keys())
 
     def itervaluerefs(self):
         """Return an iterator that yields the weak references to the values.
@@ -292,10 +292,10 @@
                 yield obj
 
     def __iter__(self):
-        return self.keys()
+        return iter(self.keys())
 
     def itervalues(self):
-        return self.data.values()
+        return iter(self.data.values())
 
     def keyrefs(self):
         """Return a list of weak references to the keys.