While upgrading the Debian package to latest version I am observing a bunch of test failures on some locales due to minor changes. I'm not sure if the expected output should be changed for these assertions.
if it makes sense to simply skip/patch.
=================================== FAILURES ===================================
______________ [doctest] babel.dates.DateTimeFormat.format_period ______________
1505 u'iltapäivä'
1506 >>> format.format_period('B', 4)
1507 u'iltapäivällä'
1508 >>> format.format_period('B', 5)
1509 u'ip.'
1510
1511 >>> format = DateTimeFormat(datetime(2022, 4, 28, 6, 27), 'zh_Hant')
1512 >>> format.format_period('a', 1)
1513 u'上午'
1514 >>> format.format_period('b', 1)
UNEXPECTED EXCEPTION: ValueError('Could not format period morning1 in zh_Hant')
Traceback (most recent call last):
File "/usr/lib/python3.11/doctest.py", line 1353, in __run
exec(compile(example.source, filename, "single",
File "<doctest babel.dates.DateTimeFormat.format_period[9]>", line 1, in <module>
File "/<<PKGBUILDDIR>>/babel/dates.py", line 1535, in format_period
raise ValueError(f"Could not format period {period} in {self.locale}")
ValueError: Could not format period morning1 in zh_Hant
/<<PKGBUILDDIR>>/babel/dates.py:1514: UnexpectedException
__________________ [doctest] babel.numbers.format_scientific ___________________
954 Return value formatted in scientific notation for a specific locale.
955
956 >>> format_scientific(10000, locale='en_US')
957 u'1E4'
958 >>> format_scientific(10000, locale='ar_EG', numbering_system='default')
Expected:
u'1اس4'
Got:
'1أس4'
/<<PKGBUILDDIR>>/babel/numbers.py:958: DocTestFailure
________________ [doctest] babel.numbers.get_exponential_symbol ________________
416 Return the symbol used by the locale to separate mantissa and exponent.
417
418 >>> get_exponential_symbol('en_US')
419 u'E'
420 >>> get_exponential_symbol('ar_EG', numbering_system='default')
Expected:
u'اس'
Got:
'أس'
/<<PKGBUILDDIR>>/babel/numbers.py:420: DocTestFailure
__________________ [doctest] babel.units.format_compound_unit __________________
242 >>> format_compound_unit(1234.5, "ton", 15, denominator_unit="hour", locale="ar_EG", numbering_system="arab")
243 '1٬234٫5 طن لكل 15 ساعة'
244
245 >>> format_compound_unit(160, denominator_unit="square-meter", locale="fr")
246 '160 par m\xe8tre carr\xe9'
247
248 >>> format_compound_unit(4, "meter", "ratakisko", length="short", locale="fi")
249 '4 m/ratakisko'
250
251 >>> format_compound_unit(35, "minute", denominator_unit="fathom", locale="sv")
Expected:
'35 minuter per famn'
Got:
'35 minuter per length-fathom'
/<<PKGBUILDDIR>>/babel/units.py:251: DocTestFailure
______________________ FormatDecimalTestCase.test_compact ______________________
self = <tests.test_numbers.FormatDecimalTestCase testMethod=test_compact>
def test_compact(self):
assert numbers.format_compact_decimal(1, locale='en_US', format_type="short") == '1'
assert numbers.format_compact_decimal(999, locale='en_US', format_type="short") == '999'
assert numbers.format_compact_decimal(1000, locale='en_US', format_type="short") == '1K'
assert numbers.format_compact_decimal(9000, locale='en_US', format_type="short") == '9K'
assert numbers.format_compact_decimal(9123, locale='en_US', format_type="short", fraction_digits=2) == '9.12K'
assert numbers.format_compact_decimal(10000, locale='en_US', format_type="short") == '10K'
assert numbers.format_compact_decimal(10000, locale='en_US', format_type="short", fraction_digits=2) == '10K'
assert numbers.format_compact_decimal(1000000, locale='en_US', format_type="short") == '1M'
assert numbers.format_compact_decimal(9000999, locale='en_US', format_type="short") == '9M'
assert numbers.format_compact_decimal(9000900099, locale='en_US', format_type="short", fraction_digits=5) == '9.0009B'
assert numbers.format_compact_decimal(1, locale='en_US', format_type="long") == '1'
assert numbers.format_compact_decimal(999, locale='en_US', format_type="long") == '999'
assert numbers.format_compact_decimal(1000, locale='en_US', format_type="long") == '1 thousand'
assert numbers.format_compact_decimal(9000, locale='en_US', format_type="long") == '9 thousand'
assert numbers.format_compact_decimal(9000, locale='en_US', format_type="long", fraction_digits=2) == '9 thousand'
assert numbers.format_compact_decimal(10000, locale='en_US', format_type="long") == '10 thousand'
assert numbers.format_compact_decimal(10000, locale='en_US', format_type="long", fraction_digits=2) == '10 thousand'
assert numbers.format_compact_decimal(1000000, locale='en_US', format_type="long") == '1 million'
assert numbers.format_compact_decimal(9999999, locale='en_US', format_type="long") == '10 million'
assert numbers.format_compact_decimal(9999999999, locale='en_US', format_type="long", fraction_digits=5) == '10 billion'
assert numbers.format_compact_decimal(1, locale='ja_JP', format_type="short") == '1'
assert numbers.format_compact_decimal(999, locale='ja_JP', format_type="short") == '999'
assert numbers.format_compact_decimal(1000, locale='ja_JP', format_type="short") == '1000'
assert numbers.format_compact_decimal(9123, locale='ja_JP', format_type="short") == '9123'
assert numbers.format_compact_decimal(10000, locale='ja_JP', format_type="short") == '1万'
> assert numbers.format_compact_decimal(1234567, locale='ja_JP', format_type="long") == '123万'
tests/test_numbers.py:167:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
babel/numbers.py:616: in format_compact_decimal
compact_format = locale.compact_decimal_formats[format_type]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <babel.localedata.LocaleDataDict object at 0x7f4026072950>, key = 'long'
def __getitem__(self, key: str | int | None) -> Any:
> orig = val = self._data[key]
E KeyError: 'long'
babel/localedata.py:234: KeyError
_________________________ test_get_exponential_symbol __________________________
def test_get_exponential_symbol():
assert numbers.get_exponential_symbol('en_US') == 'E'
assert numbers.get_exponential_symbol('en_US', numbering_system="latn") == 'E'
assert numbers.get_exponential_symbol('en_US', numbering_system="default") == 'E'
assert numbers.get_exponential_symbol('ja_JP') == 'E'
assert numbers.get_exponential_symbol('ar_EG') == 'E'
> assert numbers.get_exponential_symbol('ar_EG', numbering_system="default") == 'اس'
E AssertionError: assert 'أس' == 'اس'
E - اس
E + أس
tests/test_numbers.py:376: AssertionError
____________________ test_format_currency_long_display_name ____________________
def test_format_currency_long_display_name():
assert (numbers.format_currency(1099.98, 'USD', locale='en_US', format_type='name')
== '1,099.98 US dollars')
assert (numbers.format_currency(1099.98, 'USD', locale='en_US', format_type='name', numbering_system="default")
== '1,099.98 US dollars')
assert (numbers.format_currency(1099.98, 'USD', locale='ar_EG', format_type='name', numbering_system="default")
== '1٬099٫98 دولار أمريكي')
assert (numbers.format_currency(1.00, 'USD', locale='en_US', format_type='name')
== '1.00 US dollar')
assert (numbers.format_currency(1.00, 'EUR', locale='en_US', format_type='name')
== '1.00 euro')
assert (numbers.format_currency(2, 'EUR', locale='en_US', format_type='name')
== '2.00 euros')
# This tests that '{1} {0}' unitPatterns are found:
> assert (numbers.format_currency(1, 'USD', locale='sw', format_type='name')
== 'dola ya Marekani 1.00')
E AssertionError: assert '1.00 dola ya Marekani' == 'dola ya Marekani 1.00'
E - dola ya Marekani 1.00
E ? -----
E + 1.00 dola ya Marekani
E ? +++++
tests/test_numbers.py:596: AssertionError
____________________________ test_format_scientific ____________________________
def test_format_scientific():
assert numbers.format_scientific(10000, locale='en_US') == '1E4'
assert numbers.format_scientific(10000, locale='en_US', numbering_system="default") == '1E4'
assert numbers.format_scientific(4234567, '#.#E0', locale='en_US') == '4.2E6'
assert numbers.format_scientific(4234567, '0E0000', locale='en_US') == '4.234567E0006'
assert numbers.format_scientific(4234567, '##0E00', locale='en_US') == '4.234567E06'
assert numbers.format_scientific(4234567, '##00E00', locale='en_US') == '42.34567E05'
assert numbers.format_scientific(4234567, '0,000E00', locale='en_US') == '4,234.567E03'
assert numbers.format_scientific(4234567, '##0.#####E00', locale='en_US') == '4.23457E06'
assert numbers.format_scientific(4234567, '##0.##E00', locale='en_US') == '4.23E06'
assert numbers.format_scientific(42, '00000.000000E0000', locale='en_US') == '42000.000000E-0003'
> assert numbers.format_scientific(0.2, locale="ar_EG", numbering_system="default") == '2اس\u061c-1'
E AssertionError: assert '2أس\u061c-1' == '2اس\u061c-1'
E - 2اس-1
E ? ^
E + 2أس-1
E ? ^
tests/test_numbers.py:692: AssertionError
______________________ TestFormat.test_format_scientific _______________________
self = <tests.test_support.TestFormat object at 0x7f4027595650>
def test_format_scientific(self):
assert support.Format('en_US').scientific(10000) == '1E4'
assert support.Format('en_US').scientific(Decimal("10000")) == '1E4'
> assert support.Format('ar_EG', numbering_system="default").scientific(10000) == '1اس4'
E AssertionError: assert '1أس4' == '1اس4'
E - 1اس4
E ? ^
E + 1أس4
E ? ^
tests/test_support.py:348: AssertionError
Overview Description
While upgrading the Debian package to latest version I am observing a bunch of test failures on some locales due to minor changes. I'm not sure if the expected output should be changed for these assertions.
Steps to Reproducewhere I have no idea
if it makes sense to simply skip/patch.
Run the test suite with:
LC_ALL=C py.test-3Actual Results
Expected Results
All tests should pass
Additional Information
Version info:
python3: 3.12.1
pytest: 7.4.4
tz: 2023.3.post1-2
freezegun: 1.2.1
unicode-cldr-core: 44-0.1
tzdata: 2023d-1