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 --------------------------------------------------------------------------------

