Bug 2440574

Summary: python-zict fails to build with Python 3.15: timeout in test_stress_different_keys_threadsafe
Product: [Fedora] Fedora Reporter: Karolina Surma <ksurma>
Component: python-zictAssignee: Elliott Sales de Andrade <quantum.analyst>
Status: CLOSED WORKSFORME QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: epel-packagers-sig, fti-bugs, ksurma, mhroncok, python-packagers-sig, quantum.analyst
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2026-06-07 07:47:59 UTC Type: Bug
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: 2412434, 2433833, 2433836, 2485844    

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.

Comment 1 Karolina Surma 2026-06-06 18:25:38 UTC
*** Bug 2485986 has been marked as a duplicate of this bug. ***

Comment 2 Fedora Fails To Install 2026-06-07 07:47:59 UTC
Hello,

Please note that this comment was generated automatically by https://forge.fedoraproject.org/releng/tooling/src/branch/main/release-process/bug-filing/follow-policy/follow_policy.py
If you feel that this output has mistakes, please open an issue at https://forge.fedoraproject.org/releng/tickets/issues

All subpackages of a package against which this bug was filled are now installable or removed from Fedora 45.

Thanks for taking care of it!