[Python-Dev] "buffer interface" messages

Nick Coghlan ncoghlan at gmail.com
Fri Dec 3 18:05:32 CET 2010


On Sat, Dec 4, 2010 at 2:57 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Sat, 4 Dec 2010 02:45:42 +1000
> Nick Coghlan <ncoghlan at gmail.com> wrote:
>> On Sat, Dec 4, 2010 at 2:28 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>> > On Fri, 03 Dec 2010 10:11:29 -0500
>> > "R. David Murray" <rdmurray at 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)

Indeed, "bytes-compatible" is likely to be the most meaningful phrase
(and then we can have the bytes docs explain further as to what
"bytes-compatible" means, likely by reference to memoryview).

Although, as Victor's mod to the complex constructor error message
shows, the default error message is still going to be overly specific
in many cases that also accept non-binary data.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list