From ead32b10f4101140a83ec5ce7d3c9d37149f18ed Mon Sep 17 00:00:00 2001 From: He Chen Date: Mon, 19 Aug 2019 16:06:41 -0400 Subject: [PATCH 1/2] fix small decimal with disabled decimal_quantization --- babel/numbers.py | 2 +- tests/test_numbers.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/babel/numbers.py b/babel/numbers.py index 6888c9cb4..cf819fc9a 100644 --- a/babel/numbers.py +++ b/babel/numbers.py @@ -1063,7 +1063,7 @@ def _format_int(self, value, min, max, locale): def _quantize_value(self, value, locale, frac_prec): quantum = get_decimal_quantum(frac_prec[1]) rounded = value.quantize(quantum) - a, sep, b = str(rounded).partition(".") + a, sep, b = "{:f}".format(rounded).partition(".") number = (self._format_int(a, self.int_prec[0], self.int_prec[1], locale) + self._format_frac(b or '0', locale, frac_prec)) diff --git a/tests/test_numbers.py b/tests/test_numbers.py index 6e26fe900..a980a66ad 100644 --- a/tests/test_numbers.py +++ b/tests/test_numbers.py @@ -690,3 +690,7 @@ def test_parse_decimal_nbsp_heuristics(): n = decimal.Decimal("12345.123") assert numbers.parse_decimal("12 345.123", locale="fi") == n assert numbers.parse_decimal(numbers.format_decimal(n, locale="fi"), locale="fi") == n + + +def test_very_small_decimal_no_quantization(): + assert numbers.format_decimal(decimal.Decimal('1E-7'), locale='en', decimal_quantization=False) == '0.0000001' From 08581c061bdb81cdeed9dd96cc980fbd12e974f0 Mon Sep 17 00:00:00 2001 From: He Chen Date: Wed, 21 Aug 2019 11:01:54 -0400 Subject: [PATCH 2/2] fix CI: use new version of freezegun --- setup.py | 1 + tox.ini | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 0032a3a05..a37ecbccd 100755 --- a/setup.py +++ b/setup.py @@ -63,6 +63,7 @@ def run(self): # pytz otherwise does not install on pip 1.4 or # higher. 'pytz>=2015.7', + 'freezegun==0.3.12', ], cmdclass={'import_cldr': import_cldr}, diff --git a/tox.ini b/tox.ini index b3f8041f4..aa4276d1c 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,12 @@ [tox] -envlist = py27, pypy, py34, py35, py36, py37, pypy3, py27-cdecimal +envlist = py27, pypy, py34, py35, py36, py37, pypy3, py27-cdecimal, py38 [testenv] deps = pytest==4.3.1 pytest-cov==2.6.1 cdecimal: m3-cdecimal - freezegun==0.3.11 + freezegun==0.3.12 whitelist_externals = make commands = make clean-cldr test passenv = PYTHON_TEST_FLAGS