[Pkg-matrix-maintainers] Bug#1115765: python-matrix-nio: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
Lucas Nussbaum
lucas at debian.org
Fri Sep 19 20:32:40 BST 2025
Source: python-matrix-nio
Version: 0.25.2-1
Severity: serious
Justification: FTBFS
Tags: forky sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20250919 ftbfs-forky
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
The full build log is available from:
http://qa-logs.debian.net/2025/09/19/python-matrix-nio_0.25.2-1_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250919;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250919&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.
--
Relevant part of the build log (hopefully):
> 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:129: Building wheel for python3.13 with "build" module
> I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13
> * Building wheel...
> /usr/lib/python3/dist-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
> !!
>
> ********************************************************************************
> Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).
>
> By 2026-Feb-18, you need to update your project and remove deprecated calls
> or your builds will no longer be supported.
>
> See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
> ********************************************************************************
>
> !!
> corresp(dist, value, root_dir)
> running bdist_wheel
> running build
> running build_py
> creating build/lib/nio
> copying src/nio/__init__.py -> build/lib/nio
> copying src/nio/http.py -> build/lib/nio
> copying src/nio/responses.py -> build/lib/nio
> copying src/nio/monitors.py -> build/lib/nio
> copying src/nio/api.py -> build/lib/nio
> copying src/nio/rooms.py -> build/lib/nio
> copying src/nio/_compat.py -> build/lib/nio
> copying src/nio/schemas.py -> build/lib/nio
> copying src/nio/exceptions.py -> build/lib/nio
> creating build/lib/nio/client
> copying src/nio/client/__init__.py -> build/lib/nio/client
> copying src/nio/client/http_client.py -> build/lib/nio/client
> copying src/nio/client/base_client.py -> build/lib/nio/client
> copying src/nio/client/async_client.py -> build/lib/nio/client
> creating build/lib/nio/crypto
> copying src/nio/crypto/__init__.py -> build/lib/nio/crypto
> copying src/nio/crypto/device.py -> build/lib/nio/crypto
> copying src/nio/crypto/sessions.py -> build/lib/nio/crypto
> copying src/nio/crypto/key_request.py -> build/lib/nio/crypto
> copying src/nio/crypto/log.py -> build/lib/nio/crypto
> copying src/nio/crypto/sas.py -> build/lib/nio/crypto
> copying src/nio/crypto/olm_machine.py -> build/lib/nio/crypto
> copying src/nio/crypto/async_attachments.py -> build/lib/nio/crypto
> copying src/nio/crypto/key_export.py -> build/lib/nio/crypto
> copying src/nio/crypto/attachments.py -> build/lib/nio/crypto
> copying src/nio/crypto/memorystores.py -> build/lib/nio/crypto
> creating build/lib/nio/event_builders
> copying src/nio/event_builders/__init__.py -> build/lib/nio/event_builders
> copying src/nio/event_builders/event_builder.py -> build/lib/nio/event_builders
> copying src/nio/event_builders/direct_messages.py -> build/lib/nio/event_builders
> copying src/nio/event_builders/state_events.py -> build/lib/nio/event_builders
> creating build/lib/nio/events
> copying src/nio/events/__init__.py -> build/lib/nio/events
> copying src/nio/events/common.py -> build/lib/nio/events
> copying src/nio/events/room_events.py -> build/lib/nio/events
> copying src/nio/events/presence.py -> build/lib/nio/events
> copying src/nio/events/misc.py -> build/lib/nio/events
> copying src/nio/events/invite_events.py -> build/lib/nio/events
> copying src/nio/events/to_device.py -> build/lib/nio/events
> copying src/nio/events/ephemeral.py -> build/lib/nio/events
> copying src/nio/events/account_data.py -> build/lib/nio/events
> creating build/lib/nio/store
> copying src/nio/store/__init__.py -> build/lib/nio/store
> copying src/nio/store/models.py -> build/lib/nio/store
> copying src/nio/store/file_trustdb.py -> build/lib/nio/store
> copying src/nio/store/log.py -> build/lib/nio/store
> copying src/nio/store/database.py -> build/lib/nio/store
> running egg_info
> creating src/matrix_nio.egg-info
> writing src/matrix_nio.egg-info/PKG-INFO
> writing dependency_links to src/matrix_nio.egg-info/dependency_links.txt
> writing requirements to src/matrix_nio.egg-info/requires.txt
> writing top-level names to src/matrix_nio.egg-info/top_level.txt
> writing manifest file 'src/matrix_nio.egg-info/SOURCES.txt'
> reading manifest file 'src/matrix_nio.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> adding license file 'LICENSE.md'
> writing manifest file 'src/matrix_nio.egg-info/SOURCES.txt'
> installing to build/bdist.linux-x86_64/wheel
> running install
> running install_lib
> creating build/bdist.linux-x86_64/wheel
> creating build/bdist.linux-x86_64/wheel/nio
> creating build/bdist.linux-x86_64/wheel/nio/client
> copying build/lib/nio/client/__init__.py -> build/bdist.linux-x86_64/wheel/./nio/client
> copying build/lib/nio/client/http_client.py -> build/bdist.linux-x86_64/wheel/./nio/client
> copying build/lib/nio/client/base_client.py -> build/bdist.linux-x86_64/wheel/./nio/client
> copying build/lib/nio/client/async_client.py -> build/bdist.linux-x86_64/wheel/./nio/client
> copying build/lib/nio/__init__.py -> build/bdist.linux-x86_64/wheel/./nio
> copying build/lib/nio/http.py -> build/bdist.linux-x86_64/wheel/./nio
> creating build/bdist.linux-x86_64/wheel/nio/crypto
> copying build/lib/nio/crypto/__init__.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/device.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/sessions.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/key_request.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/log.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/sas.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/olm_machine.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/async_attachments.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/key_export.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/attachments.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/crypto/memorystores.py -> build/bdist.linux-x86_64/wheel/./nio/crypto
> copying build/lib/nio/responses.py -> build/bdist.linux-x86_64/wheel/./nio
> copying build/lib/nio/monitors.py -> build/bdist.linux-x86_64/wheel/./nio
> copying build/lib/nio/api.py -> build/bdist.linux-x86_64/wheel/./nio
> creating build/bdist.linux-x86_64/wheel/nio/event_builders
> copying build/lib/nio/event_builders/__init__.py -> build/bdist.linux-x86_64/wheel/./nio/event_builders
> copying build/lib/nio/event_builders/event_builder.py -> build/bdist.linux-x86_64/wheel/./nio/event_builders
> copying build/lib/nio/event_builders/direct_messages.py -> build/bdist.linux-x86_64/wheel/./nio/event_builders
> copying build/lib/nio/event_builders/state_events.py -> build/bdist.linux-x86_64/wheel/./nio/event_builders
> copying build/lib/nio/rooms.py -> build/bdist.linux-x86_64/wheel/./nio
> creating build/bdist.linux-x86_64/wheel/nio/events
> copying build/lib/nio/events/__init__.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/common.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/room_events.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/presence.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/misc.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/invite_events.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/to_device.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/ephemeral.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/events/account_data.py -> build/bdist.linux-x86_64/wheel/./nio/events
> copying build/lib/nio/_compat.py -> build/bdist.linux-x86_64/wheel/./nio
> copying build/lib/nio/schemas.py -> build/bdist.linux-x86_64/wheel/./nio
> copying build/lib/nio/exceptions.py -> build/bdist.linux-x86_64/wheel/./nio
> creating build/bdist.linux-x86_64/wheel/nio/store
> copying build/lib/nio/store/__init__.py -> build/bdist.linux-x86_64/wheel/./nio/store
> copying build/lib/nio/store/models.py -> build/bdist.linux-x86_64/wheel/./nio/store
> copying build/lib/nio/store/file_trustdb.py -> build/bdist.linux-x86_64/wheel/./nio/store
> copying build/lib/nio/store/log.py -> build/bdist.linux-x86_64/wheel/./nio/store
> copying build/lib/nio/store/database.py -> build/bdist.linux-x86_64/wheel/./nio/store
> running install_egg_info
> Copying src/matrix_nio.egg-info to build/bdist.linux-x86_64/wheel/./matrix_nio-0.25.2.egg-info
> running install_scripts
> creating build/bdist.linux-x86_64/wheel/matrix_nio-0.25.2.dist-info/WHEEL
> creating '/build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/.tmp-gtfw60vt/matrix_nio-0.25.2-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
> adding 'matrix_nio-0.25.2.dist-info/licenses/LICENSE.md'
> adding 'nio/__init__.py'
> adding 'nio/_compat.py'
> adding 'nio/api.py'
> adding 'nio/exceptions.py'
> adding 'nio/http.py'
> adding 'nio/monitors.py'
> adding 'nio/responses.py'
> adding 'nio/rooms.py'
> adding 'nio/schemas.py'
> adding 'nio/client/__init__.py'
> adding 'nio/client/async_client.py'
> adding 'nio/client/base_client.py'
> adding 'nio/client/http_client.py'
> adding 'nio/crypto/__init__.py'
> adding 'nio/crypto/async_attachments.py'
> adding 'nio/crypto/attachments.py'
> adding 'nio/crypto/device.py'
> adding 'nio/crypto/key_export.py'
> adding 'nio/crypto/key_request.py'
> adding 'nio/crypto/log.py'
> adding 'nio/crypto/memorystores.py'
> adding 'nio/crypto/olm_machine.py'
> adding 'nio/crypto/sas.py'
> adding 'nio/crypto/sessions.py'
> adding 'nio/event_builders/__init__.py'
> adding 'nio/event_builders/direct_messages.py'
> adding 'nio/event_builders/event_builder.py'
> adding 'nio/event_builders/state_events.py'
> adding 'nio/events/__init__.py'
> adding 'nio/events/account_data.py'
> adding 'nio/events/common.py'
> adding 'nio/events/ephemeral.py'
> adding 'nio/events/invite_events.py'
> adding 'nio/events/misc.py'
> adding 'nio/events/presence.py'
> adding 'nio/events/room_events.py'
> adding 'nio/events/to_device.py'
> adding 'nio/store/__init__.py'
> adding 'nio/store/database.py'
> adding 'nio/store/file_trustdb.py'
> adding 'nio/store/log.py'
> adding 'nio/store/models.py'
> adding 'matrix_nio-0.25.2.dist-info/METADATA'
> adding 'matrix_nio-0.25.2.dist-info/WHEEL'
> adding 'matrix_nio-0.25.2.dist-info/top_level.txt'
> adding 'matrix_nio-0.25.2.dist-info/RECORD'
> removing build/bdist.linux-x86_64/wheel
> Successfully built matrix_nio-0.25.2-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:311: cd /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build; python3.13 -m pytest -k "not test_connect_wrapper"
> ============================= test session starts ==============================
> platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0
> benchmark: 5.1.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
> rootdir: /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build
> configfile: pyproject.toml
> plugins: aiohttp-1.1.0, benchmark-5.1.0, asyncio-1.1.0, hypothesis-6.139.2, typeguard-4.4.4, cov-5.0.0, Faker-33.3.1
> asyncio: mode=Mode.STRICT, asyncio_default_fixture_loop_scope=function, asyncio_default_test_loop_scope=function
> collected 427 items / 1 deselected / 426 selected
>
> tests/api_test.py .... [ 0%]
> tests/async_attachment_test.py ............... [ 4%]
> tests/async_client_test.py ............................................. [ 15%]
> ................................................EE................ [ 30%]
> tests/attachment_test.py ....... [ 32%]
> tests/client_test.py ........................................... [ 42%]
> tests/encryption_test.py ............................... [ 49%]
> tests/event_builders_test.py ....... [ 51%]
> tests/event_test.py .................................................. [ 62%]
> tests/http2_test.py .... [ 63%]
> tests/http_test.py .. [ 64%]
> tests/key_export_test.py ........ [ 66%]
> tests/memory_store_test.py .... [ 67%]
> tests/responses_test.py ................................... [ 75%]
> tests/room_test.py ............................... [ 82%]
> tests/sas_test.py ............................... [ 89%]
> tests/sessions_test.py .... [ 90%]
> tests/store_test.py ....................................... [100%]
>
> ==================================== ERRORS ====================================
> ________________ ERROR at setup of TestClass.test_sync_forever _________________
> file /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build/tests/async_client_test.py, line 2804
> async def test_sync_forever(self, async_client, aioresponse, event_loop):
> sync_url = re.compile(
> rf"^https://example\.org{MATRIX_API_PATH_V3}/sync",
> )
>
> aioresponse.get(
> sync_url,
> status=200,
> payload=self.sync_response,
> )
>
> aioresponse.get(sync_url, status=200, payload=self.empty_sync, repeat=True)
>
> aioresponse.post(
> f"{BASE_URL_V3}/keys/upload",
> status=200,
> payload=self.final_keys_upload_response,
> )
>
> aioresponse.post(
> f"{BASE_URL_V3}/keys/query",
> status=200,
> payload=self.keys_query_response,
> repeat=True,
> )
>
> await async_client.receive_response(
> LoginResponse.from_dict(self.login_response)
> )
>
> assert async_client.should_upload_keys
>
> task: asyncio.Task = event_loop.create_task(
> async_client.sync_forever(loop_sleep_time=100)
> )
> await async_client.synced.wait()
>
> assert not async_client.should_upload_keys
>
> task.cancel()
> with pytest.raises(asyncio.CancelledError):
> await task
> E fixture 'event_loop' not found
> > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_faker, _session_scoped_runner, aiohttp_client, aiohttp_client_cls, aiohttp_raw_server, aiohttp_server, aioresponse, alice_client, async_client, async_client_pair, async_client_pair_same_user, benchmark, benchmark_weave, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, client, client_no_e2e, cov, doctest_namespace, event_loop_policy, faker, frame_factory, http_client, monkeypatch, no_cover, olm_machine, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tempdir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unauthed_async_client, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
> > use 'pytest --fixtures [testpath]' for help on them.
>
> /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build/tests/async_client_test.py:2804
> ______________ ERROR at setup of TestClass.test_stop_sync_forever ______________
> file /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build/tests/async_client_test.py, line 2847
> async def test_stop_sync_forever(self, async_client, aioresponse, event_loop):
> sync_url = re.compile(rf"^https://example\.org{MATRIX_API_PATH_V3}/sync")
>
> aioresponse.get(
> sync_url,
> status=200,
> payload=self.sync_response,
> )
>
> aioresponse.get(sync_url, status=200, payload=self.empty_sync, repeat=True)
>
> aioresponse.post(
> f"{BASE_URL_V3}/keys/upload",
> status=200,
> payload=self.final_keys_upload_response,
> )
>
> aioresponse.post(
> f"{BASE_URL_V3}/keys/query",
> status=200,
> payload=self.keys_query_response,
> repeat=True,
> )
>
> await async_client.receive_response(
> LoginResponse.from_dict(self.login_response)
> )
>
> received = set()
>
> async def event_callback(event: PresenceEvent):
> received.add(event.user_id)
> async_client.stop_sync_forever()
>
> async_client.add_presence_callback(event_callback, PresenceEvent)
>
> task: asyncio.Task = event_loop.create_task(
> async_client.sync_forever(loop_sleep_time=100)
> )
>
> await asyncio.wait_for(task, 120)
>
> assert "@example:localhost" in received
> assert "@example2:localhost" in received
> E fixture 'event_loop' not found
> > available fixtures: _class_scoped_runner, _function_scoped_runner, _module_scoped_runner, _package_scoped_runner, _session_faker, _session_scoped_runner, aiohttp_client, aiohttp_client_cls, aiohttp_raw_server, aiohttp_server, aioresponse, alice_client, async_client, async_client_pair, async_client_pair_same_user, benchmark, benchmark_weave, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, capteesys, client, client_no_e2e, cov, doctest_namespace, event_loop_policy, faker, frame_factory, http_client, monkeypatch, no_cover, olm_machine, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tempdir, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, unauthed_async_client, unused_tcp_port, unused_tcp_port_factory, unused_udp_port, unused_udp_port_factory
> > use 'pytest --fixtures [testpath]' for help on them.
>
> /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build/tests/async_client_test.py:2847
>
> ------------------------------------------------ benchmark: 1 tests ------------------------------------------------
> Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations
> --------------------------------------------------------------------------------------------------------------------
> test_encrypt_rounds 412.5793 422.1567 415.9640 4.2305 413.9192 6.8075 1;0 2.4041 5 1
> --------------------------------------------------------------------------------------------------------------------
>
> Legend:
> Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
> OPS: Operations Per Second, computed as 1 / Mean
> =========================== short test summary info ============================
> ERROR tests/async_client_test.py::TestClass::test_sync_forever
> ERROR tests/async_client_test.py::TestClass::test_stop_sync_forever
> ============ 424 passed, 1 deselected, 2 errors in 73.85s (0:01:13) ============
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-matrix-nio-0.25.2/.pybuild/cpython3_3.13/build; python3.13 -m pytest -k "not test_connect_wrapper"
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13
More information about the Pkg-matrix-maintainers
mailing list