Skip to content

Fix intcomma precision for decimal strings - #497

Open
widechaos wants to merge 1 commit into
python-humanize:mainfrom
widechaos:fix/intcomma-decimal-string-precision
Open

widechaos wants to merge 1 commit into
python-humanize:mainfrom
widechaos:fix/intcomma-decimal-string-precision

Conversation

@widechaos

Copy link
Copy Markdown

Fixes #496.

Changes proposed in this pull request:

  • Preserve decimal-string digits with Decimal when ndigits is omitted and the string has no exponent, then apply the existing grouping and locale separators. For example, "1234567890123456.78" becomes "1,234,567,890,123,456.78".
  • Document that this also retains trailing decimal zeros and uses fixed-point output for tiny plain decimal strings. Explicit ndigits, exponent inputs, invalid-string fallback and non-finite handling keep their existing paths.
  • Add precision regressions, unchanged-behavior controls, and German/French locale coverage. Translation binaries were generated locally.

Validation: the precision tests fail on the original code; the patch passes all 893 tests, 15 separate doctests, Ruff, Black and mypy. An independent check with a different long fractional string also passed in English, German and French.

The unmodified tox -e py command hit 15 benchmark setup errors with pytest 9.2.0 / pytest-codspeed 5.0.4 (Function._nodeid was removed). Recreating that single tox environment with a local pytest 9.0.2 installation constraint passed all 893 tests against the installed sdist. No repository dependency or tox configuration changes are included. The complete source-environment suite also passed with network access disabled. Windows, the multi-interpreter tox matrix, the full prek hook set and docs build were not run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

intcomma() loses digits from large decimal strings

1 participant