--- Begin Message ---
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
--------------------------------------------------------------------------------
--- End Message ---