[Python-Dev] PEP 409 and the stdlib
ethan at stoneleaf.us
Mon May 20 16:12:07 CEST 2013
On 05/20/2013 06:47 AM, Nick Coghlan wrote:
> On 20 May 2013 23:38, Ethan Furman wrote:
>> As a quick reminder, PEP 409 allows this:
>> except AnError:
>> raise SomeOtherError from None
>> so that if the exception is not caught, we get the traditional single exception traceback, instead of the new:
>> During handling of the above exception, another exception occurred
>> My question:
>> How do we go about putting this in the stdlib? Is this one of the occasions where we don't do it unless we're modifying a module already for some other reason?
>> For that matter, should we?
>> Pros: Makes tracebacks much less confusing, especially coming from a library
>> Cons: Could hide bugs unrelated to what is being caught and transformed
> Be pretty conservative with this one - we should only use it when we're confident we know the original exception is
> almost certain to be irrelevant noise.
> Ensuring the traceback module makes it easy to display both would also be a good preliminary step.
As a case in point, base64.py is currently getting a bug fix, and also contains this code:
def b32decode(s, casefold=False, map01=None):
for i in range(0, len(s), 8):
quanta = s[i: i + 8]
acc = 0
for c in quanta:
acc = (acc << 5) + b32rev[c]
raise binascii.Error('Non-base32 digit found')
raise binascii.Error('Incorrect padding')
Does the KeyError qualify as irrelevant noise?
If we're not going to suppress the originating error I think we should at least change the double trace back message as
it implies two failures, instead of just one.
More information about the Python-Dev