I opened https://bugs.python.org/issue32491 so this wouldn't be lost under the assumption that you'll eventually resolve your bugtracker account situation. :)
I don't know what the correct behavior *should* be but agree that it seems odd for decode to behave different than decodebytes. -gps On Wed, Jan 3, 2018 at 8:00 AM Oleg Sivokon <ol...@traiana.com> wrote: > Hello, > > I've tried reading various RFCs around Base64 encoding, but I couldn't > make the ends meet. Yet there is an inconsistency between > base64.decodebytes() and base64.decode() in that how they handle linebreaks > that were used to collate the encoded text. Below is an example of what > I'm talking about: > > >>> import base64 > >>> foo = base64.encodebytes(b'123456789') > >>> foo > b'MTIzNDU2Nzg5\n' > >>> foo = b'MTIzND\n' + b'U2Nzg5\n' > >>> foo > b'MTIzND\nU2Nzg5\n' > >>> base64.decodebytes(foo) > b'123456789' > >>> from io import BytesIO > >>> bytes_in = BytesIO(foo) > >>> bytes_out = BytesIO() > >>> bytes_in.seek(0) > 0 > >>> base64.decode(bytes_in, bytes_out) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/somewhere/lib/python3.6/base64.py", line 512, in decode > s = binascii.a2b_base64(line) > binascii.Error: Incorrect padding > >>> bytes_in = BytesIO(base64.encodebytes(b'123456789')) > >>> bytes_in.seek(0) > 0 > >>> base64.decode(bytes_in, bytes_out) > >>> bytes_out.getvalue() > b'123456789' > > Obviously, I'd expect encodebytes() and encode both to either accept or to > reject the same input. > > Thanks. > > Oleg > > PS. I couldn't register to the bug-tracker (never received an email > confirmation, not even in a spam folder), this is why I'm sending it here. > This communication and all information contained in or attached to it is > confidential, intended solely for the addressee, may be legally privileged > and is the intellectual property of one of the companies of NEX Group plc > ("NEX") or third parties. If you are not the intended addressee or receive > this message in error, please immediately delete all copies of it and > notify the sender. We have taken precautions to minimise the risk of > transmitting software viruses, but we advise you to carry out your own > virus checks on any attachments. We do not accept liability for any loss or > damage caused by software viruses. NEX reserves the right to monitor all > communications. We do not accept any legal responsibility for the content > of communications, and no communication shall be considered legally > binding. Furthermore, if the content of this communication is personal or > unconnected with our business, we accept no liability or responsibility for > it. NEX Group plc is a public limited company regi > stered in England and Wales under number 10013770 and certain of its > affiliates are authorised and regulated by regulatory authorities. For > further regulatory information please see www.NEX.com. > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > https://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > https://mail.python.org/mailman/options/python-dev/greg%40krypto.org >
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com