[Python-Dev] PEP 409 and the stdlib
Terry Jan Reedy
tjreedy at udel.edu
Mon May 20 20:32:53 CEST 2013
On 5/20/2013 11:39 AM, Steven D'Aprano wrote:
> On 21/05/13 00:12, Ethan Furman wrote:
>
>
>> 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
>> try:
>> for c in quanta:
>> acc = (acc << 5) + b32rev[c]
>> except KeyError:
>> raise binascii.Error('Non-base32 digit found')
>> .
>> .
>> .
>> else:
>> raise binascii.Error('Incorrect padding')
>>
>> Does the KeyError qualify as irrelevant noise?
>
>
> IMO, it is irrelevant noise, and obviously so. The binascii.Error raised
> is not a bug to be fixed, it is a deliberate exception and part of the
> API of the binascii module. That it occurs inside an "except KeyError"
> block is a mere implementation detail.
Yes, the code could be revised to make a check on c before the indexing.
This would be redundant (and a slowdown) in that the check is already
done by the indexing mechanism. The whole point of the above is to
*replace* the default KeyError with a custom binascii.Error for
too-large chars.
And I agree with Georg, please say which bad digit was found.
Terry
More information about the Python-Dev
mailing list