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.