Ezio Melotti added the comment:
The attached patch changes the error message of str.encode/bytes.decode when
the codec returns the wrong type:
>>> import codecs
>>> 'example'.encode('rot_13')
TypeError: encoder returned 'str' instead of 'bytes', use codecs.decode for
str->str conversions
>>> codecs.encode('example', 'rot_13')
'rknzcyr'
>>>
>>> b'000102'.decode('hex_codec')
TypeError: decoder returned 'bytes' instead of 'str', use codecs.encode for
bytes->bytes conversions
>>> codecs.decode(b'000102', 'hex_codec')
b'\x00\x01\x02'
This only solves part of the problem though, because individual codecs might
raise other errors if the input type is wrong:
>>> 'example'.encode('hex_codec')
Traceback (most recent call last):
File "/home/wolf/dev/py/py3k/Lib/encodings/hex_codec.py", line 16, in
hex_encode
return (binascii.b2a_hex(input), len(input))
TypeError: 'str' does not support the buffer interface
----------
keywords: +patch
Added file: http://bugs.python.org/file30189/issue17828-1.diff
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17828>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com