SF bug #963956:   Bad error mesage when subclassing a module

Add a more informative message for the common user mistake of subclassing
from a module name rather than another class (i.e. random instead of
random.random).
diff --git a/Python/ceval.c b/Python/ceval.c
index 2cebf44..2d60014 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3922,6 +3922,15 @@
 	}
 	result = PyObject_CallFunction(metaclass, "OOO", name, bases, methods);
 	Py_DECREF(metaclass);
+	if (result == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) {
+		/* A type error here likely means that the user passed 
+		   in a base that was not a class (such the random module
+		   instead of the random.random type).  Help them out with
+		   a more informative error message */
+		PyErr_SetString(PyExc_TypeError,
+			"Error when calling the metaclass.\n" \
+			"Make sure the base arguments are valid.");
+	}
 	return result;
 }