On 9/27/07, Joel Bender <[EMAIL PROTECTED]> wrote: > First, please enforce that where these functions take a "string" > parameter that they require an octet or octet string (I couldn't find > what kinds of arguments these functions require in PEP 3118): > > >>> x = b'123*45' > >>> x.find("*") > TypeError: expected an octet string or int > > >>> x.find(b'*') > 3 > >>> x.find(42) > 3
PEP 3118 has nothing to do with this, but one of the last paragraphs of PEP 3137 spells it out: """ The str type currently implements the PEP 3118 buffer API. While this is perhaps occasionally convenient, it is also potentially confusing, because the bytes accessed via the buffer API represent a platform-depending encoding: depending on the platform byte order and a compile-time configuration option, the encoding could be UTF-16-BE, UTF-16-LE, UTF-32-BE, or UTF-32-LE. Worse, a different implementation of the str type might completely change the bytes representation, e.g. to UTF-8, or even make it impossible to access the data as a contiguous array of bytes at all. Therefore, the PEP 3118 buffer API will be removed from the str type. """ > Second, Please add slice operations and .append() to mutable octet strings: > > >>> x[:0] = b'>' # start of message > >>> x.append(sum(x) % 256) # simple checksum Slice operations area already in the PEP, under "Slicing": """ Slice assignment to a mutable buffer object accept anything that implements the PEP 3118 buffer API, or an iterable of integers in range(256). """ I agree that append() and a few other list methods (insert(), extend()) should be added to the buffer type. The PyBytes implementation already has these so it's just a matter of updating the PEP. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com