Bug 2458686 - python-hypothesis fails to build with Python 3.15: DeprecationWarning: Module globals is missing a __spec__.loader
Summary: python-hypothesis fails to build with Python 3.15: DeprecationWarning: Module...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: python-hypothesis
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.15
TreeView+ depends on / blocked
 
Reported: 2026-04-15 13:53 UTC by Karolina Surma
Modified: 2026-04-27 12:43 UTC (History)
8 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Karolina Surma 2026-04-15 13:53:54 UTC
python-hypothesis fails to build with Python 3.15.0a8.

Buried deep in the traceback, DeprecationWarning: Module globals is missing a __spec__.loader is present.

INTERNALERROR> def worker_internal_error(
INTERNALERROR>         self, node: WorkerController, formatted_error: str
INTERNALERROR>     ) -> None:
INTERNALERROR>         """
INTERNALERROR>         pytest_internalerror() was called on the worker.
INTERNALERROR>     
INTERNALERROR>         pytest_internalerror() arguments are an excinfo and an excrepr, which can't
INTERNALERROR>         be serialized, so we go with a poor man's solution of raising an exception
INTERNALERROR>         here ourselves using the formatted message.
INTERNALERROR>         """
INTERNALERROR>         self._active_nodes.remove(node)
INTERNALERROR>         try:
INTERNALERROR> >           assert False, formatted_error
INTERNALERROR>                    ^^^^^
INTERNALERROR> E           AssertionError: Traceback (most recent call last):
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 43, in run_old_style_hookwrapper
INTERNALERROR> E               teardown.send(result)
INTERNALERROR> E               ~~~~~~~~~~~~~^^^^^^^^
INTERNALERROR> E             File "/builddir/build/BUILD/python-hypothesis-6.151.9-build/BUILDROOT/usr/lib/python3.15/site-packages/_hypothesis_pytestplugin.py", line 337, in pytest_runtest_makereport
INTERNALERROR> E               report = (yield).get_result()
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_result.py", line 103, in get_result
INTERNALERROR> E               raise exc.with_traceback(tb)
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 38, in run_old_style_hookwrapper
INTERNALERROR> E               res = yield
INTERNALERROR> E                     ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/skipping.py", line 275, in pytest_runtest_makereport
INTERNALERROR> E               rep = yield
INTERNALERROR> E                     ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
INTERNALERROR> E               res = hook_impl.function(*args)
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 368, in pytest_runtest_makereport
INTERNALERROR> E               return TestReport.from_item_and_call(item, call)
INTERNALERROR> E                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/reports.py", line 377, in from_item_and_call
INTERNALERROR> E               longrepr = item.repr_failure(excinfo)
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/python.py", line 1713, in repr_failure
INTERNALERROR> E               return self._repr_failure_py(excinfo, style=style)
INTERNALERROR> E                      ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/nodes.py", line 456, in _repr_failure_py
INTERNALERROR> E               return excinfo.getrepr(
INTERNALERROR> E                      ~~~~~~~~~~~~~~~^
INTERNALERROR> E                   funcargs=True,
INTERNALERROR> E                   ^^^^^^^^^^^^^^
INTERNALERROR> E               ...<5 lines>...
INTERNALERROR> E                   truncate_args=truncate_args,
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E               )
INTERNALERROR> E               ^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/_code/code.py", line 747, in getrepr
INTERNALERROR> E               format_exception(
INTERNALERROR> E               ~~~~~~~~~~~~~~~~^
INTERNALERROR> E                   self.type,
INTERNALERROR> E                   ^^^^^^^^^^
INTERNALERROR> E                   self.value,
INTERNALERROR> E                   ^^^^^^^^^^^
INTERNALERROR> E                   self.traceback[0]._rawentry if self.traceback else None,
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E               )
INTERNALERROR> E               ^
INTERNALERROR> E             File "/usr/lib64/python3.15/traceback.py", line 168, in format_exception
INTERNALERROR> E               te = TracebackException(type(value), value, tb, limit=limit, compact=True)
INTERNALERROR> E             File "/usr/lib64/python3.15/traceback.py", line 1079, in __init__
INTERNALERROR> E               self.stack = StackSummary._extract_from_extended_frame_gen(
INTERNALERROR> E                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
INTERNALERROR> E                   _walk_tb_with_full_positions(exc_traceback),
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E                   limit=limit, lookup_lines=lookup_lines,
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E                   capture_locals=capture_locals)
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib64/python3.15/traceback.py", line 503, in _extract_from_extended_frame_gen
INTERNALERROR> E               linecache.lazycache(filename, f.f_globals)
INTERNALERROR> E               ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib64/python3.15/linecache.py", line 217, in lazycache
INTERNALERROR> E               lazy_entry = _make_lazycache_entry(filename, module_globals)
INTERNALERROR> E             File "/usr/lib64/python3.15/linecache.py", line 238, in _make_lazycache_entry
INTERNALERROR> E               loader = _bless_my_loader(module_globals)
INTERNALERROR> E             File "/usr/lib64/python3.15/linecache.py", line 265, in _bless_my_loader
INTERNALERROR> E               warnings.warn(
INTERNALERROR> E               ~~~~~~~~~~~~~^
INTERNALERROR> E                   'Module globals is missing a __spec__.loader',
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E                   DeprecationWarning)
INTERNALERROR> E                   ^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E           DeprecationWarning: Module globals is missing a __spec__.loader
INTERNALERROR> E           
INTERNALERROR> E           During handling of the above exception, another exception occurred:
INTERNALERROR> E           
INTERNALERROR> E           Traceback (most recent call last):
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 289, in wrap_session
INTERNALERROR> E               session.exitstatus = doit(config, session) or 0
INTERNALERROR> E                                    ~~~~^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 343, in _main
INTERNALERROR> E               config.hook.pytest_runtestloop(session=session)
INTERNALERROR> E               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
INTERNALERROR> E               return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR> E               return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 167, in _multicall
INTERNALERROR> E               raise exception
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/logging.py", line 801, in pytest_runtestloop
INTERNALERROR> E               return (yield)  # Run all the tests.
INTERNALERROR> E                       ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/terminal.py", line 688, in pytest_runtestloop
INTERNALERROR> E               result = yield
INTERNALERROR> E                        ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
INTERNALERROR> E               res = hook_impl.function(*args)
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/xdist/remote.py", line 206, in pytest_runtestloop
INTERNALERROR> E               self.run_one_test()
INTERNALERROR> E               ~~~~~~~~~~~~~~~~~^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/xdist/remote.py", line 227, in run_one_test
INTERNALERROR> E               self.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
INTERNALERROR> E               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
INTERNALERROR> E               return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR> E               return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 167, in _multicall
INTERNALERROR> E               raise exception
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/warnings.py", line 90, in pytest_runtest_protocol
INTERNALERROR> E               return (yield)
INTERNALERROR> E                       ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/assertion/__init__.py", line 192, in pytest_runtest_protocol
INTERNALERROR> E               return (yield)
INTERNALERROR> E                       ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/unittest.py", line 475, in pytest_runtest_protocol
INTERNALERROR> E               return (yield)
INTERNALERROR> E                       ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/faulthandler.py", line 88, in pytest_runtest_protocol
INTERNALERROR> E               return (yield)
INTERNALERROR> E                       ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
INTERNALERROR> E               res = hook_impl.function(*args)
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 117, in pytest_runtest_protocol
INTERNALERROR> E               runtestprotocol(item, nextitem=nextitem)
INTERNALERROR> E               ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 136, in runtestprotocol
INTERNALERROR> E               reports.append(call_and_report(item, "call", log))
INTERNALERROR> E                              ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 248, in call_and_report
INTERNALERROR> E               report: TestReport = ihook.pytest_runtest_makereport(item=item, call=call)
INTERNALERROR> E                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
INTERNALERROR> E               return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR> E               return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> E                      ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 167, in _multicall
INTERNALERROR> E               raise exception
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/_pytest/tmpdir.py", line 308, in pytest_runtest_makereport
INTERNALERROR> E               rep = yield
INTERNALERROR> E                     ^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR> E               teardown.throw(exception)
INTERNALERROR> E               ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 47, in run_old_style_hookwrapper
INTERNALERROR> E               _warn_teardown_exception(hook_name, hook_impl, e)
INTERNALERROR> E               ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E             File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 73, in _warn_teardown_exception
INTERNALERROR> E               warnings.warn(PluggyTeardownRaisedWarning(msg), stacklevel=6)
INTERNALERROR> E               ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR> E           pluggy.PluggyTeardownRaisedWarning: A plugin raised an exception during an old-style hookwrapper teardown.
INTERNALERROR> E           Plugin: hypothesispytest, Hook: pytest_runtest_makereport
INTERNALERROR> E           DeprecationWarning: Module globals is missing a __spec__.loader
INTERNALERROR> E           For more information see https://pluggy.readthedocs.io/en/stable/api_reference.html#pluggy.PluggyTeardownRaisedWarning
INTERNALERROR> 
INTERNALERROR> /usr/lib/python3.15/site-packages/xdist/dsession.py:232: AssertionError
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 289, in wrap_session
INTERNALERROR>     session.exitstatus = doit(config, session) or 0
INTERNALERROR>                          ~~~~^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 343, in _main
INTERNALERROR>     config.hook.pytest_runtestloop(session=session)
INTERNALERROR>     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
INTERNALERROR>     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
INTERNALERROR>            ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
INTERNALERROR>     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR>            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 167, in _multicall
INTERNALERROR>     raise exception
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR>     teardown.throw(exception)
INTERNALERROR>     ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/_pytest/logging.py", line 801, in pytest_runtestloop
INTERNALERROR>     return (yield)  # Run all the tests.
INTERNALERROR>             ^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 139, in _multicall
INTERNALERROR>     teardown.throw(exception)
INTERNALERROR>     ~~~~~~~~~~~~~~^^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/_pytest/terminal.py", line 688, in pytest_runtestloop
INTERNALERROR>     result = yield
INTERNALERROR>              ^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/xdist/dsession.py", line 138, in pytest_runtestloop
INTERNALERROR>     self.loop_once()
INTERNALERROR>     ~~~~~~~~~~~~~~^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/xdist/dsession.py", line 163, in loop_once
INTERNALERROR>     call(**kwargs)
INTERNALERROR>     ~~~~^^^^^^^^^^
INTERNALERROR>   File "/usr/lib/python3.15/site-packages/xdist/dsession.py", line 217, in worker_workerfinished
INTERNALERROR>     assert not crashitem, (crashitem, node)
INTERNALERROR>            ^^^^^^^^^^^^^
INTERNALERROR> AssertionError: ('hypothesis-python/tests/cover/test_falsifying_example_output.py::test_inserts_line_breaks_only_at_appropriate_lengths[10]', <WorkerController gw0>)

https://docs.python.org/3.15/whatsnew/3.15.html

For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.15/fedora-rawhide-x86_64/10318706-python-hypothesis/

For all our attempts to build python-hypothesis with Python 3.15, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/package/python-hypothesis/

Testing and mass rebuild of packages is happening in copr.
You can follow these instructions to test locally in mock if your package builds with Python 3.15:
https://copr.fedorainfracloud.org/coprs/g/python/python3.15/

Let us know here if you have any questions.

Python 3.15 is planned to be included in Fedora 45.
To make that update smoother, we're building Fedora packages with all pre-releases of Python 3.15.
A build failure prevents us from testing all dependent packages (transitive [Build]Requires),
so if this package is required a lot, it's important for us to get it fixed soon.

We'd appreciate help from the people who know this package best,
but if you don't want to work on this now, let us know so we can try to work around it on our side.


Note You need to log in before you can comment on or make changes to this bug.