From 6cc8ac949907b9a1c0f73709c6978b7a43e634e3 Mon Sep 17 00:00:00 2001 From: Zackery Spytz Date: Fri, 21 May 2021 14:02:42 -0700 Subject: bpo-40736: Improve the error message for re.search() TypeError (GH-23312) Include the invalid type in the error message. --- Lib/test/test_re.py | 6 ++++++ Modules/_sre.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index e1b2c79..0ed243d 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -2104,6 +2104,12 @@ ELSE {'tag': 'foo', 'text': None}, {'tag': 'foo', 'text': None}]) + def test_bug_40736(self): + with self.assertRaisesRegex(TypeError, "got 'int'"): + re.search("x*", 5) + with self.assertRaisesRegex(TypeError, "got 'type'"): + re.search("x*", type) + class PatternReprTests(unittest.TestCase): def check(self, pattern, expected): diff --git a/Modules/_sre.c b/Modules/_sre.c index 9d0fc4a..a313ea1 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -389,7 +389,8 @@ getstring(PyObject* string, Py_ssize_t* p_length, /* get pointer to byte string buffer */ if (PyObject_GetBuffer(string, view, PyBUF_SIMPLE) != 0) { - PyErr_SetString(PyExc_TypeError, "expected string or bytes-like object"); + PyErr_Format(PyExc_TypeError, "expected string or bytes-like " + "object, got '%.200s'", Py_TYPE(string)->tp_name); return NULL; } -- cgit v0.12