This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Jim Fasarakis-Hilliard
Recipients Jim Fasarakis-Hilliard
Date 2017-03-19.15:09:05
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1489936145.67.0.822710231299.issue29853@psf.upfronthosting.co.za>
In-reply-to
Content
Currently, there's a discrepancy in the exception reporting for the `.index` and `.remove` methods of many objects:

For arrays:

    array.remove(val) -> ValueError: array.remove(x): x not in list 
    array.index(val)  -> ValueError: array.index(x): x not in list

not only is always printing `x` not in list not informative, it's wrong since it isn't a list.

For tuples:

    tuple.index(val)  -> ValueError: tuple.index(x): x not in tuple

For lists:

    list.remove(val)  -> ValueError: list.remove(x): x not in list

list.index(val) produces a more informative message: ValueError: <val> is not in list

For deques:

    deque.remove(val) -> ValueError: deque.remove(x): x not in deque

similarly to lists, `deque.index(val)` prints the actual argument supplied.

I'm not sure if there's valid reasoning behind not providing the repr of the arguments in all `remove` methods but, if there isn't, I'd like to suggest changing all of them to use PyErr_Format and produce more informative messages:

    array.remove(val) -> ValueError: <val> is not in array 
    array.index(val)  -> ValueError: <val> is not in array
    tuple.index(val)  -> ValueError: <val> is not in tuple
    list.remove(val)  -> ValueError: <val> is not in list
    deque.remove(val) -> ValueError: <val> is not in deque
History
Date User Action Args
2017-03-19 15:09:05Jim Fasarakis-Hilliardsetrecipients: + Jim Fasarakis-Hilliard
2017-03-19 15:09:05Jim Fasarakis-Hilliardsetmessageid: <1489936145.67.0.822710231299.issue29853@psf.upfronthosting.co.za>
2017-03-19 15:09:05Jim Fasarakis-Hilliardlinkissue29853 messages
2017-03-19 15:09:05Jim Fasarakis-Hilliardcreate