Martin Panter added the comment: I think calling iterencode() with an empty iterator is a side issue. Even with a non-empty iterator, it tries to encode an empty _text_ string to finalise the encoder:
>>> bytes().join(codecs.iterencode(iter((b"data",)), "base64-codec")) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.3/codecs.py", line 1014, in iterencode output = encoder.encode("", True) File "/usr/lib/python3.3/encodings/base64_codec.py", line 31, in encode return base64.encodebytes(input) File "/usr/lib/python3.3/base64.py", line 343, in encodebytes raise TypeError("expected bytes, not %s" % s.__class__.__name__) TypeError: expected bytes, not str Similarly, iterdecode(encoding="rot-13") doesn’t work. I agree it would be good to document that iterencode() is limited to text encoders and iterdecode() is limited to byte decoders. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue20132> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com