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

Reply via email to