#1149367 lingua-franca: FTBFS (several date tests fail to parse the right date)

#1149367#5
Date:
2026-09-29 17:16:02 UTC
From:
To:
Hi!

While rebuilding the python related packages against the Python 3.15rc2
version we found that lingua-franca fails to build from source:
https://debusine.debian.net/debian/r-python-python3.15/artifact/4856295/

While we ran into this error during the rebuild against Python 3.15, the
reproducible builds infrastructure is also running into this issue:
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/lingua-franca.html

Thus, this is not a new problem and it should be solved right away.
Setting the severity to Serious.

There are 8 test errors in total:
======================================================================
FAIL: test_convert_times
(test.test_format_fa.TestNiceDateFormat.test_convert_times)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_format_fa.py",
line 244, in test_convert_times
     self.assertEqual(nice_time(dt, use_ampm=True),
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      "یک و بیست و دو دقیقه بعد از ظهر")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'یک و بیست و دو دقیقه قبل از ظهر' != 'یک و بیست و دو
دقیقه بعد از ظهر'
- یک و بیست و دو دقیقه قبل از ظهر
?                      - ^
+ یک و بیست و دو دقیقه بعد از ظهر
?                       ^^


======================================================================
FAIL: test_variant
(test.test_format_fa.TestPronounceNumber.test_variant)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_format_fa.py",
line 210, in test_variant
     self.assertEqual(nice_time(dt, use_24hour=True, use_ampm=True,
variant='formal'),

~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                      "شانزده و بیست و دو دقیقه")
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'چهار و بیست و دو دقیقه' != 'شانزده و بیست و دو دقیقه'
- چهار و بیست و دو دقیقه
? ^ --
+ شانزده و بیست و دو دقیقه
? ^^^^^


======================================================================
FAIL: test_extractdatetime_de
(test.test_parse_de.TestNormalize.test_extractdatetime_de)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_de.py",
line 99, in test_extractdatetime_de
     testExtract("setze den frisörtermin auf 5 tage von heute",
     ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 "2017-07-02 00:00:00", "setze frisörtermin")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_de.py",
line 96, in testExtract
     self.assertEqual(res[0], expected_date)
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: '2017-07-01 00:00:00' != '2017-07-02 00:00:00'
- 2017-07-01 00:00:00
?          ^
+ 2017-07-02 00:00:00
?          ^


======================================================================
FAIL: test_extract_datetime_relative
(test.test_parse_es.TestDatetime_es.test_extract_datetime_relative)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_es.py",
line 198, in test_extract_datetime_relative
     self.assertEqual(extract_datetime(
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
         "esta noche", anchorDate=datetime(1998, 1, 1),
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         lang='es'), [datetime(1998, 1, 1, 21, 0, 0,
tzinfo=default_timezone()), 'esta'])

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: [datetime.datetime(1997, 12, 31, 21, 0,
tzinfo=tzlocal()), 'esta'] != [datetime.datetime(1998, 1, 1, 21, 0,
tzinfo=tzlocal()), 'esta']

First differing element 0:
datetime.datetime(1997, 12, 31, 21, 0, tzinfo=tzlocal())
datetime.datetime(1998, 1, 1, 21, 0, tzinfo=tzlocal())

- [datetime.datetime(1997, 12, 31, 21, 0, tzinfo=tzlocal()), 'esta']
?                       ^  -----

+ [datetime.datetime(1998, 1, 1, 21, 0, tzinfo=tzlocal()), 'esta']
?                       ^    +++


======================================================================
FAIL: test_extract_datetime_relative
(test.test_parse_eu.TestDatetime_eu.test_extract_datetime_relative)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_eu.py",
line 193, in test_extract_datetime_relative
     self.assertEqual(extract_datetime(
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
         "gaurko gaua", anchorDate=datetime(1998, 1, 1),
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         lang='eu'), [datetime(1998, 1, 1, 21, 0, 0), ''])
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: Lists differ: [datetime.datetime(1997, 12, 31, 21, 0),
''] != [datetime.datetime(1998, 1, 1, 21, 0), '']

First differing element 0:
datetime.datetime(1997, 12, 31, 21, 0)
datetime.datetime(1998, 1, 1, 21, 0)

- [datetime.datetime(1997, 12, 31, 21, 0), '']
?                       ^  -----

+ [datetime.datetime(1998, 1, 1, 21, 0), '']
?                       ^    +++


======================================================================
FAIL: test_extractdatetime_en
(test.test_parse_fa.TestNormalize.test_extractdatetime_en)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_fa.py",
line 115, in test_extractdatetime_en
     testExtract("الان ساعت اینه",
     ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
                 "2017-06-27 13:04:00", "ساعت اینه")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_fa.py",
line 112, in testExtract
     self.assertEqual(res[0], expected_date, "for=" + text)
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: '2017-06-27 01:04:00' != '2017-06-27 13:04:00'
- 2017-06-27 01:04:00
?            -
+ 2017-06-27 13:04:00
?             +
  : for=الان ساعت اینه

======================================================================
FAIL: test_extractdatetime_fr
(test.test_parse_fr.TestNormalize_fr.test_extractdatetime_fr)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_fr.py",
line 167, in test_extractdatetime_fr
     testExtract_fr("rappelle-moi d'appeler maman le 3 août",
     ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                    "2017-08-03 00:00:00", "rappelle-moi appeler maman")
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_fr.py",
line 110, in testExtract_fr
     self.assertEqual(res[0], expected_date)
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: '2017-08-02 00:00:00' != '2017-08-03 00:00:00'
- 2017-08-02 00:00:00
?          ^
+ 2017-08-03 00:00:00
?          ^


======================================================================
FAIL: test_extractdatetime_sv
(test.test_parse_sv.TestNormalize.test_extractdatetime_sv)
----------------------------------------------------------------------
Traceback (most recent call last):
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_sv.py",
line 86, in test_extractdatetime_sv
     testExtract("Planera bakhållet 5 dagar från nu",
     ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                 "2017-07-02 00:00:00", "planera bakhållet")
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File
"/build/reproducible-path/lingua-franca-0.4.3/.pybuild/cpython3_3.14_lingua-franca/build/test/test_parse_sv.py",
line 83, in testExtract
     self.assertEqual(res[0], expected_date)
     ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: '2017-07-01 00:00:00' != '2017-07-02 00:00:00'
- 2017-07-01 00:00:00
?          ^
+ 2017-07-02 00:00:00
?          ^
----------------------------------------------------------------------