classification
Title: list().index() should provide better error reporting
Type: Stage:
Components: Library (Lib) Versions: Python 2.6
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: Nosy List: benjamin.peterson, djc, merwok
Priority: normal Keywords:

Created on 2009-11-02 11:59 by djc, last changed 2011-11-07 16:49 by merwok. This issue is now closed.

Messages (6)
msg94825 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2009-11-02 11:59
>>> a = 'b'
>>> [].index(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.index(x): x not in list

This is suboptimal. IMO it would be much more useful if the ValueError
reported the actual value that wasn't in the list, like this:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.index('b'): 'b' not in list

The error in general doesn't really seem to fit in, repeating the code
but with a fake variable name in it. In real contexts, it's mostly just
repeating what's there on a previous line:

 File "/home/watt/src/dawkins/ttlib.py", line 86, in shift
   bits.append(SHIFTS.index(rest.split('_')[0]))
 ValueError: list.index(x): x not in list

So maybe just make it "'b' not in list"? Or do we really need a
reference to the index() method in there?
msg94826 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2009-11-02 11:59
FWIW, quickly grepping through the raises of ValueErrors in the 2.6
stdlib doesn't bring up any other usage of repeat-with-fake-variable-x.
msg94830 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2009-11-02 15:07
How's "object is not in list"?
msg94831 - (view) Author: Dirkjan Ochtman (djc) * (Python committer) Date: 2009-11-02 15:14
I want the actual value in there, though! So I can spot the bug.
msg94834 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2009-11-02 16:15
r76058 should do the trick.
msg147239 - (view) Author: √Čric Araujo (merwok) * (Python committer) Date: 2011-11-07 16:49
> FWIW, quickly grepping through the raises of ValueErrors in the 2.6
> stdlib doesn't bring up any other usage of repeat-with-fake-variable-x.

#13349 begs to differ :)
History
Date User Action Args
2011-11-07 16:49:31merwoksetnosy: + merwok
messages: + msg147239
2009-11-02 16:15:37benjamin.petersonsetstatus: open -> closed
resolution: accepted
messages: + msg94834
2009-11-02 15:14:20djcsetmessages: + msg94831
2009-11-02 15:07:50benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg94830
2009-11-02 11:59:58djcsetmessages: + msg94826
2009-11-02 11:59:12djccreate