New submission from Max <m...@alleged.net>:

Bytes objects when indexed provide integers, but do not accept them to many 
functions, making them inconsistent with other sequences.

Basic example:
>>> test = b'012'
>>> n = test[1]
>>> n
49
>>> n in test
True
>>> test.index(n)
TypeError: expected an object with the buffer interface.

It is certainly unusual for n to be in the sequence, but not to be able to find 
it.  I would expect the result to be 1.  This set of commands with list, 
strings, tuples, but not bytes objects.

I suspect, from issue #10616, that all the following functions would be 
affected:
"bytes methods: partition, rpartition, find, index, rfind, rindex, count, 
translate, replace, startswith, endswith"

It would make more sense to me that instead of only supporting buffer interface 
objects, they also accept a single integer, and treat it as if it were provided 
a length-1 bytes object.

The use case I came across this problem was something like this:

Given seq1 and seq2, sequences of the same type:
[seq1.index(x) for x in seq2]

This works for strings, lists, tuples, but not bytes.

----------
components: Interpreter Core
messages: 136786
nosy: max-alleged
priority: normal
severity: normal
status: open
title: Bytes objects do not accept integers to many functions
versions: Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12170>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to