gh-146431: Add the wrapcol and ignorechars parameters for more Base XX codec#146434
Conversation
…Base XX codec Add the wrapcol parameter to base64 functions b16encode(), b32encode(), b32hexencode(), b85encode() and z85encode(), and binascii functions b2a_base32() and b2a_base85(). Add the ignorechars parameter to base64 functions b16decode(), b32decode(), b32hexdecode(), b85decode() and z85decode(), and binascii functions a2b_hex(), unhexlify(), a2b_base32() and a2b_base85().
ea2c65d to
c88fb7a
Compare
gpshead
left a comment
There was a problem hiding this comment.
food for thought: could wrapcol be limited to "even" columns of one decodable chunk? (at least for base16/32/64) - It makes little sense to wrap on unusual boundaries.
| int group_pos = 0; | ||
| for (; ascii_len > 0 || group_pos != 0; ascii_len--, ascii_data++) { | ||
| /* Shift (in radix-85) data or padding into our buffer. */ | ||
| unsigned char this_ch; |
There was a problem hiding this comment.
| unsigned char this_ch; | |
| unsigned char this_ch = 0; |
There was a problem hiding this comment.
It is always initialized before use.
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
| if check_impl_detail(): | ||
| eq(base64.b64encode(b, wrapcol=sys.maxsize*2), | ||
| b'd3d3LnB5dGhvbi5vcmc=') | ||
| if func is not base64.b16encode: |
There was a problem hiding this comment.
#147944 will allow to remove some of these special cases.
It is limited to the multiple of the size of the group: 2 for base16, 8 for base32, 4 for base64, 5 for base85. Ascii85 has no restriction, because some groups are encoded as one character. |
Add the wrapcol parameter to base64 functions b16encode(), b32encode(), b32hexencode(), b85encode() and z85encode(), and binascii functions b2a_base32() and b2a_base85().
Add the ignorechars parameter to base64 functions b16decode(), b32decode(), b32hexdecode(), b85decode() and z85decode(), and binascii functions a2b_hex(), unhexlify(), a2b_base32() and a2b_base85().
📚 Documentation preview 📚: https://cpython-previews--146434.org.readthedocs.build/