Skip to content

Commit cbb2d3f

Browse files
committed
address review: rewrite without nested if
1 parent ba889d8 commit cbb2d3f

1 file changed

Lines changed: 11 additions & 11 deletions

File tree

Lib/fractions.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -339,24 +339,24 @@ def from_float(cls, f):
339339
Beware that Fraction.from_float(0.3) != Fraction(3, 10).
340340
341341
"""
342-
if not isinstance(f, float):
343-
if not isinstance(f, numbers.Integral):
344-
raise TypeError("%s.from_float() only takes floats, not %r (%s)" %
345-
(cls.__name__, f, type(f).__name__))
342+
if isinstance(f, float):
343+
return cls._from_coprime_ints(*f.as_integer_ratio())
344+
if isinstance(f, numbers.Integral):
346345
return cls(f)
347-
return cls._from_coprime_ints(*f.as_integer_ratio())
346+
raise TypeError("%s.from_float() only takes floats, not %r (%s)" %
347+
(cls.__name__, f, type(f).__name__))
348348

349349
@classmethod
350350
def from_decimal(cls, dec):
351351
"""Converts a finite Decimal instance to a rational number, exactly."""
352352
from decimal import Decimal
353-
if not isinstance(dec, Decimal):
354-
if not isinstance(dec, numbers.Integral):
355-
raise TypeError(
356-
"%s.from_decimal() only takes Decimals, not %r (%s)" %
357-
(cls.__name__, dec, type(dec).__name__))
353+
if isinstance(dec, Decimal):
354+
return cls._from_coprime_ints(*dec.as_integer_ratio())
355+
if isinstance(dec, numbers.Integral):
358356
dec = int(dec)
359-
return cls._from_coprime_ints(*dec.as_integer_ratio())
357+
return cls._from_coprime_ints(*dec.as_integer_ratio())
358+
raise TypeError("%s.from_decimal() only takes Decimals, not %r (%s)" %
359+
(cls.__name__, dec, type(dec).__name__))
360360

361361
@classmethod
362362
def _from_coprime_ints(cls, numerator, denominator, /):

0 commit comments

Comments
 (0)