Raymond Hettinger added the comment:

A negative value will almost never be the cause of this exception.

The proposed new message is more accurate but is also less useful and 
informative.  Getting a ValueError exception already means "the value is 
invalid".  The job of the message is to suggest the likely cause so a person 
will no what to do about it. 

That said, I'll tweak the message at some point but I'm rejecting the patch 
as-is because I believe it makes the message worse rather better.

Please do keep looking for ways to improve Python's error messages and make 
them as useful as possible.

Here's food for thought:  In Py2.x, the error message for len(obj) is different 
depending on whether it is a new-style or old-style class.  If someone has 
forgotten to add the appropriate magic method to their class, which message 
would be the most helpful:

>>> class A(object): pass

>>> len(A())
Traceback (most recent call last):
    ...
TypeError: object of type 'A' has no len()

>>> class A: pass
>>> len(A())
Traceback (most recent call last):
    ...
AttributeError: A instance has no attribute '__len__'

----------
resolution:  -> rejected
status: open -> closed

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

Reply via email to