https://github.com/python/cpython/commit/bc3fa17c30cc95664a663c47ab9938fdf9cb1429
commit: bc3fa17c30cc95664a663c47ab9938fdf9cb1429
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-06-30T01:03:33+03:00
summary:
gh-82312: Further improvement of error messages for generating AST nodes
(GH-150912)
This is a follow up of GH-17715.
* Use %T instead of _PyType_Name().
* Add the wrong type name we got for identifier and string.
files:
M Lib/test/test_ast/test_ast.py
M Parser/asdl_c.py
M Python/Python-ast.c
diff --git a/Lib/test/test_ast/test_ast.py b/Lib/test/test_ast/test_ast.py
index fd3b33bab7f8336..31e218df127ae6b 100644
--- a/Lib/test/test_ast/test_ast.py
+++ b/Lib/test/test_ast/test_ast.py
@@ -1098,10 +1098,17 @@ def test_required_field_messages(self):
):
compile(expr_with_wrong_body, "<test>", "eval")
+ variable = ast.parse("test", mode="eval")
+ variable.body.id = b'test'
+ with self.assertRaisesRegex(TypeError,
+ "field 'id' was expecting a string object, got bytes"
+ ):
+ compile(variable, "<test>", "eval")
+
constant = ast.parse("u'test'", mode="eval")
constant.body.kind = 0xFF
- with self.assertRaisesRegex(
- TypeError, "field 'kind' was expecting a string or bytes object"
+ with self.assertRaisesRegex(TypeError,
+ "field 'kind' was expecting a string or bytes object, got int"
):
compile(constant, "<test>", "eval")
diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py
index e2a57177d20afb7..d53886866f54f86 100755
--- a/Parser/asdl_c.py
+++ b/Parser/asdl_c.py
@@ -554,8 +554,8 @@ def typeCheck(self, name):
self.emit("return 1;", 2)
self.emit("}", 1)
self.emit("if (!isinstance && field != NULL) {", 1)
- error = "field '%%s' was expecting node of type '%s', got '%%s'" % name
- self.emit("PyErr_Format(PyExc_TypeError, \"%s\", field,
_PyType_Name(Py_TYPE(obj)));" % error, 2, reflow=False)
+ error = "field '%%s' was expecting node of type '%s', got '%%T'" % name
+ self.emit("PyErr_Format(PyExc_TypeError, \"%s\", field, obj);" %
error, 2, reflow=False)
self.emit("return 1;", 2)
self.emit("}", 1)
@@ -692,7 +692,7 @@ def visitField(self, field, name, sum=None, prod=None,
depth=0):
self.emit("Py_ssize_t i;", depth+1)
self.emit("if (!PyList_Check(tmp)) {", depth+1)
self.emit("PyErr_Format(PyExc_TypeError, \"%s field \\\"%s\\\"
must "
- "be a list, not a %%.200s\",
_PyType_Name(Py_TYPE(tmp)));" %
+ "be a list, not a %%T\", tmp);" %
(name, field.name),
depth+2, reflow=False)
self.emit("goto failed;", depth+2)
@@ -991,10 +991,9 @@ def visitModule(self, mod):
res = 0; /* if no error occurs, this stays 0 to the end */
if (numfields < PyTuple_GET_SIZE(args)) {
- PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most "
+ PyErr_Format(PyExc_TypeError, "%T constructor takes at most "
"%zd positional argument%s",
- _PyType_Name(Py_TYPE(self)),
- numfields, numfields == 1 ? "" : "s");
+ self, numfields, numfields == 1 ? "" : "s");
res = -1;
goto cleanup;
}
@@ -1748,7 +1747,7 @@ def visitModule(self, mod):
static int obj2ast_identifier(struct ast_state *state, PyObject* obj,
PyObject** out, const char* field, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && obj != Py_None) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string
object", field);
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string
object, got %T", field, obj);
return -1;
}
return obj2ast_object(state, obj, out, field, arena);
@@ -1757,7 +1756,7 @@ def visitModule(self, mod):
static int obj2ast_string(struct ast_state *state, PyObject* obj, PyObject**
out, const char* field, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && !PyBytes_CheckExact(obj)) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string or
bytes object", field);
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string or
bytes object, got %T", field, obj);
return -1;
}
return obj2ast_object(state, obj, out, field, arena);
@@ -2144,8 +2143,8 @@ class PartingShots(StaticVisitor):
return -1;
}
if (!isinstance) {
- PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
- req_name[mode], _PyType_Name(Py_TYPE(ast)));
+ PyErr_Format(PyExc_TypeError, "expected %s node, got %T",
+ req_name[mode], ast);
return -1;
}
return 0;
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 49b6bf1d12b6fab..f36072dfce098c6 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -5303,10 +5303,9 @@ ast_type_init(PyObject *self, PyObject *args, PyObject
*kw)
res = 0; /* if no error occurs, this stays 0 to the end */
if (numfields < PyTuple_GET_SIZE(args)) {
- PyErr_Format(PyExc_TypeError, "%.400s constructor takes at most "
+ PyErr_Format(PyExc_TypeError, "%T constructor takes at most "
"%zd positional argument%s",
- _PyType_Name(Py_TYPE(self)),
- numfields, numfields == 1 ? "" : "s");
+ self, numfields, numfields == 1 ? "" : "s");
res = -1;
goto cleanup;
}
@@ -6060,7 +6059,7 @@ static int obj2ast_constant(struct ast_state
*Py_UNUSED(state), PyObject* obj,
static int obj2ast_identifier(struct ast_state *state, PyObject* obj,
PyObject** out, const char* field, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && obj != Py_None) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string
object", field);
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string
object, got %T", field, obj);
return -1;
}
return obj2ast_object(state, obj, out, field, arena);
@@ -6069,7 +6068,7 @@ static int obj2ast_identifier(struct ast_state *state,
PyObject* obj, PyObject**
static int obj2ast_string(struct ast_state *state, PyObject* obj, PyObject**
out, const char* field, PyArena* arena)
{
if (!PyUnicode_CheckExact(obj) && !PyBytes_CheckExact(obj)) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string or
bytes object", field);
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting a string or
bytes object, got %T", field, obj);
return -1;
}
return obj2ast_object(state, obj, out, field, arena);
@@ -10886,7 +10885,7 @@ obj2ast_mod(struct ast_state *state, PyObject* obj,
mod_ty* out, const char*
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'mod', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'mod', got '%T'", field, obj);
return 1;
}
tp = state->Module_type;
@@ -10912,7 +10911,7 @@ obj2ast_mod(struct ast_state *state, PyObject* obj,
mod_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Module field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -10950,7 +10949,7 @@ obj2ast_mod(struct ast_state *state, PyObject* obj,
mod_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Module field \"type_ignores\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Module field \"type_ignores\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11000,7 +10999,7 @@ obj2ast_mod(struct ast_state *state, PyObject* obj,
mod_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Interactive field \"body\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11080,7 +11079,7 @@ obj2ast_mod(struct ast_state *state, PyObject* obj,
mod_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "FunctionType field \"argtypes\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "FunctionType field \"argtypes\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11155,7 +11154,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'stmt', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'stmt', got '%T'", field, obj);
return 1;
}
if (PyObject_GetOptionalAttr(obj, state->lineno, &tmp) < 0) {
@@ -11288,7 +11287,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "FunctionDef field \"body\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11326,7 +11325,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "FunctionDef field
\"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "FunctionDef field
\"decorator_list\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11399,7 +11398,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "FunctionDef field
\"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "FunctionDef field
\"type_params\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11492,7 +11491,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11530,7 +11529,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field
\"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field
\"decorator_list\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11603,7 +11602,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field
\"type_params\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field
\"type_params\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11678,7 +11677,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"bases\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11716,7 +11715,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"keywords\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11754,7 +11753,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"body\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11792,7 +11791,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field
\"decorator_list\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field
\"decorator_list\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11830,7 +11829,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ClassDef field \"type_params\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ClassDef field \"type_params\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11912,7 +11911,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Delete field \"targets\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -11965,7 +11964,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Assign field \"targets\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12070,7 +12069,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TypeAlias field \"type_params\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TypeAlias field \"type_params\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12326,7 +12325,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "For field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "For field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12364,7 +12363,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "For field \"orelse\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12471,7 +12470,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12509,7 +12508,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12598,7 +12597,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "While field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "While field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12636,7 +12635,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "While field \"orelse\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12706,7 +12705,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "If field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "If field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12744,7 +12743,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "If field \"orelse\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12797,7 +12796,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "With field \"items\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "With field \"items\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12835,7 +12834,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "With field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "With field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12906,7 +12905,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -12944,7 +12943,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13031,7 +13030,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Match field \"cases\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Match field \"cases\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13133,7 +13132,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Try field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Try field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13171,7 +13170,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Try field \"handlers\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Try field \"handlers\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13209,7 +13208,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Try field \"orelse\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Try field \"orelse\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13247,7 +13246,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Try field \"finalbody\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Try field \"finalbody\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13301,7 +13300,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TryStar field \"body\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TryStar field \"body\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13339,7 +13338,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TryStar field \"handlers\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TryStar field \"handlers\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13377,7 +13376,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TryStar field \"orelse\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TryStar field \"orelse\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13415,7 +13414,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TryStar field \"finalbody\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TryStar field \"finalbody\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13515,7 +13514,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Import field \"names\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Import field \"names\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13603,7 +13602,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ImportFrom field \"names\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13688,7 +13687,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Global field \"names\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Global field \"names\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13739,7 +13738,7 @@ obj2ast_stmt(struct ast_state *state, PyObject* obj,
stmt_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Nonlocal field \"names\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -13864,7 +13863,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'expr', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'expr', got '%T'", field, obj);
return 1;
}
if (PyObject_GetOptionalAttr(obj, state->lineno, &tmp) < 0) {
@@ -13975,7 +13974,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "BoolOp field \"values\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14303,7 +14302,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Dict field \"keys\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14341,7 +14340,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Dict field \"values\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14392,7 +14391,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Set field \"elts\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14461,7 +14460,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ListComp field \"generators\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ListComp field \"generators\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14530,7 +14529,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "SetComp field \"generators\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "SetComp field \"generators\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14617,7 +14616,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "DictComp field \"generators\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "DictComp field \"generators\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14686,7 +14685,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "GeneratorExp field
\"generators\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "GeneratorExp field
\"generators\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14846,7 +14845,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Compare field \"ops\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14884,7 +14883,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Compare field \"comparators\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Compare field \"comparators\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14954,7 +14953,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Call field \"args\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -14992,7 +14991,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Call field \"keywords\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -15195,7 +15194,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "JoinedStr field \"values\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -15246,7 +15245,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "TemplateStr field \"values\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "TemplateStr field \"values\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -15574,7 +15573,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "List field \"elts\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -15643,7 +15642,7 @@ obj2ast_expr(struct ast_state *state, PyObject* obj,
expr_ty* out, const char*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "Tuple field \"elts\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16131,7 +16130,7 @@ obj2ast_comprehension(struct ast_state *state,
PyObject* obj, comprehension_ty*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be
a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "comprehension field \"ifs\" must be
a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16203,7 +16202,7 @@ obj2ast_excepthandler(struct ast_state *state,
PyObject* obj, excepthandler_ty*
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'excepthandler', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'excepthandler', got '%T'", field, obj);
return 1;
}
if (PyObject_GetOptionalAttr(obj, state->lineno, &tmp) < 0) {
@@ -16332,7 +16331,7 @@ obj2ast_excepthandler(struct ast_state *state,
PyObject* obj, excepthandler_ty*
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "ExceptHandler field \"body\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16395,7 +16394,7 @@ obj2ast_arguments(struct ast_state *state, PyObject*
obj, arguments_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"posonlyargs\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "arguments field \"posonlyargs\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16433,7 +16432,7 @@ obj2ast_arguments(struct ast_state *state, PyObject*
obj, arguments_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "arguments field \"args\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16488,7 +16487,7 @@ obj2ast_arguments(struct ast_state *state, PyObject*
obj, arguments_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "arguments field \"kwonlyargs\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16526,7 +16525,7 @@ obj2ast_arguments(struct ast_state *state, PyObject*
obj, arguments_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "arguments field \"kw_defaults\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -16581,7 +16580,7 @@ obj2ast_arguments(struct ast_state *state, PyObject*
obj, arguments_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "arguments field \"defaults\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17108,7 +17107,7 @@ obj2ast_match_case(struct ast_state *state, PyObject*
obj, match_case_ty* out,
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "match_case field \"body\" must be a
list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "match_case field \"body\" must be a
list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17163,7 +17162,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'pattern', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'pattern', got '%T'", field, obj);
return 1;
}
if (PyObject_GetOptionalAttr(obj, state->lineno, &tmp) < 0) {
@@ -17316,7 +17315,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchSequence field
\"patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchSequence field
\"patterns\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17369,7 +17368,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchMapping field \"keys\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchMapping field \"keys\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17407,7 +17406,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchMapping field \"patterns\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchMapping field \"patterns\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17495,7 +17494,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchClass field \"patterns\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchClass field \"patterns\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17533,7 +17532,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchClass field \"kwd_attrs\"
must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchClass field \"kwd_attrs\"
must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17571,7 +17570,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchClass field
\"kwd_patterns\" must be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchClass field
\"kwd_patterns\" must be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17701,7 +17700,7 @@ obj2ast_pattern(struct ast_state *state, PyObject* obj,
pattern_ty* out, const
Py_ssize_t len;
Py_ssize_t i;
if (!PyList_Check(tmp)) {
- PyErr_Format(PyExc_TypeError, "MatchOr field \"patterns\" must
be a list, not a %.200s", _PyType_Name(Py_TYPE(tmp)));
+ PyErr_Format(PyExc_TypeError, "MatchOr field \"patterns\" must
be a list, not a %T", tmp);
goto failed;
}
len = PyList_GET_SIZE(tmp);
@@ -17756,7 +17755,7 @@ obj2ast_type_ignore(struct ast_state *state, PyObject*
obj, type_ignore_ty*
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'type_ignore', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'type_ignore', got '%T'", field, obj);
return 1;
}
tp = state->TypeIgnore_type;
@@ -17836,7 +17835,7 @@ obj2ast_type_param(struct ast_state *state, PyObject*
obj, type_param_ty* out,
return 1;
}
if (!isinstance && field != NULL) {
- PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'type_param', got '%s'", field, _PyType_Name(Py_TYPE(obj)));
+ PyErr_Format(PyExc_TypeError, "field '%s' was expecting node of type
'type_param', got '%T'", field, obj);
return 1;
}
if (PyObject_GetOptionalAttr(obj, state->lineno, &tmp) < 0) {
@@ -18571,8 +18570,8 @@ int PyAst_CheckMode(PyObject *ast, int mode)
return -1;
}
if (!isinstance) {
- PyErr_Format(PyExc_TypeError, "expected %s node, got %.400s",
- req_name[mode], _PyType_Name(Py_TYPE(ast)));
+ PyErr_Format(PyExc_TypeError, "expected %s node, got %T",
+ req_name[mode], ast);
return -1;
}
return 0;
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]