Stéphane Blondon <stephane.blon...@gmail.com> added the comment:

I'm interested by such feature.

I see examples of versions of the message provided by KeyError:
- sometimes with a message (for example `PyErr_SetString(PyExc_KeyError, "name 
too long");` at [1])
- sometimes with the missing key (for example `PyErr_SetObject(PyExc_KeyError, 
key);` at [2])

It explains why there is a difference in the messages in KeyError (as said in 
previous messages).

PyErr_SetString(), PyErr_Format(), PyErr_FormatV() (implemented in 
Python/errors.c) don't have a parameter to set the missing key. So I think it 
would be easier to set the missing attribute before calling thoses functions.


According to [3], the C PyExc_KeyError matches the Python KeyError exception.

So I think to:
- Add a 'missing_key' attribute to KeyError_str (in [4])
- Add the missing key to PyExc_KeyError instance before the call of 
PyErr_SetString(), PyErr_SetObject(), etc.

Do you think such strategy is doable?
What do you think about it? Is it the way you think about it? If not, do you 
have some hint?


I already made some minor patches to cpython but only in the Python part, never 
in C one.


1: https://github.com/python/cpython/blob/master/Modules/unicodedata.c#L1398
2: https://github.com/python/cpython/blob/master/Python/hamt.c#L2767
3: 
https://docs.python.org/3/c-api/exceptions.html?highlight=pyerr_format#standard-exceptions
4: https://github.com/python/cpython/blob/master/Objects/exceptions.c#L1569

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue18163>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to