--- Begin Message ---
Package: src:python-aiohttp-session
Version: 2.12.1-4
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-aiohttp-session, 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_aiohttp_session
[... snipped ...]
async def test_max_age_session_reset(aiohttp_client: AiohttpClient) -> None:
async def handler(request: web.Request, n: Optional[str] = None) ->
web.Response:
session = await get_session(request)
if n:
session[n] = True
return web.json_response(session._mapping)
app = create_app(handler)
app.router.add_route("GET", "/a", partial(handler, n="a"))
app.router.add_route("GET", "/b", partial(handler, n="b"))
app.router.add_route("GET", "/c", partial(handler, n="c"))
client = await aiohttp_client(app)
with mock.patch("time.time") as m_clock:
m_clock.return_value = 0.0
# Initialise the session (with a 10 second max_age).
async with client.get("/a") as resp:
> c = resp.cookies["AIOHTTP_SESSION"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E KeyError: 'AIOHTTP_SESSION'
aiohttp_client = <function aiohttp_client.<locals>.go at 0x7fb6ca54d850>
app = <Application 0x7fb6caac1810>
client = <aiohttp.test_utils.TestClient object at 0x7fb6caac2ad0>
handler = <function test_max_age_session_reset.<locals>.handler at
0x7fb6ca54cca0>
m_clock = <MagicMock name='time' id='140423062239088'>
resp = <ClientResponse(http://127.0.0.1:40605/a) [500 Internal Server
Error]>
<CIMultiDictProxy('Content-Type': 'text/plain; ...ength': '55', 'Date': 'Thu,
01 Jan 1970 00:00:00 GMT', 'Server': 'Python/3.14 aiohttp/3.14.1',
'Connection': 'close')>
tests/test_abstract_storage.py:63: KeyError
------------------------------ Captured log call -------------------------------
ERROR aiohttp.server:web_protocol.py:546 Error handling request from
127.0.0.1
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/aiohttp/web_protocol.py", line 575, in
_handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_app.py", line 559, in _handle
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_middlewares.py", line 117,
in impl
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_aiohttp_session/build/aiohttp_session/__init__.py",
line 191, in factory
response = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_aiohttp_session/build/tests/test_abstract_storage.py",
line 48, in handler
session = await get_session(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_aiohttp_session/build/aiohttp_session/__init__.py",
line 158, in get_session
request[SESSION_KEY] = session
~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_request.py", line 314, in
__setitem__
warnings.warn(
~~~~~~~~~~~~~^
"It is recommended to use web.RequestKey instances for keys.\n"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
stacklevel=2,
^^^^^^^^^^^^^
)
^
aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use
web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storage
============================= slowest 10 durations =============================
5.00s call
tests/test_nacl_storage.py::test_load_session_dont_load_expired_session
3.00s call tests/test_nacl_storage.py::test_load_expired_session
2.00s call tests/test_encrypted_cookie_storage.py::test_fernet_ttl
(7 durations < 0.005s hidden. Use -vv to show these durations.)
=========================== short test summary info ============================
FAILED tests/test_abstract_storage.py::test_max_age_also_returns_expires - As...
FAILED tests/test_abstract_storage.py::test_max_age_session_reset - KeyError:...
================= 2 failed, 50 passed, 27 deselected in 10.25s =================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_aiohttp_session/build; python3.14 -m
pytest --no-cov -k 'not test_memcached_storage and not test_redis_storage'
I: pybuild base:385: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build; python3.13 -m
pytest --no-cov -k 'not test_memcached_storage and not test_redis_storage'
============================= test session starts ==============================
platform linux -- Python 3.13.12, pytest-9.0.3, pluggy-1.6.0 --
/usr/bin/python3.13
cachedir: .pytest_cache
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build
configfile: pytest.ini
testpaths: tests/
plugins: mock-3.15.1, asyncio-1.4.0, sugar-1.1.1, aiohttp-1.1.0, cov-5.0.0,
typeguard-4.4.4
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None,
asyncio_default_test_loop_scope=function
collecting ... collected 79 items / 27 deselected / 52 selected
tests/test_abstract_storage.py::test_max_age_also_returns_expires FAILED [ 1%]
tests/test_abstract_storage.py::test_max_age_session_reset FAILED [ 3%]
tests/test_cookie_storage.py::test_create_new_session PASSED [ 5%]
tests/test_cookie_storage.py::test_load_existing_session PASSED [ 7%]
tests/test_cookie_storage.py::test_change_session PASSED [ 9%]
tests/test_cookie_storage.py::test_clear_cookie_on_session_invalidation PASSED
[ 11%]
tests/test_cookie_storage.py::test_dont_save_not_requested_session PASSED [ 13%]
tests/test_encrypted_cookie_storage.py::test_invalid_key PASSED [ 15%]
tests/test_encrypted_cookie_storage.py::test_str_key PASSED [ 17%]
tests/test_encrypted_cookie_storage.py::test_create_new_session_broken_by_format
PASSED [ 19%]
tests/test_encrypted_cookie_storage.py::test_load_existing_session PASSED [ 21%]
tests/test_encrypted_cookie_storage.py::test_load_existing_session_with_fernet
PASSED [ 23%]
tests/test_encrypted_cookie_storage.py::test_change_session PASSED [ 25%]
tests/test_encrypted_cookie_storage.py::test_clear_cookie_on_session_invalidation
PASSED [ 26%]
tests/test_encrypted_cookie_storage.py::test_encrypted_cookie_session_fixation
PASSED [ 28%]
tests/test_encrypted_cookie_storage.py::test_fernet_ttl PASSED [ 30%]
tests/test_get_session.py::test_get_stored_session PASSED [ 32%]
tests/test_get_session.py::test_session_is_not_stored PASSED [ 34%]
tests/test_get_session.py::test_storage_returns_not_session_on_load_session
PASSED [ 36%]
tests/test_get_session.py::test_get_new_session PASSED [ 38%]
tests/test_get_session.py::test_get_new_session_no_storage PASSED [ 40%]
tests/test_get_session.py::test_get_new_session_bad_return PASSED [ 42%]
tests/test_http_exception.py::test_exceptions PASSED [ 44%]
tests/test_nacl_storage.py::test_invalid_key PASSED [ 46%]
tests/test_nacl_storage.py::test_create_new_session PASSED [ 48%]
tests/test_nacl_storage.py::test_load_existing_session PASSED [ 50%]
tests/test_nacl_storage.py::test_change_session PASSED [ 51%]
tests/test_nacl_storage.py::test_del_cookie_on_session_invalidation PASSED [
53%]
tests/test_nacl_storage.py::test_nacl_session_fixation PASSED [ 55%]
tests/test_nacl_storage.py::test_load_session_dont_load_expired_session PASSED
[ 57%]
tests/test_nacl_storage.py::test_load_corrupted_session PASSED [ 59%]
tests/test_nacl_storage.py::test_load_session_different_key PASSED [ 61%]
tests/test_nacl_storage.py::test_load_expired_session PASSED [ 63%]
tests/test_path_domain.py::test_with_same_path_domain PASSED [ 65%]
tests/test_path_domain.py::test_with_different_path PASSED [ 67%]
tests/test_path_domain.py::test_with_different_domain PASSED [ 69%]
tests/test_path_domain.py::test_invalidate_with_same_path_domain PASSED [ 71%]
tests/test_response_types.py::test_stream_response PASSED [ 73%]
tests/test_response_types.py::test_bad_response_type PASSED [ 75%]
tests/test_response_types.py::test_prepared_response_type PASSED [ 76%]
tests/test_session_dict.py::test_create PASSED [ 78%]
tests/test_session_dict.py::test_create2 PASSED [ 80%]
tests/test_session_dict.py::test_create3 PASSED [ 82%]
tests/test_session_dict.py::test_set_new_identity_ok PASSED [ 84%]
tests/test_session_dict.py::test_set_new_identity_for_not_new_session PASSED [
86%]
tests/test_session_dict.py::test__repr__ PASSED [ 88%]
tests/test_session_dict.py::test__repr__2 PASSED [ 90%]
tests/test_session_dict.py::test_invalidate PASSED [ 92%]
tests/test_session_dict.py::test_invalidate2 PASSED [ 94%]
tests/test_session_dict.py::test_operations PASSED [ 96%]
tests/test_session_dict.py::test_change PASSED [ 98%]
tests/test_session_middleware.py::test_session_middleware_bad_storage PASSED
[100%]
=================================== FAILURES ===================================
______________________ test_max_age_also_returns_expires _______________________
aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f651b8971a0>
async def test_max_age_also_returns_expires(aiohttp_client: AiohttpClient)
-> None:
async def handler(request: web.Request) -> web.Response:
session = await get_session(request)
session["c"] = 3
return web.Response(body=b"OK")
with mock.patch("time.time") as m_clock:
m_clock.return_value = 0.0
client = await aiohttp_client(create_app(handler))
make_cookie(client, {"a": 1, "b": 2})
async with client.get("/") as resp:
> assert resp.status == 200
E AssertionError: assert 500 == 200
E + where 500 = <ClientResponse(http://127.0.0.1:32955/) [500
Internal Server Error]>\n<CIMultiDictProxy('Content-Type': 'text/plain;
charset=utf-8', 'Content-Length': '55', 'Date': 'Thu, 01 Jan 1970 00:00:00
GMT', 'Server': 'Python/3.13 aiohttp/3.14.1', 'Connection': 'close')>\n.status
aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f651b8971a0>
client = <aiohttp.test_utils.TestClient object at 0x7f651bef8590>
handler = <function test_max_age_also_returns_expires.<locals>.handler at
0x7f651b896e80>
m_clock = <MagicMock name='time' id='140072237447696'>
resp = <ClientResponse(http://127.0.0.1:32955/) [500 Internal Server
Error]>
<CIMultiDictProxy('Content-Type': 'text/plain; c...ength': '55', 'Date': 'Thu,
01 Jan 1970 00:00:00 GMT', 'Server': 'Python/3.13 aiohttp/3.14.1',
'Connection': 'close')>
tests/test_abstract_storage.py:42: AssertionError
------------------------------ Captured log call -------------------------------
ERROR aiohttp.server:web_protocol.py:546 Error handling request from
127.0.0.1
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/aiohttp/web_protocol.py", line 575, in
_handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_app.py", line 559, in _handle
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_middlewares.py", line 117,
in impl
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build/aiohttp_session/__init__.py",
line 185, in factory
request[STORAGE_KEY] = storage
~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_request.py", line 314, in
__setitem__
warnings.warn(
~~~~~~~~~~~~~^
"It is recommended to use web.RequestKey instances for keys.\n"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
stacklevel=2,
^^^^^^^^^^^^^
)
^
aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use
web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storage
__________________________ test_max_age_session_reset __________________________
aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f651b897100>
async def test_max_age_session_reset(aiohttp_client: AiohttpClient) -> None:
async def handler(request: web.Request, n: Optional[str] = None) ->
web.Response:
session = await get_session(request)
if n:
session[n] = True
return web.json_response(session._mapping)
app = create_app(handler)
app.router.add_route("GET", "/a", partial(handler, n="a"))
app.router.add_route("GET", "/b", partial(handler, n="b"))
app.router.add_route("GET", "/c", partial(handler, n="c"))
client = await aiohttp_client(app)
with mock.patch("time.time") as m_clock:
m_clock.return_value = 0.0
# Initialise the session (with a 10 second max_age).
async with client.get("/a") as resp:
> c = resp.cookies["AIOHTTP_SESSION"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E KeyError: 'AIOHTTP_SESSION'
aiohttp_client = <function aiohttp_client.<locals>.go at 0x7f651b897100>
app = <Application 0x7f651bfa20d0>
client = <aiohttp.test_utils.TestClient object at 0x7f651bfa3110>
handler = <function test_max_age_session_reset.<locals>.handler at
0x7f651b897ba0>
m_clock = <MagicMock name='time' id='140072237446688'>
resp = <ClientResponse(http://127.0.0.1:37113/a) [500 Internal Server
Error]>
<CIMultiDictProxy('Content-Type': 'text/plain; ...ength': '55', 'Date': 'Thu,
01 Jan 1970 00:00:00 GMT', 'Server': 'Python/3.13 aiohttp/3.14.1',
'Connection': 'close')>
tests/test_abstract_storage.py:63: KeyError
------------------------------ Captured log call -------------------------------
ERROR aiohttp.server:web_protocol.py:546 Error handling request from
127.0.0.1
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/aiohttp/web_protocol.py", line 575, in
_handle_request
resp = await request_handler(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_app.py", line 559, in _handle
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_middlewares.py", line 117,
in impl
return await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build/aiohttp_session/__init__.py",
line 191, in factory
response = await handler(request)
^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build/tests/test_abstract_storage.py",
line 48, in handler
session = await get_session(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build/aiohttp_session/__init__.py",
line 158, in get_session
request[SESSION_KEY] = session
~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/web_request.py", line 314, in
__setitem__
warnings.warn(
~~~~~~~~~~~~~^
"It is recommended to use web.RequestKey instances for keys.\n"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...<3 lines>...
stacklevel=2,
^^^^^^^^^^^^^
)
^
aiohttp.web_exceptions.NotAppKeyWarning: It is recommended to use
web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storage
============================= slowest 10 durations =============================
5.01s call
tests/test_nacl_storage.py::test_load_session_dont_load_expired_session
3.00s call tests/test_nacl_storage.py::test_load_expired_session
2.00s call tests/test_encrypted_cookie_storage.py::test_fernet_ttl
(7 durations < 0.005s hidden. Use -vv to show these durations.)
=========================== short test summary info ============================
FAILED tests/test_abstract_storage.py::test_max_age_also_returns_expires - As...
FAILED tests/test_abstract_storage.py::test_max_age_session_reset - KeyError:...
================= 2 failed, 50 passed, 27 deselected in 10.26s =================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_aiohttp_session/build; python3.13 -m
pytest --no-cov -k 'not test_memcached_storage and not test_redis_storage'
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:13: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit
status 2
--------------------------------------------------------------------------------
--- End Message ---