On 05/20/2013 11:32 AM, Terry Jan Reedy wrote:
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.

Actually, that was Antoine, but I'm sure Georg also agrees.  ;)

--
~Ethan~
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to