Your message dated Sat, 27 Dec 2025 10:53:07 +0000
with message-id <[email protected]>
and subject line Fixed in 0.74.0.1
has caused the Debian Bug report #1123178,
regarding pyswitchbot: 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.)
--
1123178: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1123178
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:pyswitchbot
Version: 0.72.1-1
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:pyswitchbot, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
dh binary --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:131: Building wheel for python3.14 with "build"
module
I: pybuild base:317: python3.14 -m build --skip-dependency-check --no-isolation
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14
* Building wheel...
running bdist_wheel
[... snipped ...]
if self._local._loop is None:
> raise RuntimeError('There is no current event loop in thread %r.'
% threading.current_thread().name)
E RuntimeError: There is no current event loop in thread 'MainThread'.
/usr/lib/python3.14/asyncio/events.py:715: RuntimeError
______________________________ test_get_position _______________________________
def test_get_position():
> curtain_device = create_device_for_command_testing()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_roller_shade.py:208:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_roller_shade.py:16: in create_device_for_command_testing
roller_shade_device = roller_shade.SwitchbotRollerShade(
switchbot/devices/roller_shade.py:39: in __init__
super().__init__(self._reverse, *args, **kwargs)
switchbot/devices/base_cover.py:38: in __init__
super().__init__(*args, **kwargs)
switchbot/devices/device.py:196: in __init__
self.loop = asyncio.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at
0x7f6b1b6a9400>
def get_event_loop(self):
"""Get the event loop for the current context.
Returns an instance of EventLoop or raises an exception.
"""
if self._local._loop is None:
> raise RuntimeError('There is no current event loop in thread %r.'
% threading.current_thread().name)
E RuntimeError: There is no current event loop in thread 'MainThread'.
/usr/lib/python3.14/asyncio/events.py:715: RuntimeError
____________ test_update_motion_direction_with_no_previous_position ____________
def test_update_motion_direction_with_no_previous_position():
> curtain_device = create_device_for_command_testing(reverse_mode=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_roller_shade.py:213:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_roller_shade.py:16: in create_device_for_command_testing
roller_shade_device = roller_shade.SwitchbotRollerShade(
switchbot/devices/roller_shade.py:39: in __init__
super().__init__(self._reverse, *args, **kwargs)
switchbot/devices/base_cover.py:38: in __init__
super().__init__(*args, **kwargs)
switchbot/devices/device.py:196: in __init__
self.loop = asyncio.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at
0x7f6b1b6a9400>
def get_event_loop(self):
"""Get the event loop for the current context.
Returns an instance of EventLoop or raises an exception.
"""
if self._local._loop is None:
> raise RuntimeError('There is no current event loop in thread %r.'
% threading.current_thread().name)
E RuntimeError: There is no current event loop in thread 'MainThread'.
/usr/lib/python3.14/asyncio/events.py:715: RuntimeError
_____________ test_update_motion_direction_with_previous_position ______________
def test_update_motion_direction_with_previous_position():
> curtain_device = create_device_for_command_testing(reverse_mode=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_roller_shade.py:220:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_roller_shade.py:16: in create_device_for_command_testing
roller_shade_device = roller_shade.SwitchbotRollerShade(
switchbot/devices/roller_shade.py:39: in __init__
super().__init__(self._reverse, *args, **kwargs)
switchbot/devices/base_cover.py:38: in __init__
super().__init__(*args, **kwargs)
switchbot/devices/device.py:196: in __init__
self.loop = asyncio.get_event_loop()
^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at
0x7f6b1b6a9400>
def get_event_loop(self):
"""Get the event loop for the current context.
Returns an instance of EventLoop or raises an exception.
"""
if self._local._loop is None:
> raise RuntimeError('There is no current event loop in thread %r.'
% threading.current_thread().name)
E RuntimeError: There is no current event loop in thread 'MainThread'.
/usr/lib/python3.14/asyncio/events.py:715: RuntimeError
=============================== warnings summary ===============================
tests/test_adv_parser.py: 150 warnings
tests/test_air_purifier.py: 61 warnings
tests/test_base_cover.py: 20 warnings
tests/test_blind_tilt.py: 24 warnings
tests/test_bulb.py: 16 warnings
tests/test_ceiling_light.py: 16 warnings
tests/test_curtain.py: 42 warnings
tests/test_encrypted_device.py: 17 warnings
tests/test_evaporative_humidifier.py: 21 warnings
tests/test_fan.py: 15 warnings
tests/test_lock.py: 105 warnings
tests/test_relay_switch.py: 32 warnings
tests/test_roller_shade.py: 17 warnings
tests/test_smart_thermostat_radiator.py: 17 warnings
tests/test_strip_light.py: 83 warnings
tests/test_vacuum.py: 24 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build/tests/test_adv_parser.py:57:
DeprecationWarning: Passing additional arguments for BLEDevice is deprecated
and has no effect.
return BLEDevice(**new)
tests/test_relay_switch.py: 17 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build/switchbot/devices/relay_switch.py:173:
RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
_LOGGER.debug(
Enable tracemalloc to get traceback where the object was allocated.
See
https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings
for more info.
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED tests/test_blind_tilt.py::test_device_passive_opening[True] - RuntimeE...
FAILED tests/test_blind_tilt.py::test_device_passive_opening[False] - Runtime...
FAILED tests/test_blind_tilt.py::test_device_passive_closing[True] - RuntimeE...
FAILED tests/test_blind_tilt.py::test_device_passive_closing[False] - Runtime...
FAILED tests/test_blind_tilt.py::test_device_passive_opening_then_stop[True]
FAILED tests/test_blind_tilt.py::test_device_passive_opening_then_stop[False]
FAILED tests/test_blind_tilt.py::test_device_passive_closing_then_stop[True]
FAILED tests/test_blind_tilt.py::test_device_passive_closing_then_stop[False]
FAILED tests/test_bulb.py::test_effect_list_contains_lowercase_names - Runtim...
FAILED tests/test_curtain.py::test_device_passive_not_in_motion[True] - Runti...
FAILED tests/test_curtain.py::test_device_passive_not_in_motion[False] - Runt...
FAILED tests/test_curtain.py::test_device_passive_opening[True] - RuntimeErro...
FAILED tests/test_curtain.py::test_device_passive_opening[False] - RuntimeErr...
FAILED tests/test_curtain.py::test_device_passive_closing[True] - RuntimeErro...
FAILED tests/test_curtain.py::test_device_passive_closing[False] - RuntimeErr...
FAILED tests/test_curtain.py::test_device_passive_opening_then_stop[True] - R...
FAILED tests/test_curtain.py::test_device_passive_opening_then_stop[False] - ...
FAILED tests/test_curtain.py::test_device_passive_closing_then_stop[True] - R...
FAILED tests/test_curtain.py::test_device_passive_closing_then_stop[False] - ...
FAILED tests/test_curtain.py::test_get_position - RuntimeError: There is no c...
FAILED tests/test_curtain.py::test_get_light_level - RuntimeError: There is n...
FAILED tests/test_curtain.py::test_is_reversed[True] - RuntimeError: There is...
FAILED tests/test_curtain.py::test_is_reversed[False] - RuntimeError: There i...
FAILED tests/test_curtain.py::test_is_calibrated[True] - RuntimeError: There ...
FAILED tests/test_curtain.py::test_is_calibrated[False] - RuntimeError: There...
FAILED tests/test_lock.py::test_lock_init[WoLock] - RuntimeError: There is no...
FAILED tests/test_lock.py::test_lock_init[Lock Lite] - RuntimeError: There is...
FAILED tests/test_lock.py::test_lock_init[WoLockPro] - RuntimeError: There is...
FAILED tests/test_lock.py::test_lock_init[Lock Ultra] - RuntimeError: There i...
FAILED tests/test_lock.py::test_parse_basic_data - RuntimeError: There is no ...
FAILED tests/test_lock.py::test_is_calibrated[WoLock] - RuntimeError: There i...
FAILED tests/test_lock.py::test_is_calibrated[Lock Lite] - RuntimeError: Ther...
FAILED tests/test_lock.py::test_is_calibrated[WoLockPro] - RuntimeError: Ther...
FAILED tests/test_lock.py::test_is_calibrated[Lock Ultra] - RuntimeError: The...
FAILED tests/test_lock.py::test_get_lock_status[WoLock] - RuntimeError: There...
FAILED tests/test_lock.py::test_get_lock_status[Lock Lite] - RuntimeError: Th...
FAILED tests/test_lock.py::test_get_lock_status[WoLockPro] - RuntimeError: Th...
FAILED tests/test_lock.py::test_get_lock_status[Lock Ultra] - RuntimeError: T...
FAILED tests/test_lock.py::test_is_door_open[WoLock] - RuntimeError: There is...
FAILED tests/test_lock.py::test_is_door_open[WoLockPro] - RuntimeError: There...
FAILED tests/test_lock.py::test_is_door_open[Lock Ultra] - RuntimeError: Ther...
FAILED tests/test_lock.py::test_is_unclosed_alarm_on[WoLock] - RuntimeError: ...
FAILED tests/test_lock.py::test_is_unclosed_alarm_on[WoLockPro] - RuntimeErro...
FAILED tests/test_lock.py::test_is_unclosed_alarm_on[Lock Ultra] - RuntimeErr...
FAILED tests/test_lock.py::test_is_unlocked_alarm_on[WoLock] - RuntimeError: ...
FAILED tests/test_lock.py::test_is_unlocked_alarm_on[Lock Lite] - RuntimeErro...
FAILED tests/test_lock.py::test_is_unlocked_alarm_on[WoLockPro] - RuntimeErro...
FAILED tests/test_lock.py::test_is_unlocked_alarm_on[Lock Ultra] - RuntimeErr...
FAILED tests/test_lock.py::test_is_auto_lock_paused[WoLock] - RuntimeError: T...
FAILED tests/test_lock.py::test_is_night_latch_enabled[WoLock] - RuntimeError...
FAILED tests/test_lock.py::test_is_night_latch_enabled[Lock Lite] - RuntimeEr...
FAILED tests/test_lock.py::test_is_night_latch_enabled[WoLockPro] - RuntimeEr...
FAILED tests/test_lock.py::test_is_night_latch_enabled[Lock Ultra] - RuntimeE...
FAILED tests/test_lock.py::test_notification_handler[WoLock] - RuntimeError: ...
FAILED tests/test_lock.py::test_notification_handler[Lock Lite] - RuntimeErro...
FAILED tests/test_lock.py::test_notification_handler[WoLockPro] - RuntimeErro...
FAILED tests/test_lock.py::test_notification_handler[Lock Ultra] - RuntimeErr...
FAILED tests/test_lock.py::test_notification_handler_not_enabled[WoLock] - Ru...
FAILED tests/test_lock.py::test_notification_handler_not_enabled[Lock Lite]
FAILED tests/test_lock.py::test_notification_handler_not_enabled[WoLockPro]
FAILED tests/test_lock.py::test_notification_handler_not_enabled[Lock Ultra]
FAILED tests/test_lock.py::test_notification_handler_during_disconnect[WoLock]
FAILED tests/test_lock.py::test_notification_handler_during_disconnect[Lock
Lite]
FAILED
tests/test_lock.py::test_notification_handler_during_disconnect[WoLockPro]
FAILED tests/test_lock.py::test_notification_handler_during_disconnect[Lock
Ultra]
FAILED tests/test_lock.py::test_update_lock_status[WoLock] - RuntimeError: Th...
FAILED tests/test_lock.py::test_update_lock_status[Lock Lite] - RuntimeError:...
FAILED tests/test_lock.py::test_update_lock_status[WoLockPro] - RuntimeError:...
FAILED tests/test_lock.py::test_update_lock_status[Lock Ultra] - RuntimeError...
FAILED tests/test_roller_shade.py::test_device_passive_closing[True] - Runtim...
FAILED tests/test_roller_shade.py::test_device_passive_closing[False] - Runti...
FAILED tests/test_roller_shade.py::test_device_passive_opening_then_stop[True]
FAILED tests/test_roller_shade.py::test_device_passive_opening_then_stop[False]
FAILED tests/test_roller_shade.py::test_device_passive_closing_then_stop[True]
FAILED tests/test_roller_shade.py::test_device_passive_closing_then_stop[False]
FAILED tests/test_roller_shade.py::test_get_position - RuntimeError: There is...
FAILED
tests/test_roller_shade.py::test_update_motion_direction_with_no_previous_position
FAILED
tests/test_roller_shade.py::test_update_motion_direction_with_previous_position
================= 78 failed, 618 passed, 677 warnings in 2.95s =================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest tests
I: pybuild base:317: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/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>>/.pybuild/cpython3_3.13/build
configfile: pyproject.toml
plugins: asyncio-1.2.0, typeguard-4.4.4
asyncio: mode=Mode.STRICT, debug=False,
asyncio_default_fixture_loop_scope=None,
asyncio_default_test_loop_scope=function
collected 696 items
tests/test_adv_parser.py ............................................... [ 6%]
........................................................................ [ 17%]
............................... [ 21%]
tests/test_air_purifier.py ............................................. [ 28%]
................. [ 30%]
tests/test_base_cover.py .................... [ 33%]
tests/test_blind_tilt.py ........................ [ 36%]
tests/test_bulb.py ................ [ 39%]
tests/test_ceiling_light.py ................ [ 41%]
tests/test_colormode_imports.py ..... [ 42%]
tests/test_curtain.py .......................................... [ 48%]
tests/test_device.py ......... [ 49%]
tests/test_encrypted_device.py ................. [ 51%]
tests/test_evaporative_humidifier.py ....................... [ 55%]
tests/test_fan.py ................ [ 57%]
tests/test_helpers.py ..... [ 58%]
tests/test_hub2.py . [ 58%]
tests/test_hub3.py . [ 58%]
tests/test_lock.py ..................................................... [ 66%]
............................................................ [ 74%]
tests/test_relay_switch.py .................................. [ 79%]
tests/test_roller_shade.py ................. [ 82%]
tests/test_smart_thermostat_radiator.py ................. [ 84%]
tests/test_strip_light.py .............................................. [ 91%]
..................................... [ 96%]
tests/test_utils.py . [ 96%]
tests/test_vacuum.py ........................ [100%]
=============================== warnings summary ===============================
tests/test_adv_parser.py: 150 warnings
tests/test_air_purifier.py: 61 warnings
tests/test_base_cover.py: 20 warnings
tests/test_blind_tilt.py: 24 warnings
tests/test_bulb.py: 16 warnings
tests/test_ceiling_light.py: 16 warnings
tests/test_curtain.py: 42 warnings
tests/test_encrypted_device.py: 17 warnings
tests/test_evaporative_humidifier.py: 21 warnings
tests/test_fan.py: 15 warnings
tests/test_lock.py: 105 warnings
tests/test_relay_switch.py: 32 warnings
tests/test_roller_shade.py: 17 warnings
tests/test_smart_thermostat_radiator.py: 17 warnings
tests/test_strip_light.py: 83 warnings
tests/test_vacuum.py: 24 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/tests/test_adv_parser.py:57:
DeprecationWarning: Passing additional arguments for BLEDevice is deprecated
and has no effect.
return BLEDevice(**new)
tests/test_relay_switch.py: 17 warnings
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/switchbot/devices/relay_switch.py:173:
RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
_LOGGER.debug(
Enable tracemalloc to get traceback where the object was allocated.
See
https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings
for more info.
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
====================== 696 passed, 677 warnings in 1.22s =======================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14
3.13" returned exit code 13
make: *** [debian/rules:3: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
--- End Message ---
--- Begin Message ---
This is fixed in the latest version in unstable.
--- End Message ---