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).
This commit is contained in:
Raymond Hettinger 2004-06-05 06:16:22 +00:00
parent 0096e262ff
commit f2c0830585
1 changed files with 9 additions and 0 deletions

View File

@ -3922,6 +3922,15 @@ build_class(PyObject *methods, PyObject *bases, PyObject *name)
} }
result = PyObject_CallFunction(metaclass, "OOO", name, bases, methods); result = PyObject_CallFunction(metaclass, "OOO", name, bases, methods);
Py_DECREF(metaclass); 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; return result;
} }