bpo-46927: Include the type's name in the error message for subscripting non-generic types (GH-31694)

This commit is contained in:
Serhiy Storchaka 2022-03-05 15:59:24 +02:00 committed by GitHub
parent 2031149b9a
commit ab9301a28f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 8 additions and 3 deletions

View file

@ -11,7 +11,7 @@ def test_exception_group_types(self):
self.assertTrue(issubclass(BaseExceptionGroup, BaseException))
def test_exception_is_not_generic_type(self):
with self.assertRaises(TypeError):
with self.assertRaisesRegex(TypeError, 'Exception'):
Exception[OSError]
def test_exception_group_is_generic_type(self):

View file

@ -109,7 +109,7 @@ def test_unsubscriptable(self):
for t in int, str, float, Sized, Hashable:
tname = t.__name__
with self.subTest(f"Testing {tname}"):
with self.assertRaises(TypeError):
with self.assertRaisesRegex(TypeError, tname):
t[int]
def test_instantiate(self):
@ -275,7 +275,7 @@ def test_type_generic(self):
def test_type_subclass_generic(self):
class MyType(type):
pass
with self.assertRaises(TypeError):
with self.assertRaisesRegex(TypeError, 'MyType'):
MyType[int]
def test_pickle(self):

View file

@ -0,0 +1,2 @@
Include the type's name in the error message for subscripting non-generic
types.

View file

@ -190,6 +190,9 @@ PyObject_GetItem(PyObject *o, PyObject *key)
Py_DECREF(meth);
return result;
}
PyErr_Format(PyExc_TypeError, "type '%.200s' is not subscriptable",
((PyTypeObject *)o)->tp_name);
return NULL;
}
return type_error("'%.200s' object is not subscriptable", o);