Package: src:python-yalexs Version: 9.2.7-1 Severity: serious Tags: ftbfs forky sid User: [email protected] Usertags: aiohttp-3.14
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/202606/ 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:python-yalexs, 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:142: Building wheel for python3.14 with "build" module I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14 [... snipped ...] request_headers = {'Accept-Version': '0.0.1', 'Content-Type': 'application/json; charset=UTF-8', 'x-august-api-key': 'd9984f29-07a6-816e-e1c9-44ec9d1be431', 'x-august-branding': 'august', ...} status = 200 body = b'{"expiresAt": "2026-07-08 22:07:09.603Z", "vPassword": true, "vInstallId": true}' content_type = 'application/json', payload = None headers = {'x-august-access-token': 'fresh_token'} response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK' def _build_response(self, url: 'Union[URL, str]', method: str = hdrs.METH_GET, request_headers: Optional[Dict] = None, status: int = 200, body: Union[str, bytes] = '', content_type: str = 'application/json', payload: Optional[Dict] = None, headers: Optional[Dict] = None, response_class: Optional[Type[ClientResponse]] = None, reason: Optional[str] = None) -> ClientResponse: if response_class is None: response_class = ClientResponse if payload is not None: body = json.dumps(payload) if not isinstance(body, bytes): body = str.encode(body) if request_headers is None: request_headers = {} loop = Mock() loop.get_debug = Mock() loop.get_debug.return_value = True kwargs = {} # type: Dict[str, Any] kwargs['request_info'] = RequestInfo( url=url, method=method, headers=CIMultiDictProxy(CIMultiDict(**request_headers)), ) kwargs['writer'] = None kwargs['continue100'] = None kwargs['timer'] = TimerNoop() kwargs['traces'] = [] kwargs['loop'] = loop kwargs['session'] = None # We need to initialize headers manually _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type}) if headers: _headers.update(headers) raw_headers = self._build_raw_headers(_headers) > resp = response_class(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer' /usr/lib/python3/dist-packages/aioresponses/core.py:171: TypeError ______________________ test_async_get_device_capabilities ______________________ @pytest.mark.asyncio async def test_async_get_device_capabilities() -> None: """Test fetching device capabilities from the API.""" capabilities_response: CapabilitiesResponse = { "lock": { "concurrentBLE": 2, "batteryType": "AA", "doorSense": True, "hasMagnetometer": False, "hasIntegratedWiFi": False, "scheduledSmartAlerts": True, "standalone": False, "bluetooth": True, "slotRange": None, "integratedKeypad": True, "entryCodeSlots": True, "pinSlotMax": 100, "pinSlotMin": 1, "supportsRFID": True, "supportsRFIDLegacy": False, "supportsRFIDCredential": True, "supportsRFIDOnlyAccess": True, "supportsRFIDWithCode": False, "supportsSecureMode": False, "supportsSecureModeCodeDisable": False, "supportsSecureModeMobileControl": False, "supportsFingerprintCredential": True, "supportsDeliveryMode": False, "supportsSchedulePerUser": True, "supportsFingerprintOnlyAccess": True, "batteryLifeMS": 21513600000, "supportedPartners": [], "unlatch": True, } } serial_number = "TEST123" with aioresponses() as mock: mock.get( ApiCommon(DEFAULT_BRAND).get_brand_url(API_GET_CAPABILITIES_URL) + f"?serialNumber={serial_number}&topLevelHost=true", payload=capabilities_response, ) async with ClientSession() as session: api = ApiAsync(session) > capabilities = await api.async_get_lock_capabilities( ACCESS_TOKEN, serial_number ) tests/test_capabilities.py:65: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ yalexs/api_async.py:246: in async_get_lock_capabilities response = await self._async_dict_to_api( yalexs/api_async.py:503: in _async_dict_to_api response = await self._aiohttp_session.request(method, url, **api_dict) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <string>:3: in _request ??? /usr/lib/python3.13/unittest/mock.py:2332: in _execute_mock_call result = await effect(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:512: in _request_mock response = await self.match(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:456: in match response_or_exc = await matcher.build_response( /usr/lib/python3/dist-packages/aioresponses/core.py:202: in build_response resp = self._build_response( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <aioresponses.core.RequestMatch object at 0x7f74b86bcdd0> url = URL('https://api-production.august.com/devices/capabilities?serialNumber=TEST123&topLevelHost=true') method = 'get' request_headers = {'Accept-Version': '0.0.1', 'Content-Type': 'application/json; charset=UTF-8', 'x-august-access-token': 'test-token', 'x-august-api-key': 'd9984f29-07a6-816e-e1c9-44ec9d1be431', ...} status = 200 body = b'{"lock": {"concurrentBLE": 2, "batteryType": "AA", "doorSense": true, "hasMagnetometer": false, "hasIntegratedWiFi":... true, "supportsFingerprintOnlyAccess": true, "batteryLifeMS": 21513600000, "supportedPartners": [], "unlatch": true}}' content_type = 'application/json' payload = {'lock': {'batteryLifeMS': 21513600000, 'batteryType': 'AA', 'bluetooth': True, 'concurrentBLE': 2, ...}} headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'> reason = 'OK' def _build_response(self, url: 'Union[URL, str]', method: str = hdrs.METH_GET, request_headers: Optional[Dict] = None, status: int = 200, body: Union[str, bytes] = '', content_type: str = 'application/json', payload: Optional[Dict] = None, headers: Optional[Dict] = None, response_class: Optional[Type[ClientResponse]] = None, reason: Optional[str] = None) -> ClientResponse: if response_class is None: response_class = ClientResponse if payload is not None: body = json.dumps(payload) if not isinstance(body, bytes): body = str.encode(body) if request_headers is None: request_headers = {} loop = Mock() loop.get_debug = Mock() loop.get_debug.return_value = True kwargs = {} # type: Dict[str, Any] kwargs['request_info'] = RequestInfo( url=url, method=method, headers=CIMultiDictProxy(CIMultiDict(**request_headers)), ) kwargs['writer'] = None kwargs['continue100'] = None kwargs['timer'] = TimerNoop() kwargs['traces'] = [] kwargs['loop'] = loop kwargs['session'] = None # We need to initialize headers manually _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type}) if headers: _headers.update(headers) raw_headers = self._build_raw_headers(_headers) > resp = response_class(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer' /usr/lib/python3/dist-packages/aioresponses/core.py:171: TypeError =============================== warnings summary =============================== tests/test_authenticator_common.py::test_process_refreshed_access_token_with_exp tests/test_authenticator_common.py::test_process_refreshed_access_token_missing_exp_warns /usr/lib/python3/dist-packages/jwt/api_jwt.py:147: InsecureKeyLengthWarning: The HMAC key is 6 bytes long, which is below the minimum recommended length of 32 bytes for SHA256. See RFC 7518 Section 3.2. return self._jws.encode( -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_activity.py::TestActivityApiAsync::test_async_get_lock_detail_bridge_online FAILED tests/test_api_async.py::TestApiAsync::test__raise_response_exceptions FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_detail FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_detail_missing_image FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_gen2_full_battery_detail FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_gen2_low_battery_detail FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_gen2_medium_battery_detail FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_image_token_expired FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbell_offline FAILED tests/test_api_async.py::TestApiAsync::test_async_get_doorbells - Type... FAILED tests/test_api_async.py::TestApiAsync::test_async_get_house_activities FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_and_door_status_with_locked_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_and_door_status_with_open_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_capabilities FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_detail_bridge_offline FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_detail_bridge_online FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_detail_doorsense_init_state FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_detail_with_doorsense_bridge_online FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_detail_with_doorsense_disabled_bridge_online FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_door_status_with_closed_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_door_status_with_open_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_door_status_with_unknown_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_status_with_locked_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_status_with_unknown_status_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_status_with_unlocked_response FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_with_doorbell FAILED tests/test_api_async.py::TestApiAsync::test_async_get_lock_with_unlatch FAILED tests/test_api_async.py::TestApiAsync::test_async_get_locks - TypeErro... FAILED tests/test_api_async.py::TestApiAsync::test_async_get_locks_yale_home_brand FAILED tests/test_api_async.py::TestApiAsync::test_async_get_operable_locks FAILED tests/test_api_async.py::TestApiAsync::test_async_get_pins - TypeError... FAILED tests/test_api_async.py::TestApiAsync::test_async_get_usern - TypeErro... FAILED tests/test_api_async.py::TestApiAsync::test_async_get_v2_lock_detail_bridge_online FAILED tests/test_api_async.py::TestApiAsync::test_async_lock - TypeError: Cl... FAILED tests/test_api_async.py::TestApiAsync::test_async_lock_async_new_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_lock_async_old_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_lock_from_fixture - ... FAILED tests/test_api_async.py::TestApiAsync::test_async_lock_return_activities_from_fixture FAILED tests/test_api_async.py::TestApiAsync::test_async_lock_return_activities_from_fixture_with_no_doorstate FAILED tests/test_api_async.py::TestApiAsync::test_async_refresh_access_token FAILED tests/test_api_async.py::TestApiAsync::test_async_status_async_new_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_status_async_old_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_unlatch - TypeError:... FAILED tests/test_api_async.py::TestApiAsync::test_async_unlatch_async_new_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_unlatch_async_old_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_unlatch_return_activities_from_fixture FAILED tests/test_api_async.py::TestApiAsync::test_async_unlatch_return_activities_from_fixture_with_no_doorstate FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock - TypeError: ... FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock_async_new_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock_async_old_bridge FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock_from_fixture FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock_return_activities_from_fixture FAILED tests/test_api_async.py::TestApiAsync::test_async_unlock_return_activities_from_fixture_with_no_doorstate FAILED tests/test_api_async.py::TestApiAsync::test_async_validate_verification_code FAILED tests/test_api_async.py::test_retry_exhausts_all_attempts[502] - TypeE... FAILED tests/test_api_async.py::test_retry_exhausts_all_attempts[429] - TypeE... FAILED tests/test_api_async.py::test_async_dict_to_api_preserves_existing_headers FAILED tests/test_api_async.py::test_retry_502_429[502] - TypeError: ClientRe... FAILED tests/test_api_async.py::test_retry_502_429[429] - TypeError: ClientRe... FAILED tests/test_api_async.py::test_async_get_alarms_returns_alarms - TypeEr... FAILED tests/test_api_async.py::test_async_get_alarm_devices_returns_devices FAILED tests/test_api_async.py::test_async_arm_alarm_posts_state_and_returns_json FAILED tests/test_api_async.py::test_async_wakeup_doorbell_returns_true - Typ... FAILED tests/test_api_async.py::test_async_get_houses_returns_response - Type... FAILED tests/test_api_async.py::test_async_get_house_returns_dict - TypeError... FAILED tests/test_api_async.py::test_refresh_access_token_prefers_access_token_header FAILED tests/test_api_async.py::test_refresh_access_token_falls_back_to_august_header FAILED tests/test_api_async.py::test_async_add_websocket_subscription - TypeE... FAILED tests/test_api_async.py::test_async_get_websocket_subscriptions - Type... FAILED tests/test_api_async.py::test_async_remove_websocket_subscription - Ty... FAILED tests/test_api_async.py::test_debug_logging_does_not_break_request - T... FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_get_session_with_already_authenticated_state FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_get_session_with_authenticated_response FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_get_session_with_bad_password_response FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_get_session_with_requires_validation_response FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_refresh_token FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_send_verification_code FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_should_refresh_when_token_expiry_is_after_renewal_threshold FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_should_refresh_when_token_expiry_is_before_renewal_threshold FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_validate_verification_code_with_invalid_code_response FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_validate_verification_code_with_no_code FAILED tests/test_authenticator_async.py::TestAuthenticatorAsync::test_async_validate_verification_code_with_validated_response FAILED tests/test_authenticator_async.py::test_authenticate_writes_cache_file FAILED tests/test_authenticator_async.py::test_refresh_no_op_when_refresh_not_needed FAILED tests/test_capabilities.py::test_async_get_device_capabilities - TypeE... ================== 85 failed, 364 passed, 2 warnings in 5.78s ================== E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest --no-cov dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" --parallel=2 returned exit code 13 make: *** [debian/rules:5: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2 --------------------------------------------------------------------------------

