Bug 2374314

Summary: Cython: FTBFS in Fedora Rawhide with tests: AssertionErrors + build hangs forever
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: CythonAssignee: Charalampos Stratakis <cstratak>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: awilliam, igor.raits, mhroncok, ndbecker2, python-packagers-sig, steve.traylen
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
URL: https://koschei.fedoraproject.org/package/Cython
Whiteboard:
Fixed In Version: Cython-3.1.2-2.fc43 Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-08-06 23:13:23 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 2365167    
Bug Blocks: 2322407, 2339432    

Description Karolina Surma 2025-06-23 12:58:39 UTC
Description of problem:
Package Cython fails to build from source in Fedora Rawhide when run with tests.

Version-Release number of selected component (if applicable):
3.0.12-3.fc43

Steps to Reproduce:
Switch the tests bcond on
Run a mockbuild


Reproducible: Always

Actual Results:
There's a few groups of issues:

ERROR: test_badsyntax_3 (test_coroutines_pep492.AsyncBadSyntaxTest.test_badsyntax_3)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "tests/run/test_coroutines_pep492.pyx", line 524, in test_coroutines_pep492.AsyncBadSyntaxTest.test_badsyntax_3 (test_coroutines_pep492.c:24716)
    with warnings.catch_warnings():
  File "tests/run/test_coroutines_pep492.pyx", line 526, in test_coroutines_pep492.AsyncBadSyntaxTest.test_badsyntax_3 (test_coroutines_pep492.c:24658)
    compile("async = 1", "<test>", "exec")
  File "tests/run/test_coroutines_pep492.pyx", line 97, in test_coroutines_pep492.compile (test_coroutines_pep492.c:19612)
    exec(code_string, {}, {})
  File "tests/run/test_coroutines_pep492.pyx", line 90, in test_coroutines_pep492.exec (test_coroutines_pep492.c:19247)
    ns = inline(code_string, locals=l, globals=g, lib_dir=os.path.dirname(__file__), language_level=3)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Shadow.py", line 149, in inline
    return _cython_inline(f, *args, **kwds)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Build/Inline.py", line 287, in cython_inline
    build_extension.extensions = cythonize(
                                 ~~~~~~~~~^
        [extension],
        ^^^^^^^^^^^^
        include_path=cython_include_dirs or ['.'],
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        compiler_directives=cython_compiler_directives,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        quiet=quiet)
        ^^^^^^^^^^^^
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Build/Dependencies.py", line 1154, in cythonize
    cythonize_one(*args)
    ~~~~~~~~~~~~~^^^^^^^
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Build/Dependencies.py", line 1300, in cythonize_one
    result = compile_single(pyx_file, options, full_module_name=full_module_name)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/Main.py", line 615, in compile_single
    return run_pipeline(source, options, full_module_name)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/Main.py", line 539, in run_pipeline
    err, enddata = Pipeline.run_pipeline(pipeline, source)
                   ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/Pipeline.py", line 398, in run_pipeline
    data = run(phase, data)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/Pipeline.py", line 375, in run
    return phase(data)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/Pipeline.py", line 52, in generate_pyx_code_stage
    module_node.process_implementation(options, result)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/ModuleNode.py", line 222, in process_implementation
    self.generate_c_code(env, options, result)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Compiler/ModuleNode.py", line 548, in generate_c_code
    f = open_new_file(result.c_file)
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/Cython/Utils.py", line 152, in open_new_file
    return codecs.open(path, "w", encoding="ISO-8859-1")
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen codecs>", line 916, in open
DeprecationWarning: codecs.open() is deprecated. Use open() instead.

FAIL: div_by_0 (float_division)
Doctest: float_division.div_by_0
----------------------------------------------------------------------
AssertionError: Failed doctest test for float_division.div_by_0
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/1/run/c/float_division/float_division.cpython-314-x86_64-linux-gnu.so", line unknown line number, in div_by_0
----------------------------------------------------------------------
File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/1/run/c/float_division/float_division.cpython-314-x86_64-linux-gnu.so", line ?, in float_division.div_by_0
Failed example:
    div_by_0(0)  # doctest: +ELLIPSIS
Expected:
    Traceback (most recent call last):
    ZeroDivisionError: float division...
Got:
    Traceback (most recent call last):
      File "<doctest float_division.div_by_0[0]>", line 1, in <module>
        div_by_0(0)  # doctest: +ELLIPSIS
        ~~~~~~~~^^^
      File "tests/run/float_division.pyx", line 59, in float_division.div_by_0 (float_division.c:2826)
        return x / 0.0
    ZeroDivisionError: division by zero

FAIL: test_use_typing_attributes_as_non_annotations (pep526_variable_annotations)
Doctest: pep526_variable_annotations.test_use_typing_attributes_as_non_annotations
----------------------------------------------------------------------
AssertionError: Failed doctest test for pep526_variable_annotations.test_use_typing_attributes_as_non_annotations
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/0/run/c/pep526_variable_annotations/pep526_variable_annotations.cpython-314-x86_64-linux-gnu.so", line unknown line number, in test_use_typing_attributes_as_non_annotations
----------------------------------------------------------------------
File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/0/run/c/pep526_variable_annotations/pep526_variable_annotations.cpython-314-x86_64-linux-gnu.so", line ?, in pep526_variable_annotations.test_use_typing_attributes_as_non_annotations
Failed example:
    test_use_typing_attributes_as_non_annotations()
Expected:
    typing.Tuple typing.Tuple[int]
    typing.Optional True
    typing.Optional True
Got:
    typing.Tuple typing.Tuple[int]
    typing.Optional typing.FrozenSet | None
    typing.Optional typing.Dict | None

FAIL: setdefault1 (dict_setdefault)
Doctest: dict_setdefault.setdefault1
----------------------------------------------------------------------
AssertionError: Failed doctest test for dict_setdefault.setdefault1
  File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/3/run/c/dict_setdefault/dict_setdefault.cpython-314-x86_64-linux-gnu.so", line unknown line number, in setdefault1
----------------------------------------------------------------------
File "/builddir/build/BUILD/Cython-3.0.12-build/cython-3.0.12/TEST_TMP/3/run/c/dict_setdefault/dict_setdefault.cpython-314-x86_64-linux-gnu.so", line ?, in dict_setdefault.setdefault1
Failed example:
    setdefault1(d, Unhashable())
Expected:
    Traceback (most recent call last):
    TypeError: I am not hashable
Got:
    Traceback (most recent call last):
      File "<doctest dict_setdefault.setdefault1[6]>", line 1, in <module>
        setdefault1(d, Unhashable())
        ~~~~~~~~~~~^^^^^^^^^^^^^^^^^
      File "tests/run/dict_setdefault.py", line 68, in dict_setdefault.setdefault1 (dict_setdefault.c:3697)
        return d.setdefault(key)
    TypeError: cannot use 'dict_setdefault.Unhashable' as a dict key (I am not hashable)

FAIL: test_capitalize_nonascii (test_unicode.UnicodeTest.test_capitalize_nonascii)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "tests/run/test_unicode_string_tests.pxi", line 993, in test_unicode.CommonTest.test_capitalize_nonascii (test_unicode.c:47864)
    self.checkequal('\u019b\u1d00\u1d86\u0221\u1fb7',
  File "tests/run/test_unicode_string_tests.pxi", line 64, in test_unicode.BaseTest.checkequal (test_unicode.c:22628)
    self.assertEqual(
AssertionError: 'ƛᴀᶆȡᾷ' != 'Ƛᴀᶆȡᾷ'
- ƛᴀᶆȡᾷ
? ^
+ Ƛᴀᶆȡᾷ
? ^
======================================================================
FAIL: test_printable_repr (test_unicode.UnicodeTest.test_printable_repr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "tests/run/test_unicode.pyx", line 2314, in test_unicode.UnicodeTest.test_printable_repr (test_unicode.c:143140)
    self.assertEqual(repr('\U00014000'), "'\\U00014000'")     # nonprintable
AssertionError: "'𔀀'" != "'\\U00014000'"
- '𔀀'
+ '\U00014000'

Comment 1 Miro Hrončok 2025-06-24 12:19:53 UTC
We should probably try updating Cython to see if it helps.

Comment 3 Adam Williamson 2025-07-22 00:54:16 UTC
This is blocked by dask.

Comment 4 Adam Williamson 2025-07-22 00:54:55 UTC
wait, sorry, got lost in the maze there, wrong thing. cython doesn't need dask.

Comment 5 Fedora Update System 2025-08-06 20:23:33 UTC
FEDORA-2025-b184fd145b (Cython-3.1.2-2.fc43) has been submitted as an update to Fedora 43.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-b184fd145b

Comment 6 Fedora Update System 2025-08-06 23:13:23 UTC
FEDORA-2025-b184fd145b (Cython-3.1.2-2.fc43) has been pushed to the Fedora 43 stable repository.
If problem still persists, please make note of it in this bug report.