[Python-Dev] memoryview: "B", "c", "b" format specifiers

Antoine Pitrou solipsis at pitrou.net
Thu Aug 18 18:40:40 CEST 2011


On Thu, 18 Aug 2011 18:22:54 +0200
Stefan Krah <stefan at bytereef.org> wrote:
> 
> So, memoryview does exactly the opposite of what is specified. It should
> reject the bytes object but accept the integer.

Well, memoryview is quite dumb right now. It ignores the format and
just considers its underlying memory a bytes sequence.

> I would like to fix this in the features/pep-3118 repository as follows:
> 
>   - memoryview should respect the format specifiers.
> 
>   - bytearray and friends should set the format specifier to "c"
>     in their getbuffer() methods.
> 
>   - Introduce a new function PyMemoryView_FromBytes() that can be used
>     instead of PyMemoryView_FromBuffer(). PyMemoryView_FromBuffer()
>     is usually used in conjunction with PyBuffer_FillInfo(), which
>     sets the format specifier to "B".

What would PyMemoryView_FromBytes() do? The name suggests it takes a
bytes object, but you can already use PyMemoryView_FromObject() for
that.

(I personnaly think the general bytes-as-sequence-of-ints behaviour is
a mistake, so I wouldn't care much about an additional C API to enforce
that behaviour :-))

Regards

Antoine.




More information about the Python-Dev mailing list