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:
parent
0096e262ff
commit
f2c0830585
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue