bug in str.startswith() and str.endswith()

E

Ethan Furman

I've tried this in 2.5 - 3.2:

--> 'this is a test'.startswith('this')
True
--> 'this is a test'.startswith('this', None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__
method

The 3.2 docs say this:

str.startswith(prefix[, start[, end]])
Return True if string starts with the prefix, otherwise return False.
prefix can also be a tuple of prefixes to look for. With optional start,
test string beginning at that position. With optional end, stop
comparing string at that position

str.endswith(suffix[, start[, end]])
Return True if the string ends with the specified suffix, otherwise
return False. suffix can also be a tuple of suffixes to look for. With
optional start, test beginning at that position. With optional end, stop
comparing at that position.

Any reason this is not a bug?

~Ethan~
 
M

Mel

Ethan said:
I've tried this in 2.5 - 3.2:

--> 'this is a test'.startswith('this')
True
--> 'this is a test'.startswith('this', None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__
method

The 3.2 docs say this:

str.startswith(prefix[, start[, end]])
Return True if string starts with the prefix, otherwise return False.
prefix can also be a tuple of prefixes to look for. With optional start,
test string beginning at that position. With optional end, stop
comparing string at that position

str.endswith(suffix[, start[, end]])
Return True if the string ends with the specified suffix, otherwise
return False. suffix can also be a tuple of suffixes to look for. With
optional start, test beginning at that position. With optional end, stop
comparing at that position.

Any reason this is not a bug?

It's a wart at the very least. The same thing happened in Python2 with
range and xrange; there seemed no way to explicitly pass "default"
arguments.

Mel.
 
R

Roy Smith

Ethan Furman said:
--> 'this is a test'.startswith('this')
True
--> 'this is a test'.startswith('this', None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: slice indices must be integers or None or have an __index__
method [...]
Any reason this is not a bug?

+1 for it being a bug.
 
S

Stefan Behnel

Roy Smith, 27.05.2011 03:13:
Ethan said:
--> 'this is a test'.startswith('this')
True
--> 'this is a test'.startswith('this', None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in<module>
TypeError: slice indices must be integers or None or have an __index__
method [...]
Any reason this is not a bug?

+1 for it being a bug.

Meaning that the right thing to do at this point is to file a bug report.

Stefan
 
R

Roy Smith

Stefan Behnel said:
Roy Smith, 27.05.2011 03:13:
Ethan said:
--> 'this is a test'.startswith('this')
True
--> 'this is a test'.startswith('this', None, None)
Traceback (most recent call last):
File "<stdin>", line 1, in<module>
TypeError: slice indices must be integers or None or have an __index__
method [...]
Any reason this is not a bug?

+1 for it being a bug.

Meaning that the right thing to do at this point is to file a bug report.

And now we just need to figure out if it's a bug in the code or the
documentation :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top