This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author doerwalter
Recipients doerwalter, jamercee, serhiy.storchaka
Date 2019-10-15.14:04:43
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1571148283.89.0.752256063936.issue38482@roundup.psfhosted.org>
In-reply-to
Content
The documentation might be unclear here. But the argument iterator of

   iterdecode(iterator, encoding, errors='strict', **kwargs)

*is* supposed to be an iterable over bytes objects.

In fact iterencode() transforms an iterator over strings into an iterator over bytes and iterdecode() transforms an iterator over bytes into an iterator over strings.

Since iterating over strings iterates over the characters, it's possible to pass a string to iterencode(). However it's not possible to pass a bytes object to iterdecode() since iterating over a bytes object yields integers:

>>> import codecs
>>> list(codecs.iterencode(['spam'], 'utf-8'))
[b'spam']
>>> list(codecs.iterencode('spam', 'utf-8'))
[b's', b'p', b'a', b'm']
>>> list(codecs.iterdecode([b'spam'], 'utf-8'))
['spam']
>>> list(codecs.iterdecode(b'spam', 'utf-8'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 1048, in iterdecode
    output = decoder.decode(input)
  File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/codecs.py", line 321, in decode
    data = self.buffer + input
TypeError: can't concat int to bytes
History
Date User Action Args
2019-10-15 14:04:43doerwaltersetrecipients: + doerwalter, serhiy.storchaka, jamercee
2019-10-15 14:04:43doerwaltersetmessageid: <1571148283.89.0.752256063936.issue38482@roundup.psfhosted.org>
2019-10-15 14:04:43doerwalterlinkissue38482 messages
2019-10-15 14:04:43doerwaltercreate