[Python-Dev] PEP 467: last round (?) (original) (raw)

Victor Stinner victor.stinner at gmail.com
Thu Sep 1 17:06:15 EDT 2016


2016-09-01 21:36 GMT+02:00 Ethan Furman <ethan at stoneleaf.us>:

Abstract ========

This PEP proposes five small adjustments to the APIs of the bytes and bytearray types to make it easier to operate entirely in the binary domain:

You should add bchr() in the Abstract.

* Deprecate passing single integer values to bytes and bytearray * Add bytes.fromsize and bytearray.fromsize alternative constructors

I understand that main reason for this change is to catch bugs when bytes(obj) is used and obj is not supposed to be an integer.

So I expect that bytes(int) will be quickly deprecated, but the PEP doesn't schedule a removal of the feature. So it looks more than only adding an alias to bytes(int).

I would prefer to either schedule a removal of bytes(int), or remove bytes.fromsize() from the PEP.

* Add bytes.fromord and bytearray.fromord alternative constructors

Hum, you already propose to add a builtin function. Why would we need two ways to create a single byte?

I'm talking about bchr(int)==bytes.fromord(int). I'm not sure that there is an use case for bytearray.fromord(int).

* Add bytes.getbyte and bytearray.getbyte byte retrieval methods * Add bytes.iterbytes and bytearray.iterbytes alternative iterators

I like these ones :-)

In particular, there's a reasonable case to be made that bytes(x) (where x is an integer) should behave like the bytes.fromint(x) proposal in this PEP.

"fromint"? Is it bytes.fromord()/bchr()?

Open Questions ==============

Do we add iterbytes to memoryview, or modify memoryview.cast() to accept 's' as a single-byte interpretation? Or do we ignore memory for now and add it later?

It's nice to have bytes.iterbytes() to help porting Python 2 code, but I'm not sure that this function would be super popular in new Python 3 code.

I don't think that a memoryview.iterbytes() (or cast("s")) would be useful.

Victor



More information about the Python-Dev mailing list