[Python-Dev] PEP 332 revival in coordination with pep 349? [ Was:Re: release plan for 2.5 ?] (original) (raw)

Josiah Carlson jcarlson at uci.edu
Tue Feb 14 18:28:54 CET 2006


James Y Knight <foom at fuhm.net> wrote:

I like it, it makes sense. Unicode strings are simply not allowed as arguments to the byte constructor. Thinking about it, why would it be otherwise? And if you're mixing str-strings and unicode-strings, that means the str-strings you're sometimes giving are actually not byte strings, but character strings anyhow, so you should be encoding those too. bytes(sorU.encode('utf-8')) is a perfectly good spelling.

I also like the removal of the encoding...

Kill the encoding argument, and you're left with:

Python2.X: - bytes(bytesobject) -> copy constructor - bytes(strobject) -> copy the bytes from the str to the bytes object - bytes(sequenceofints) -> make bytes with the values of the ints, error on overflow Python3.X removes str, and most APIs that did return str return bytes instead. Now all you have is: - bytes(bytesobject) -> copy constructor - bytes(sequenceofints) -> make bytes with the values of the ints, error on overflow

What's great is that this already works:

import array array.array('b', [1,2,3]) array('b', [1, 2, 3]) array.array('b', "hello") array('b', [104, 101, 108, 108, 111]) array.array('b', u"hello") Traceback (most recent call last): File "", line 1, in ? TypeError: array initializer must be list or string array.array('b', [150]) Traceback (most recent call last): File "", line 1, in ? OverflowError: signed char is greater than maximum array.array('B', [150]) array('B', [150]) array.array('B', [350]) Traceback (most recent call last): File "", line 1, in ? OverflowError: unsigned byte integer is greater than maximum

And out of the deal we can get both signed and unsigned ints.

Re: Adam Olsen

I'm starting to wonder, do we really need anything fancy? Wouldn't it be sufficient to have a way to compactly store 8-bit integers?

It already exists. It could just use another interface. The buffer interface offers any array the ability to return strings. That may have to change to return bytes objects in Py3k.



More information about the Python-Dev mailing list