From: Sergey B Kirpichev Date: Thu, 3 Jul 2025 10:57:31 +0000 (+0300) Subject: gh-130664: Treat '0' fill character with align '=' as zero-padding for Fraction's... X-Git-Tag: v3.15.0a1~1102 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c113a8e5236b31217d82ce289d3df6ec9e8411cd;p=thirdparty%2FPython%2Fcpython.git gh-130664: Treat '0' fill character with align '=' as zero-padding for Fraction's (GH-131067) --- diff --git a/Lib/fractions.py b/Lib/fractions.py index cb05ae7c2003..a8c670685228 100644 --- a/Lib/fractions.py +++ b/Lib/fractions.py @@ -504,6 +504,9 @@ class Fraction(numbers.Rational): trim_point = not alternate_form exponent_indicator = "E" if presentation_type in "EFG" else "e" + if align == '=' and fill == '0': + zeropad = True + # Round to get the digits we need, figure out where to place the point, # and decide whether to use scientific notation. 'point_pos' is the # relative to the _end_ of the digit string: that is, it's the number diff --git a/Lib/test/test_fractions.py b/Lib/test/test_fractions.py index d1d2739856c0..1875a2f529c9 100644 --- a/Lib/test/test_fractions.py +++ b/Lib/test/test_fractions.py @@ -1480,11 +1480,8 @@ class FractionTest(unittest.TestCase): (F('-1234.5678'), '08,.0f', '-001,235'), (F('-1234.5678'), '09,.0f', '-0,001,235'), # Corner-case - zero-padding specified through fill and align - # instead of the zero-pad character - in this case, treat '0' as a - # regular fill character and don't attempt to insert commas into - # the filled portion. This differs from the int and float - # behaviour. - (F('1234.5678'), '0=12,.2f', '00001,234.57'), + # instead of the zero-pad character. + (F('1234.5678'), '0=12,.2f', '0,001,234.57'), # Corner case where it's not clear whether the '0' indicates zero # padding or gives the minimum width, but there's still an obvious # answer to give. We want this to work in case the minimum width diff --git a/Misc/NEWS.d/next/Library/2025-03-11-05-24-14.gh-issue-130664.g0yNMm.rst b/Misc/NEWS.d/next/Library/2025-03-11-05-24-14.gh-issue-130664.g0yNMm.rst new file mode 100644 index 000000000000..dbe783a2a99e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-03-11-05-24-14.gh-issue-130664.g0yNMm.rst @@ -0,0 +1,4 @@ +Handle corner-case for :class:`~fractions.Fraction`'s formatting: treat +zero-padding (preceding the width field by a zero (``'0'``) character) as an +equivalent to a fill character of ``'0'`` with an alignment type of ``'='``, +just as in case of :class:`float`'s.