[Python-Dev] int()'s ValueError behaviour

M.-A. Lemburg mal at egenix.com
Sun Apr 9 22:27:34 CEST 2006


Guido van Rossum wrote:
> Go ahead and fix it. This was probably never changed since 1990 or
> so... Do expect some code brakage where people rely on the old
> behavior. :-(
> 
> --Guido
> 
> On 4/9/06, Thomas Wouters <thomas at python.org> wrote:
>> Someone on IRC (who refuses to report bugs on sourceforge, so I guess he
>> wants to remain anonymous) came with this very amusing bug: int(), when
>> raising ValueError, doesn't quote (or repr(), rather) its arguments:
>>
>>  >>> int("")
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: invalid literal for int():
>>>>> int("34\n\n\n5")
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: invalid literal for int(): 34
>>
>>
>> 5
>> Unicode behaviour also isn't always consistent:
>>>>> int(u'\u0100')
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> UnicodeEncodeError: 'decimal' codec can't encode character u'\u0100' in
>> position 0: invalid decimal Unicode string
>>>>> int(u'\u09ec', 6)
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> ValueError: invalid literal for int(): 6
>>
>> And trying to use the 'decimal' codec directly:
>>>>> u'6'.encode('decimal')
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in ?
>> LookupError: unknown encoding: decimal

This part I can explain: the internal decimal codec isn't
made public through the codec registry since it only
supports encoding.

The encoder converts a Unicode decimal strings to plain
ASCII decimals.

The error message looks like a standard codec error message
because the raise_encode_exception() API is used.

>> I'm not sure if the latter problems are fixable, but the former should be
>> fixed by passing the argument to ValueError through repr(), I think. It's
>> also been suggested (by the reporter, and I agree) that the actual base
>> should be in the errormessage too. Is there some reason not to do this that
>> I've overlooked?
>>
>> --
>> Thomas Wouters <thomas at python.org>
>>
>> Hi! I'm a .signature virus! copy me into your .signature file to help me
>> spread!
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev at python.org
>> http://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe:
>> http://mail.python.org/mailman/options/python-dev/guido%40python.org
>>
>>
>>
> 
> 
> --
> --Guido van Rossum (home page: http://www.python.org/~guido/)
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/mal%40egenix.com

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Apr 09 2006)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::


More information about the Python-Dev mailing list