Deprecate bsddb for removal in Python 3.0.

Closes issue 3776.
Review by Nick Coghlan.
diff --git a/Lib/warnings.py b/Lib/warnings.py
index b699c43..9ec04be 100644
--- a/Lib/warnings.py
+++ b/Lib/warnings.py
@@ -314,7 +314,14 @@
         self.append(WarningMessage(*args, **kwargs))
 
     def __getattr__(self, attr):
-        return getattr(self[-1], attr)
+        """Return attributes from the last caught warning, or raise
+        AttributeError."""
+        try:
+            return getattr(self[-1], attr)
+        except IndexError:
+            raise AttributeError("no recorded warning to read "
+                                    "{0!r} attribute from".format(attr))
+
 
     def reset(self):
         del self[:]