Uh oh!
There was an error while loading. Please reload this page.
gh-130662: accept leading zeros in precision/width for Fraction's formatting - #130663
Conversation
skirpichev
commented
Feb 28, 2025
CC @ericvsmith per experts index |
serhiy-storchaka
left a comment
There was a problem hiding this comment.
LGTM.
I have some minor suggestions for tests.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
gvanrossum
left a comment
There was a problem hiding this comment.
Note that there's another inconsistency between float and Fraction.
x=1/3f"{x:_>010f}"# '__3.140000', ignores the zero-padx=Fraction(1, 3)
Traceback (mostrecentcalllast):
File"<python-input-4>", line1, in<module>f"{x:_>010f}"^^^^^^^^^^File"/Users/guido/cpython/Lib/fractions.py", line600, in__format__raiseValueError(
...<2lines>...
)
ValueError: Invalidformatspecifier'_>010f'forobjectof type 'Fraction'So we still fail the goal of Fraction supporting everything that float does. Since Fraction actually is more strict (which is the way of the future) aren't we fixing this the wrong way?
Here is implementation pr, for context: #100161 The ValueError raised in case both alignment (and the fill character) and zero padding are specified on the ground "refuse the temptation to guess". In principle, it's not hard to reproduce float's behavior (zero padding is ignored if the fill character is specified). Though, maybe it's better to align this with the Fraction instead. Probably, it's a separate issue. Edit: #130716 Few another incompatibilities: #130664 |
gvanrossum
commented
Mar 1, 2025
As happens occasionally, the docs are out of sync with the implementation, and we should respond by updating the docs, not the code. IMO. |
skirpichev
commented
Mar 1, 2025
The problem is that the stdlib has several beasts (Decimal and Fraction), that have slightly different implementations of new-style formatting. IMO, documenting all these differences will make documentation much less readable. Also, it's less obvious to which convention should follow external modules, like the mpmath or the gmpy2. |
gvanrossum
commented
Mar 1, 2025
Okay, I will leave it to more active core devs to sort out. |
skirpichev
commented
Apr 7, 2025
Alternative pr: #130717 |
vstinner
left a comment
There was a problem hiding this comment.
LGTM. I agree with @serhiy-storchaka: #130662 (comment)
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Thanks @skirpichev for the PR, and @vstinner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14. |
…'s formatting (pythonGH-130663) (cherry picked from commit 5bc2d99) Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
GH-135026 is a backport of this pull request to the 3.14 branch. |
vstinner
commented
Jun 2, 2025
Merged, thank you.
I disagree: we should not backport this change to stable branches. |
picnixz
commented
Jun 2, 2025
Wasn't it a fix for something we introduced in 3.14? @skirpichev |
vstinner
commented
Jun 2, 2025
No, Python 3.13 has the same behavior for example. It was "always" like that. @skirpichev proposed to have the behavior for all types: float, Fraction, Decimal. Before, only float accepted leading zeros. |
skirpichev
commented
Jun 2, 2025
Why not? It's a bug, isn't? |
vstinner
commented
Jun 2, 2025
From my point of view, it's a new feature and existing projects may rely on the current (Python 3.14) behavior. |
skirpichev
commented
Jun 2, 2025
How?! The issue is about formatting stdlib types (Fractions and Decimals, in a separate pr). Should external projects use current formatting specification mini-language or use more strict rules? This was coming from mpmath/mpmath#915. |
serhiy-storchaka
commented
Jun 2, 2025
From my point of view, this is a borderline between a minor feature and an unsignificant bug fix which we may not want to backport. So maybe to 3.14 only? The solved problem is rather scholastic. |
Thanks @skirpichev for the PR, and @vstinner for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14. |
…'s formatting (pythonGH-130663) (cherry picked from commit 5bc2d99) Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
GH-136361 is a backport of this pull request to the 3.14 branch. |
…'s formatting (python#130663) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
…'s formatting (python#130663) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
…'s formatting (python#130663) Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
Uh oh!
There was an error while loading. Please reload this page.