Clean up the Py3k warnings for non-BaseException-subclasses a bit.  We
now don't warn for some corner cases that deserve a warning, rather
than warning double or incorrectly for some other corner cases.
diff --git a/Python/ceval.c b/Python/ceval.c
index 72da263..d66d97e 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4086,8 +4086,9 @@
 					if (ret_val == -1)
 						return NULL;
 				}
-				if (Py_Py3kWarningFlag  &&
-				    !Py3kExceptionClass_Check(exc))
+				else if (Py_Py3kWarningFlag  &&
+					 !PyTuple_Check(exc) &&
+					 !Py3kExceptionClass_Check(exc))
 				{
 					int ret_val;
 					ret_val = PyErr_WarnEx(
@@ -4108,8 +4109,9 @@
 				if (ret_val == -1)
 					return NULL;
 			}
-			if (Py_Py3kWarningFlag  &&
-			    !Py3kExceptionClass_Check(w))
+			else if (Py_Py3kWarningFlag  &&
+				 !PyTuple_Check(w) &&
+				 !Py3kExceptionClass_Check(w))
 			{
 				int ret_val;
 				ret_val = PyErr_WarnEx(