https://github.com/python/cpython/commit/511d3440a0bbb19731f4d96dde65dffbf85cdda5
commit: 511d3440a0bbb19731f4d96dde65dffbf85cdda5
branch: main
author: Peter Bierma <[email protected]>
committer: vstinner <[email protected]>
date: 2025-03-31T19:30:29+02:00
summary:
gh-131936: Strengthen check in `_suggestions._generate_suggestions` (#131945)
files:
M Lib/test/test_traceback.py
M Modules/_suggestions.c
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py
index ac492782cb1a5c..6ae8cf5c9a5130 100644
--- a/Lib/test/test_traceback.py
+++ b/Lib/test/test_traceback.py
@@ -4619,7 +4619,31 @@ def test_levenshtein_distance_short_circuit(self):
@cpython_only
def test_suggestions_extension(self):
# Check that the C extension is available
- import _suggestions # noqa: F401
+ import _suggestions
+
+ self.assertEqual(
+ _suggestions._generate_suggestions(
+ ["hello", "world"],
+ "hell"
+ ),
+ "hello"
+ )
+ self.assertEqual(
+ _suggestions._generate_suggestions(
+ ["hovercraft"],
+ "eels"
+ ),
+ None
+ )
+
+ # gh-131936: _generate_suggestions() doesn't accept list subclasses
+ class MyList(list):
+ pass
+
+ with self.assertRaises(TypeError):
+ _suggestions._generate_suggestions(MyList(), "")
+
+
class TestColorizedTraceback(unittest.TestCase):
diff --git a/Modules/_suggestions.c b/Modules/_suggestions.c
index 80c7179c4c251c..b8bc6db2477281 100644
--- a/Modules/_suggestions.c
+++ b/Modules/_suggestions.c
@@ -21,7 +21,7 @@ _suggestions__generate_suggestions_impl(PyObject *module,
/*[clinic end generated code: output=79be7b653ae5e7ca input=ba2a8dddc654e33a]*/
{
// Check if dir is a list
- if (!PyList_Check(candidates)) {
+ if (!PyList_CheckExact(candidates)) {
PyErr_SetString(PyExc_TypeError, "candidates must be a list");
return NULL;
}
_______________________________________________
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]