clearer error messages for apply() and "no locals"
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index ca9f312..66372da 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -70,8 +70,9 @@
if (alist != NULL) {
if (!PyTuple_Check(alist)) {
if (!PySequence_Check(alist)) {
- PyErr_SetString(PyExc_TypeError,
- "apply() arg 2 must be a sequence");
+ PyErr_Format(PyExc_TypeError,
+ "apply() arg 2 expect sequence, found %s",
+ alist->ob_type->tp_name);
return NULL;
}
t = PySequence_Tuple(alist);
@@ -81,8 +82,9 @@
}
}
if (kwdict != NULL && !PyDict_Check(kwdict)) {
- PyErr_SetString(PyExc_TypeError,
- "apply() arg 3 must be a dictionary");
+ PyErr_Format(PyExc_TypeError,
+ "apply() arg 3 expected dictionary, found %s",
+ kwdict->ob_type->tp_name);
goto finally;
}
retval = PyEval_CallObjectWithKeywords(func, alist, kwdict);