Remove the __iter__ method from the UserDict class -- it can silently
break old code (in extreme cases).  See SF bug #448153.

Add a new subclass IterableUserDict that has the __iter__ method.

Note that for new projects, unless backwards compatibility with
pre-2.2 Python is required, subclassing 'dictionary' is recommended;
UserDict might become deprecated.
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index fbd601a..b806ac1 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -47,5 +47,7 @@
         return self.data.popitem()
     def __contains__(self, key):
         return key in self.data
+
+class IterableUserDict(UserDict):
     def __iter__(self):
         return iter(self.data)