Bug 2440574 - python-zict fails to build with Python 3.15: timeout in test_stress_different_keys_threadsafe
Summary: python-zict fails to build with Python 3.15: timeout in test_stress_different...
Keywords:
Status: NEW
Alias: None
Product: Fedora
Classification: Fedora
Component: python-zict
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Elliott Sales de Andrade
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PYTHON3.15
TreeView+ depends on / blocked
 
Reported: 2026-02-18 11:59 UTC by Karolina Surma
Modified: 2026-02-18 12:22 UTC (History)
5 users (show)

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


Attachments (Terms of Use)

Description Karolina Surma 2026-02-18 11:59:15 UTC
python-zict fails to build with Python 3.15.0a6.

zict/tests/test_lru.py::test_stress_different_keys_threadsafe +++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
~~~~~~~~~~~~~ Stack of ThreadPoolExecutor-174_1 (140665748977344) ~~~~~~~~~~~~~~
  File "/usr/lib64/python3.15/threading.py", line 1037, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib64/python3.15/threading.py", line 1075, in _bootstrap_inner
    self._context.run(self.run)
  File "/usr/lib64/python3.15/threading.py", line 1017, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib64/python3.15/concurrent/futures/thread.py", line 119, in _worker
    work_item.run(ctx)
  File "/usr/lib64/python3.15/concurrent/futures/thread.py", line 86, in run
    result = ctx.run(self.task)
  File "/usr/lib64/python3.15/concurrent/futures/thread.py", line 73, in run
    return fn(*args, **kwargs)
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/tests/utils_test.py", line 173, in worker
    z[key] = value
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/lru.py", line 138, in __setitem__
    self.evict_until_below_target()
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/lru.py", line 180, in evict_until_below_target
    self.evict()
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/common.py", line 127, in wrapper
    return func(*args, **kwargs)
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/lru.py", line 204, in evict
    key = next(iter(self.heavy or self.order))
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/utils.py", line 28, in __len__
    def __len__(self) -> int:
~~~~~~~~~~~~~ Stack of ThreadPoolExecutor-174_0 (140665828959936) ~~~~~~~~~~~~~~
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/common.py", line 91, in unlock
    self.lock.acquire()
~~~~~~~~~~~~~~~~~~~~ Stack of MainThread (140665875176384) ~~~~~~~~~~~~~~~~~~~~~
  File "/usr/bin/pytest", line 7, in <module>
    sys.exit(console_main())
  File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 201, in console_main
    code = main()
  File "/usr/lib/python3.15/site-packages/_pytest/config/__init__.py", line 175, in main
    ret: ExitCode | int = config.hook.pytest_cmdline_main(config=config)
  File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 336, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 289, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 343, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.15/site-packages/_pytest/main.py", line 367, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 117, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 136, in runtestprotocol
    reports.append(call_and_report(item, "call", log))
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 245, in call_and_report
    call = CallInfo.from_call(
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 344, in from_call
    result: TResult | None = func()
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 246, in <lambda>
    lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
  File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.15/site-packages/_pytest/runner.py", line 178, in pytest_runtest_call
    item.runtest()
  File "/usr/lib/python3.15/site-packages/_pytest/python.py", line 1671, in runtest
    self.ihook.pytest_pyfunc_call(pyfuncitem=self)
  File "/usr/lib/python3.15/site-packages/pluggy/_hooks.py", line 512, in __call__
    return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_manager.py", line 120, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/usr/lib/python3.15/site-packages/pluggy/_callers.py", line 121, in _multicall
    res = hook_impl.function(*args)
  File "/usr/lib/python3.15/site-packages/_pytest/python.py", line 157, in pytest_pyfunc_call
    result = testfunction(**testargs)
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/tests/test_lru.py", line 440, in test_stress_different_keys_threadsafe
    utils_test.check_different_keys_threadsafe(lru, allow_keyerror=True)
  File "/builddir/build/BUILD/python-zict-3.0.0-build/zict-3.0.0/zict/tests/utils_test.py", line 193, in check_different_keys_threadsafe
    f1.result()
  File "/usr/lib64/python3.15/concurrent/futures/_base.py", line 445, in result
    self._condition.wait(timeout)
  File "/usr/lib64/python3.15/threading.py", line 362, in wait
    waiter.acquire()
+++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++

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/10144918-python-zict/

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

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.