Am 03.12.2010 18:29, schrieb Antoine Pitrou: > On Fri, 03 Dec 2010 18:09:39 +0100 > Georg Brandl <g.bra...@gmx.net> wrote: >> Am 03.12.2010 17:57, schrieb Antoine Pitrou: >> > On Sat, 4 Dec 2010 02:45:42 +1000 >> > Nick Coghlan <ncogh...@gmail.com> wrote: >> >> On Sat, Dec 4, 2010 at 2:28 AM, Antoine Pitrou <solip...@pitrou.net> >> >> wrote: >> >> > On Fri, 03 Dec 2010 10:11:29 -0500 >> >> > "R. David Murray" <rdmur...@bitdance.com> wrote: >> >> >> > >> >> >> > >>> 'abc'.transform('hex') >> >> >> > TypeError: 'str' does not support the buffer interface >> >> >> > >>> b'abc'.transform('rot13') >> >> >> > TypeError: expected an object with the buffer interface >> >> >> >> >> >> I find these 'buffer interface' error messages to be the most confusing >> >> >> error message I get out of Python3 no matter what context they show up >> >> >> in. I have no idea what they are telling me. That issue is more >> >> >> general than transform/untransform, but perhaps it could be fixed >> >> >> for transform/untransform in particular. >> >> > >> >> > I agree. "buffer interface" is a technicality that the Python user >> >> > doesn't do about (unless (s)he also writes C extensions). How about >> >> > "expected a bytes-compatible object"? >> >> >> >> Why not "binary data interface"? That's what they're actually looking for. >> > >> > I don't think it's more understandable, since it's not a well-known >> > Python concept. >> > (and in this specific case, the transform() method is on str and bytes, >> > not on arbitrary bytes-like objects) >> >> "object that can be handled as bytes"? >> "object that provides bytes"? >> >> >> It seems odd for 'rot13' to be throwing that error though. >> > >> > Agreed. >> >> rot13 is a str<->str codec. > > Then why does it claim to expect an object with the buffer interface? > bytes has the buffer interface, while str doesn't ;)
I'll leave it to you to figure it out. (Hint: look at the traceback.) > I'll also mention that getting a TypeError when you call a method with > the correct type of argument is a bit surprising. Why? The codec has the wrong type :) But seriously, MAL already proposed a bit more information on codecs, so that they can let it be known which types they convert between. Georg _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com