Your message dated Fri, 30 Jan 2026 15:19:44 +0000
with message-id <[email protected]>
and subject line Bug#1123359: fixed in timeout-decorator 0.5.0-3.1
has caused the Debian Bug report #1123359,
regarding timeout-decorator: FTBFS: dh_auto_test: error: pybuild --test
--test-pytest -i python{version} -p "3.14 3.13" returned exit code 13
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1123359: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1123359
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:timeout-decorator
Version: 0.5.0-3
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202512/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:timeout-decorator, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --with python3 --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
I: pybuild base:317: python3.14 setup.py clean
/<<PKGBUILDDIR>>/setup.py:24: DeprecationWarning: codecs.open() is deprecated.
Use open() instead.
codecs.open(os.path.join(dirname, 'README.rst'), encoding='utf-8').read() +
'\n' +
/<<PKGBUILDDIR>>/setup.py:25: DeprecationWarning: codecs.open() is deprecated.
Use open() instead.
codecs.open(os.path.join(dirname, 'CHANGES.rst'), encoding='utf-8').read()
/usr/lib/python3/dist-packages/setuptools/dist.py:759:
SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!
********************************************************************************
Please consider removing the following classifiers in favor of a SPDX
license expression:
License :: OSI Approved :: MIT License
[... snipped ...]
file = <_io.BytesIO object at 0x7fa13d386390>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_alternate_exception.<locals>.f at 0x7fa13d27e770>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
_____________ test_timeout_kwargs_with_initial_timeout_none[False] _____________
use_signals = False
def test_timeout_kwargs_with_initial_timeout_none(use_signals):
@timeout(use_signals=use_signals)
def f():
time.sleep(2)
with pytest.raises(TimeoutError):
> f(timeout=1)
tests/test_timeout_decorator.py:53:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
timeout_decorator/timeout_decorator.py:92: in new_function
return timeout_wrapper(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
timeout_decorator/timeout_decorator.py:147: in __call__
self.__process.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-10' parent=97 initial daemon>
file = <_io.BytesIO object at 0x7fa13de86ac0>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_kwargs_with_initial_timeout_none.<locals>.f at 0x7fa13db2b3d0>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
________________________ test_timeout_no_seconds[False] ________________________
use_signals = False
def test_timeout_no_seconds(use_signals):
@timeout(use_signals=use_signals)
def f():
time.sleep(0.1)
> f()
tests/test_timeout_decorator.py:60:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
timeout_decorator/timeout_decorator.py:92: in new_function
return timeout_wrapper(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
timeout_decorator/timeout_decorator.py:147: in __call__
self.__process.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-12' parent=97 initial daemon>
file = <_io.BytesIO object at 0x7fa13d1b9d00>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_no_seconds.<locals>.f at 0x7fa13ddd4b40>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
_____________________ test_timeout_partial_seconds[False] ______________________
use_signals = False
def test_timeout_partial_seconds(use_signals):
@timeout(0.2, use_signals=use_signals)
def f():
time.sleep(0.5)
with pytest.raises(TimeoutError):
> f()
tests/test_timeout_decorator.py:68:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
timeout_decorator/timeout_decorator.py:92: in new_function
return timeout_wrapper(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
timeout_decorator/timeout_decorator.py:147: in __call__
self.__process.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-14' parent=97 initial daemon>
file = <_io.BytesIO object at 0x7fa13d1ba890>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_partial_seconds.<locals>.f at 0x7fa13ddd4880>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
____________________________ test_timeout_ok[False] ____________________________
use_signals = False
def test_timeout_ok(use_signals):
@timeout(seconds=2, use_signals=use_signals)
def f():
time.sleep(1)
> f()
tests/test_timeout_decorator.py:75:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
timeout_decorator/timeout_decorator.py:92: in new_function
return timeout_wrapper(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
timeout_decorator/timeout_decorator.py:147: in __call__
self.__process.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-16' parent=97 initial daemon>
file = <_io.BytesIO object at 0x7fa13d179e90>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_ok.<locals>.f at 0x7fa13d2e4250>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
__________________________ test_timeout_pickle_error ___________________________
def test_timeout_pickle_error():
"""Test that when a pickle error occurs a timeout error is raised."""
@timeout(seconds=1, use_signals=False)
def f():
time.sleep(0.1)
class Test(object):
pass
return Test()
with pytest.raises(TimeoutError):
> f()
tests/test_timeout_decorator.py:96:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
timeout_decorator/timeout_decorator.py:92: in new_function
return timeout_wrapper(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
timeout_decorator/timeout_decorator.py:147: in __call__
self.__process.start()
/usr/lib/python3.14/multiprocessing/process.py:121: in start
self._popen = self._Popen(self)
^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:224: in _Popen
return _default_context.get_context().Process._Popen(process_obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/context.py:300: in _Popen
return Popen(process_obj)
^^^^^^^^^^^^^^^^^^
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:35: in __init__
super().__init__(process_obj)
/usr/lib/python3.14/multiprocessing/popen_fork.py:20: in __init__
self._launch(process_obj)
/usr/lib/python3.14/multiprocessing/popen_forkserver.py:47: in _launch
reduction.dump(process_obj, buf)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
obj = <Process name='Process-18' parent=97 initial daemon>
file = <_io.BytesIO object at 0x7fa13d17a7a0>, protocol = None
def dump(obj, file, protocol=None):
'''Replacement for pickle.dump() using ForkingPickler.'''
> ForkingPickler(file, protocol).dump(obj)
E _pickle.PicklingError: Can't pickle local object <function
test_timeout_pickle_error.<locals>.f at 0x7fa13d2e5010>
E when serializing tuple item 1
E when serializing dict item '_args'
E when serializing multiprocessing.context.Process state
E when serializing multiprocessing.context.Process object
/usr/lib/python3.14/multiprocessing/reduction.py:60: PicklingError
=========================== short test summary info ============================
FAILED tests/test_timeout_decorator.py::test_timeout_decorator_arg[False] - _...
FAILED tests/test_timeout_decorator.py::test_timeout_class_method[False] - _p...
FAILED tests/test_timeout_decorator.py::test_timeout_kwargs[False] - _pickle....
FAILED tests/test_timeout_decorator.py::test_timeout_alternate_exception[False]
FAILED
tests/test_timeout_decorator.py::test_timeout_kwargs_with_initial_timeout_none[False]
FAILED tests/test_timeout_decorator.py::test_timeout_no_seconds[False] - _pic...
FAILED tests/test_timeout_decorator.py::test_timeout_partial_seconds[False]
FAILED tests/test_timeout_decorator.py::test_timeout_ok[False] - _pickle.Pick...
FAILED tests/test_timeout_decorator.py::test_timeout_pickle_error - _pickle.P...
========================= 9 failed, 13 passed in 9.48s =========================
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_timeout-decorator/build; python3.14 -m
pytest tests
I: pybuild base:317: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_timeout-decorator/build; python3.13 -m
pytest tests
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.4.4
collected 22 items
tests/test_timeout_decorator.py ...................... [100%]
============================= 22 passed in 16.72s ==============================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14
3.13" returned exit code 13
make: *** [debian/rules:5: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
--- End Message ---
--- Begin Message ---
Source: timeout-decorator
Source-Version: 0.5.0-3.1
Done: Boyuan Yang <[email protected]>
We believe that the bug you reported is fixed in the latest version of
timeout-decorator, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Boyuan Yang <[email protected]> (supplier of updated timeout-decorator package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Fri, 23 Jan 2026 09:12:46 -0500
Source: timeout-decorator
Architecture: source
Version: 0.5.0-3.1
Distribution: unstable
Urgency: medium
Maintainer: Sandro Tosi <[email protected]>
Changed-By: Boyuan Yang <[email protected]>
Closes: 1123359
Changes:
timeout-decorator (0.5.0-3.1) unstable; urgency=medium
.
* Non-maintainer upload.
* debian/patches/0002-Avoid-multiprocessing-behavior-change-in-py3.14.patch:
Add patch to avoid behavior changes in the multiprocessing module that
cause test failures when using python 3.14+. (Closes: #1123359)
Checksums-Sha1:
6949890f4a63ecbf4ecdcb838eeed12f0f6e1277 2096 timeout-decorator_0.5.0-3.1.dsc
a4636d6285c22294c754334dea4458b5c29e4a72 4754
timeout-decorator_0.5.0.orig.tar.gz
c66e7bf50de18f5945e838bb3613694884adacd9 3636
timeout-decorator_0.5.0-3.1.debian.tar.xz
8c7175a4f45ab37f2639f56bacc1c2f2884d9412 7030
timeout-decorator_0.5.0-3.1_amd64.buildinfo
Checksums-Sha256:
a773085db73e8c91b60a40133aa204d73824e0a02839cae168851b27941dbe5f 2096
timeout-decorator_0.5.0-3.1.dsc
6a2f2f58db1c5b24a2cc79de6345760377ad8bdc13813f5265f6c3e63d16b3d7 4754
timeout-decorator_0.5.0.orig.tar.gz
a54bf30ab68e1b49d64f973b976086b5512719f0650dd541f9f8504ea2328c7b 3636
timeout-decorator_0.5.0-3.1.debian.tar.xz
7cbde93b7c895beddcf2e9fa2bffdfb530db8a6c86e4f04dec5b539033b2d7a3 7030
timeout-decorator_0.5.0-3.1_amd64.buildinfo
Files:
860697cd68a009b2eb940e33fccde6a6 2096 python optional
timeout-decorator_0.5.0-3.1.dsc
8545649e70b3ca43bcff11f08a996c3e 4754 python optional
timeout-decorator_0.5.0.orig.tar.gz
a67e27cf5bebf6232d26a314ca4b0b22 3636 python optional
timeout-decorator_0.5.0-3.1.debian.tar.xz
f95f3e487d799eef6fc404ef00d99949 7030 python optional
timeout-decorator_0.5.0-3.1_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEfncpR22H1vEdkazLwpPntGGCWs4FAmlzhusACgkQwpPntGGC
Ws4prRAAkShwXUIrwGy+o5xEUfbwdpeVXJpfkyPBqXSbVNqvHMfn7d/363w4augo
kfYrqU7xd0adc2ikVrooKDrSP+rmDgU/iMKIt39ddUnJLIsT5wb5px7tcQFUkQIH
iJ1ALQNkI55ApqN1cqlKzo2gZGRrzce2VwWDcbrmom4fDYRHTLxwplKtGT+5A/0p
F049kXa8I2HOBfJFp7flsYDFan4fqbJzBRjQsrWe5/ZPf7mYpNJmIh0wUZrIFmDX
Ndp9421/l2ctGcZm18KclMKxcjRtp1GvKpfPr5X38wv7uurSPgOOs9uyV7CEtfhy
3P/XVKkX8MELdfKNO+qHPivAfUPUN3AnK+As3122h0jdrsXdp0VtB3XN4OijP6R8
MDb9q4JVWQRZwugYMmRnP7STD8nyrNX6aFovUaONvIZHnDPqNzrIFnpDYUhZkAmH
QXrSLuPpZQ/EdWJ+zZDGHvvIMLEeD5SFhB2bBJ5XyacycLxqDpL6i9uOEgOIJe/p
tZB+3XTcCU4h16SaJEsOOCjXCgAta5wsZeWhqgcnddZHJ4CxuiwaOb7V6w9Pj/FJ
GMaZWrn6lbm/OXk09/wxHbYT6suqbeH9jz+XxsO94vt2eaFKKCiupI/aVobRQ2Df
ykm2MIz/pOjOxrzn81+8fwyavMyXQIApIxzYpheucsyCVOzHavU=
=Tk+w
-----END PGP SIGNATURE-----
pgplxdrYlISRH.pgp
Description: PGP signature
--- End Message ---