Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Restore back _normalize kwarg for the Fraction.__new__()
  • Loading branch information
skirpichev committed Feb 11, 2023
commit 43243910dc37b3dbdcf2bfe776eb0689028565be
13 changes: 7 additions & 6 deletions Lib/fractions.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ class Fraction(numbers.Rational):
__slots__ = ('_numerator', '_denominator')

# We're immutable, so use __new__ not __init__
def __new__(cls, numerator=0, denominator=None):
def __new__(cls, numerator=0, denominator=None, *, _normalize=True):
"""Constructs a Rational.

Takes a string like '3/2' or '1.5', another Rational instance, a
Expand Down Expand Up @@ -279,11 +279,12 @@ def __new__(cls, numerator=0, denominator=None):

if denominator == 0:
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
g = math.gcd(numerator, denominator)
if denominator < 0:
g = -g
numerator //= g
denominator //= g
if _normalize:
g = math.gcd(numerator, denominator)
if denominator < 0:
g = -g
numerator //= g
denominator //= g
self._numerator = numerator
self._denominator = denominator
return self
Expand Down