mirror of https://github.com/python/cpython
bpo-46927: Include the type's name in the error message for subscripting non-generic types (GH-31694)
This commit is contained in:
parent
2031149b9a
commit
ab9301a28f
|
@ -11,7 +11,7 @@ class TestExceptionGroupTypeHierarchy(unittest.TestCase):
|
|||
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):
|
||||
|
|
|
@ -109,7 +109,7 @@ class BaseTest(unittest.TestCase):
|
|||
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 @@ class BaseTest(unittest.TestCase):
|
|||
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):
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Include the type's name in the error message for subscripting non-generic
|
||||
types.
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue