Bug 2374292

Summary: python-hypothesmith: FTBFS in Fedora Rawhide with tests: AttributeError: 'int' object has no attribute '_codegen' + black.parsing.ASTSafetyError: cannot use --safe with this file; failed to parse source file AST: unexpected EOF while parsing
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: python-hypothesmithAssignee: Orphan Owner <extras-orphan>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: davide, mhroncok, michel
Target Milestone: ---Flags: mhroncok: needinfo? (davide)
mhroncok: needinfo? (davide)
mhroncok: needinfo? (davide)
ksurma: needinfo? (davide)
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
URL: https://koschei.fedoraproject.org/package/python-hypothesmith
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 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:    
Bug Blocks: 2322407, 2339432, 2373702    

Description Karolina Surma 2025-06-23 10:46:53 UTC
Description of problem:
Package python-hypothesmith fails to build from source in Fedora Rawhide.

Version-Release number of selected component (if applicable):
0.3.3-8.fc43

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


Reproducible: Always

Actual Results:
_________________________ test_ast_unparse_from_nodes __________________________
  + Exception Group Traceback (most recent call last):
  |   File "/usr/lib/python3.14/site-packages/_pytest/runner.py", line 341, in from_call
  |     result: TResult | None = func()
  |                              ~~~~^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/runner.py", line 242, in <lambda>
  |     lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  |             ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_hooks.py", line 512, in __call__
  |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  |            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_manager.py", line 120, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 167, in _multicall
  |     raise exception
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
  |     yield from thread_exception_runtest_hook()
  |   File "/usr/lib/python3.14/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
  |     yield
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
  |     yield from unraisable_exception_runtest_hook()
  |   File "/usr/lib/python3.14/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
  |     yield
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
  |     yield from self._runtest_for(item, "call")
  |   File "/usr/lib/python3.14/site-packages/_pytest/logging.py", line 829, in _runtest_for
  |     yield
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ~~~~~~~~~~~~~~~~~^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/capture.py", line 898, in pytest_runtest_call
  |     return (yield)
  |             ^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 53, in run_old_style_hookwrapper
  |     return result.get_result()
  |            ~~~~~~~~~~~~~~~~~^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_result.py", line 103, in get_result
  |     raise exc.with_traceback(tb)
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
  |     res = yield
  |           ^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 139, in _multicall
  |     teardown.throw(exception)
  |     ~~~~~~~~~~~~~~^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
  |     return (yield)
  |             ^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall
  |     res = hook_impl.function(*args)
  |   File "/usr/lib/python3.14/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
  |     item.runtest()
  |     ~~~~~~~~~~~~^^
  |   File "/usr/lib/python3.14/site-packages/_pytest/python.py", line 1627, in runtest
  |     self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_hooks.py", line 512, in __call__
  |     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  |            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_manager.py", line 120, in _hookexec
  |     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  |            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 167, in _multicall
  |     raise exception
  |   File "/usr/lib/python3.14/site-packages/pluggy/_callers.py", line 121, in _multicall
  |     res = hook_impl.function(*args)
  |   File "/usr/lib/python3.14/site-packages/_pytest/python.py", line 159, in pytest_pyfunc_call
  |     result = testfunction(**testargs)
  |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/hypothesmith-0.3.3/tests/test_cst.py", line 48, in test_ast_unparse_from_nodes
  |     @given(source_code=hypothesmith.from_node())
  |                    ^^^
  |   File "/usr/lib/python3.14/site-packages/hypothesis/core.py", line 1787, in wrapped_test
  |     raise the_error_hypothesis_found
  | ExceptionGroup: Hypothesis found 3 distinct failures. (3 sub-exceptions)
  | Highest target scores:
  |                4  (label='(hypothesmith from_node) number of unique ast node types')
  |                4  (label='(hypothesmith from_node) total number of ast nodes')
  |               10  (label='(hypothesmith from_node) instructions in bytecode')
  | 
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py", line 278, in <lambda>
    |     code = st.from_type(node).map(lambda n: libcst.Module([n]).code).filter(compilable)
    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 116, in code
    |     return self.code_for_node(self)
    |            ~~~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 136, in code_for_node
    |     node._codegen(state)
    |     ~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 99, in _codegen_impl
    |     stmt._codegen(state)
    |     ~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 99, in _codegen_impl
    |     stmt._codegen(state)
    |     ~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py", line 1063, in _codegen_impl
    |     finalbody._codegen(state)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py", line 982, in _codegen_impl
    |     self.body._codegen(state)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py", line 720, in _codegen_impl
    |     stmt._codegen(state)
    |     ^^^^^^^^^^^^^
    | AttributeError: 'int' object has no attribute '_codegen'
    | while generating 'source_code' from builds_filtering(Module).map(lambda n: libcst.Module([n]).code).filter(compilable).map(record_targets)
    | Explanation:
    |     These lines were always and only run by failing examples:
    |         /usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py:713
    |         /usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py:716
    +---------------- 2 ----------------
    | Traceback (most recent call last):
    |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py", line 123, in builds_filtering
    |     return draw(st.builds(t, **kwargs))
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/core.py", line 987, in do_draw
    |     kwargs = {k: data.draw(v) for k, v in self.kwargs.items()}
    |                  ~~~~~~~~~^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/deferred.py", line 87, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/strategies.py", line 684, in do_draw
    |     return data.draw(strategy)
    |            ~~~~~~~~~^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/collections.py", line 196, in do_draw
    |     result.append(data.draw(self.element_strategy))
    |                   ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/strategies.py", line 684, in do_draw
    |     return data.draw(strategy)
    |            ~~~~~~~~~^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/core.py", line 1775, in do_draw
    |     return self.definition(data.draw, *self.args, **self.kwargs)
    |            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py", line 123, in builds_filtering
    |     return draw(st.builds(t, **kwargs))
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/core.py", line 987, in do_draw
    |     kwargs = {k: data.draw(v) for k, v in self.kwargs.items()}
    |                  ~~~~~~~~~^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/deferred.py", line 87, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/strategies.py", line 684, in do_draw
    |     return data.draw(strategy)
    |            ~~~~~~~~~^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/core.py", line 1775, in do_draw
    |     return self.definition(data.draw, *self.args, **self.kwargs)
    |            ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py", line 123, in builds_filtering
    |     return draw(st.builds(t, **kwargs))
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/lazy.py", line 167, in do_draw
    |     return data.draw(self.wrapped_strategy)
    |            ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/internal/conjecture/data.py", line 2503, in draw
    |     return strategy.do_draw(self)
    |            ~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib/python3.14/site-packages/hypothesis/strategies/_internal/core.py", line 989, in do_draw
    |     obj = self.target(*args, **kwargs)
    |   File "<string>", line 6, in __init__
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 117, in __post_init__
    |     self._validate()
    |     ~~~~~~~~~~~~~~^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py", line 389, in _validate
    |     if small_stmt.semicolon is None:
    |        ^^^^^^^^^^^^^^^^^^^^
    | AttributeError: 'int' object has no attribute 'semicolon'
    | while generating 'source_code' from builds_filtering(Module).map(lambda n: libcst.Module([n]).code).filter(compilable).map(record_targets)
    | Explanation:
    |     These lines were always and only run by failing examples:
    |         /builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py:124
    |         /usr/lib64/python3.14/site-packages/libcst/_nodes/statement.py:389
    +---------------- 3 ----------------
    | Traceback (most recent call last):
    |   File "/builddir/build/BUILD/python-hypothesmith-0.3.3-build/BUILDROOT/usr/lib/python3.14/site-packages/hypothesmith/cst.py", line 278, in <lambda>
    |     code = st.from_type(node).map(lambda n: libcst.Module([n]).code).filter(compilable)
    |                                             ^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 116, in code
    |     return self.code_for_node(self)
    |            ~~~~~~~~~~~~~~~~~~^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 136, in code_for_node
    |     node._codegen(state)
    |     ~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 99, in _codegen_impl
    |     stmt._codegen(state)
    |     ~~~~~~~~~~~~~^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/base.py", line 299, in _codegen
    |     self._codegen_impl(state, **kwargs)
    |     ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
    |   File "/usr/lib64/python3.14/site-packages/libcst/_nodes/module.py", line 99, in _codegen_impl
    |     stmt._codegen(state)
    |     ^^^^^^^^^^^^^
    | AttributeError: 'int' object has no attribute '_codegen'
    | while generating 'source_code' from builds_filtering(Module).map(lambda n: libcst.Module([n]).code).filter(compilable).map(record_targets)
    +------------------------------------
____________________ test_black_autoformatter_from_grammar _____________________
/usr/lib/python3.14/site-packages/black/__init__.py:1517: in assert_equivalent
    src_ast = parse_ast(src)
/usr/lib/python3.14/site-packages/black/parsing.py:156: in parse_ast
    raise SyntaxError(first_error)
E   SyntaxError: unexpected EOF while parsing (<unknown>, line 1)

The above exception was the direct cause of the following exception:
tests/test_syntactic.py:64: in test_black_autoformatter_from_grammar
    @example("A#\r#", black.Mode())
/usr/lib/python3.14/site-packages/hypothesis/core.py:1431: in _raise_to_user
    raise the_error_hypothesis_found
tests/test_syntactic.py:76: in test_black_autoformatter_from_grammar
    result = black.format_file_contents(source_code, fast=False, mode=mode)
/usr/lib/python3.14/site-packages/black/__init__.py:1085: in format_file_contents
    check_stability_and_equivalence(
/usr/lib/python3.14/site-packages/black/__init__.py:1059: in check_stability_and_equivalence
    assert_equivalent(src_contents, dst_contents)
/usr/lib/python3.14/site-packages/black/__init__.py:1519: in assert_equivalent
    raise ASTSafetyError(
E   black.parsing.ASTSafetyError: cannot use --safe with this file; failed to parse source file AST: unexpected EOF while parsing (<unknown>, line 1)
E   This could be caused by running Black with an older Python version that does not support new syntax used in your source file.
E   Falsifying explicit example: test_black_autoformatter_from_grammar(
E       source_code='\\',
E       mode=Mode(target_versions=set(),
E        line_length=88,
E        string_normalization=True,
E        is_pyi=False,
E        is_ipynb=False,
E        skip_source_first_line=False,
E        magic_trailing_comma=True,
E        python_cell_magics=set(),
E        preview=False,
E        unstable=False,
E        enabled_features=set()),
E   )


=========================== short test summary info ============================
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[AnnAssign]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Arg] - Attri...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Assert] - At...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Assign] - At...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[AssignTarget]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Attribute]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[AugAssign]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Await] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[BinaryOperation]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[BooleanOperation]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Call] - Exce...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ClassDef] - ...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[CompFor] - E...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[CompIf] - Ex...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Comparison]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ComparisonTarget]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ConcatenatedString]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Decorator]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Del] - Excep...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Dict] - Attr...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[DictComp] - ...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[DictElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Element] - E...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Else] - Exce...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ExceptHandler]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ExceptStarHandler]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Expr] - Attr...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Finally] - E...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[For] - Attri...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[FormattedString]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[FormattedStringExpression]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[From] - Exce...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[FunctionDef]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[GeneratorExp]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[If] - Except...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[IfExp] - Att...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ImportFrom]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[IndentedBlock]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Index] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Lambda] - Ex...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[List] - Exce...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[ListComp] - ...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Match] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchCase]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchClass]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchKeywordElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchList]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchMappingElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchOr] - A...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchOrElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchSequenceElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchTuple]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[MatchValue]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Module] - At...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[NamedExpr]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[SetComp] - A...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[SimpleStatementLine]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[SimpleStatementSuite]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Slice] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[StarredDictElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[StarredElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Subscript]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[SubscriptElement]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Try] - Attri...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[TryStar] - A...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[Tuple] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[TypeAlias]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[UnaryOperation]
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[While] - Exc...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[With] - Exce...
FAILED tests/test_cst.py::test_source_code_from_libcst_node_type[WithItem] - ...
FAILED tests/test_cst.py::test_ast_unparse_from_nodes - ExceptionGroup: Hypot...
FAILED tests/test_cst.py::test_from_node_always_compilable - AttributeError: ...
FAILED tests/test_syntactic.py::test_black_autoformatter_from_grammar - black...
= 74 failed, 100 passed, 2 skipped, 4 xfailed, 1 xpassed in 1941.26s (0:32:21) =

Comment 1 Miro Hrončok 2025-08-26 11:08:43 UTC
Hello. This is a bulk comment.

This package still needs to be rebuilt and/or shipped with Python 3.14.0rc2+ bytecode in Fedora 43.

The Beta Freeze of Fedora 43 is scheduled to start today. Please prioritize this bugzilla accordingly.

Thanks.

Comment 2 Miro Hrončok 2025-09-23 18:55:58 UTC
Hello. This is a bulk comment.

This package still needs to be rebuilt and/or shipped with Python 3.14.0rc3+ bytecode in Fedora 43.

The Final Freeze of Fedora 43 is scheduled to start on 2025-10-07. Please prioritize this bugzilla accordingly.

Thanks.

Comment 3 Karolina Surma 2025-09-29 14:21:09 UTC
Hello. This is a bulk comment.

This package still needs to be rebuilt and/or shipped with Python 3.14.0rc3+ bytecode in Fedora 43.

The Final Freeze of Fedora 43 is scheduled to start next week. Please prioritize this bugzilla accordingly.

Thanks.

Comment 4 Fedora Admin user for bugzilla script actions 2025-10-31 02:16:21 UTC
This package has changed maintainer in Fedora. Reassigning to the new maintainer of this component.