[New-bugs-announce] [issue16469] Exceptions raised by Fraction() from those raised by int()

Case Van Horsen report at bugs.python.org
Wed Nov 14 07:30:20 CET 2012


New submission from Case Van Horsen:

When attempting to convert a float("nan"), float("inf"), or float("-inf"), fractions.Fraction() raises different exceptions than int()

>>> int(float("nan"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: cannot convert float NaN to integer
>>> fractions.Fraction(float("nan"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/lib/python3.2/fractions.py", line 114, in __new__
    value = Fraction.from_float(numerator)
  File "/opt/local/lib/python3.2/fractions.py", line 186, in from_float
    raise TypeError("Cannot convert %r to %s." % (f, cls.__name__))
TypeError: Cannot convert nan to Fraction.
>>> int(float("inf"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: cannot convert float infinity to integer
>>> fractions.Fraction(float("inf"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/lib/python3.2/fractions.py", line 114, in __new__
    value = Fraction.from_float(numerator)
  File "/opt/local/lib/python3.2/fractions.py", line 186, in from_float
    raise TypeError("Cannot convert %r to %s." % (f, cls.__name__))
TypeError: Cannot convert inf to Fraction.
>>> int(float("-inf"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: cannot convert float infinity to integer
>>> fractions.Fraction(float("-inf"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/lib/python3.2/fractions.py", line 114, in __new__
    value = Fraction.from_float(numerator)
  File "/opt/local/lib/python3.2/fractions.py", line 186, in from_float
    raise TypeError("Cannot convert %r to %s." % (f, cls.__name__))
TypeError: Cannot convert -inf to Fraction.

Should the exceptions be changed to ValueError and OverflowError?

----------
components: Library (Lib)
messages: 175536
nosy: casevh
priority: normal
severity: normal
status: open
title: Exceptions raised by Fraction() from those raised by int()
versions: Python 3.3

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue16469>
_______________________________________


More information about the New-bugs-announce mailing list