From 1177f20a4e8f8270d71c1ead6a1608de83f37c1b Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 22 Feb 2025 01:23:50 +0300 Subject: [PATCH 1/2] gh-130425: Add "Did you mean" suggestion for `del obj.attr` --- .../2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst | 2 ++ Objects/dictobject.c | 1 + 2 files changed, 3 insertions(+) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst new file mode 100644 index 00000000000000..7dbff8f76df6ea --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst @@ -0,0 +1,2 @@ +Add ``"Did you mean"`` suggestion when using ``del obj.attr`` if ``attr`` +does not exist. diff --git a/Objects/dictobject.c b/Objects/dictobject.c index e30d626439e7f8..3a81806aa756c2 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -6898,6 +6898,7 @@ store_instance_attr_lock_held(PyObject *obj, PyDictValues *values, PyErr_Format(PyExc_AttributeError, "'%.100s' object has no attribute '%U'", Py_TYPE(obj)->tp_name, name); + _PyObject_SetAttributeErrorContext(obj, name); return -1; } From 818decc7f8f2680565da13a8e54f42c06bbea429 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 22 Feb 2025 09:56:57 +0300 Subject: [PATCH 2/2] Update NEWS --- .../2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst index 7dbff8f76df6ea..a655cf2f2a765b 100644 --- a/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst +++ b/Misc/NEWS.d/next/Core_and_Builtins/2025-02-22-01-23-23.gh-issue-130425.x5SNQ8.rst @@ -1,2 +1,2 @@ -Add ``"Did you mean"`` suggestion when using ``del obj.attr`` if ``attr`` +Add ``"Did you mean: 'attr'?"`` suggestion when using ``del obj.attr`` if ``attr`` does not exist.