From: Raymond Hettinger Date: Sat, 5 Jun 2004 06:16:22 +0000 (+0000) Subject: SF bug #963956: Bad error mesage when subclassing a module X-Git-Tag: v2.4a1~266 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f2c0830585a4c58c2e0cb6acbfc4efa628563c12;p=thirdparty%2FPython%2Fcpython.git 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 2cebf44a4c97..2d600141f621 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3922,6 +3922,15 @@ build_class(PyObject *methods, PyObject *bases, PyObject *name) } 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; }