gh-148153: Do not use assert for parameter validation in base64 (GH-148154)

base64.b32encode() now always raises ValueError instead of
AssertionError for the value of map01 with invalid length.
This commit is contained in:
Serhiy Storchaka 2026-04-06 13:47:27 +03:00 committed by GitHub
parent a95ee3a21d
commit d0e204fb1d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 7 additions and 4 deletions

View file

@ -69,9 +69,6 @@ POST request.
after at most every *wrapcol* characters.
If *wrapcol* is zero (default), do not insert any newlines.
May assert or raise a :exc:`ValueError` if the length of *altchars* is not 2. Raises a
:exc:`TypeError` if *altchars* is not a :term:`bytes-like object`.
.. versionchanged:: 3.15
Added the *padded* and *wrapcol* parameters.

View file

@ -237,7 +237,6 @@ def b32decode(s, casefold=False, map01=None, *, padded=True, ignorechars=b''):
# either L (el) or I (eye).
if map01 is not None:
map01 = _bytes_from_decode_data(map01)
assert len(map01) == 1, repr(map01)
s = s.translate(bytes.maketrans(b'01', b'O' + map01))
if casefold:
s = s.upper()

View file

@ -607,6 +607,11 @@ def test_b32decode_map01(self):
self.assertRaises(binascii.Error, base64.b32decode, b'M1O23456')
self.assertRaises(binascii.Error, base64.b32decode, b'ML023456')
self.assertRaises(binascii.Error, base64.b32decode, b'MI023456')
self.assertRaises(ValueError, base64.b32decode, b'', map01=b'')
self.assertRaises(ValueError, base64.b32decode, b'', map01=b'LI')
self.assertRaises(TypeError, base64.b32decode, b'', map01=0)
eq(base64.b32decode(b'MLO23456', map01=None), res_L)
self.assertRaises(binascii.Error, base64.b32decode, b'M1023456', map01=None)
data = b'M1023456'
data_str = data.decode('ascii')

View file

@ -0,0 +1,2 @@
:func:`base64.b32encode` now always raises :exc:`ValueError` instead of
:exc:`AssertionError` for the value of *map01* with invalid length.