Nick Coghlan added the comment:

Updated patch. The results of this suggests to me that the input wrappers are 
likely infeasible at this point in time, but improving the errors for the wrong 
*output* type is entirely feasible. Since the main conversion we need to prompt 
is things like "binary_object.decode(binary_codec)" -> 
"codecs.decode(binary_object, binary_codec)", I suggest we limit the scope of 
this issue to that part of the problem.

>>> import codecs
>>> codecs.encode(b"hello", "bz2_codec").decode("bz2_codec")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'bz2_codec' decoder returned 'bytes' instead of 'str'; use 
codecs.decode to decode to arbitrary types
>>> "hello".encode("bz2_codec")
TypeError: 'str' does not support the buffer interface

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: invalid input type for 'bz2_codec' codec (TypeError: 'str' does not 
support the buffer interface)
>>> "hello".encode("rot_13")
TypeError: 'rot_13' encoder returned 'str' instead of 'bytes'; use 
codecs.encode to encode to arbitrary types

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: invalid input type for 'rot_13' codec (TypeError: 'rot_13' encoder 
returned 'str' instead of 'bytes'; use codecs.encode to encode to arbitrary 
types)

----------
Added file: 
http://bugs.python.org/file32496/issue17828_improved_codec_errors.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17828>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to