Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34k
gh-130662: accept leading zeros in precision/width for Fraction's formatting#130663
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Conversation
skirpichev commented Feb 28, 2025
CC @ericvsmith per experts index |
serhiy-storchaka left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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?
skirpichev commented Mar 1, 2025 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Misc/NEWS.d/next/Library/2025-06-02-14-28-30.gh-issue-130662.EIgIR8.rst Outdated Show resolvedHide resolved
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>
5bc2d99 into python:mainUh oh!
There was an error while loading. Please reload this page.
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.