mirror of https://github.com/python/cpython
bpo-44655: Don't include suggestions for attributes that are the same as the missing one (GH-27197)
This commit is contained in:
parent
c90c591e51
commit
6714dec5e1
|
@ -1916,6 +1916,18 @@ class AttributeErrorTests(unittest.TestCase):
|
||||||
|
|
||||||
self.assertIn("blech", err.getvalue())
|
self.assertIn("blech", err.getvalue())
|
||||||
|
|
||||||
|
def test_getattr_suggestions_for_same_name(self):
|
||||||
|
class A:
|
||||||
|
def __dir__(self):
|
||||||
|
return ['blech']
|
||||||
|
try:
|
||||||
|
A().blech
|
||||||
|
except AttributeError as exc:
|
||||||
|
with support.captured_stderr() as err:
|
||||||
|
sys.__excepthook__(*sys.exc_info())
|
||||||
|
|
||||||
|
self.assertNotIn("Did you mean", err.getvalue())
|
||||||
|
|
||||||
def test_attribute_error_with_failing_dict(self):
|
def test_attribute_error_with_failing_dict(self):
|
||||||
class T:
|
class T:
|
||||||
bluch = 1
|
bluch = 1
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Don't include a missing attribute with the same name as the failing one when
|
||||||
|
offering suggestions for missing attributes. Patch by Pablo Galindo
|
|
@ -151,6 +151,9 @@ calculate_suggestions(PyObject *dir,
|
||||||
if (item_str == NULL) {
|
if (item_str == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (PyUnicode_CompareWithASCIIString(name, item_str) == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// No more than 1/3 of the involved characters should need changed.
|
// No more than 1/3 of the involved characters should need changed.
|
||||||
Py_ssize_t max_distance = (name_size + item_size + 3) * MOVE_COST / 6;
|
Py_ssize_t max_distance = (name_size + item_size + 3) * MOVE_COST / 6;
|
||||||
// Don't take matches we've already beaten.
|
// Don't take matches we've already beaten.
|
||||||
|
|
Loading…
Reference in New Issue