From 0ebd999409694e9f3ea9c0f398cf42cdcb10b14e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 1 Jun 2026 19:50:06 +0000 Subject: [PATCH 1/2] chore(deps): update dependency aiohttp to v3.14.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d97fa02..a93634f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ aiohappyeyeballs==2.6.1 -aiohttp==3.13.5 +aiohttp==3.14.0 aiosignal==1.4.0 annotated-types==0.7.0 anyio==4.13.0 -- 2.43.0 From 8dad944ebc774b2e5f105db5b3ebd6c6baa85887 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Tue, 2 Jun 2026 06:52:53 +0000 Subject: [PATCH 2/2] Tests fail: aioresponses + aiohttp 3.14 Co-authored-by: alpha-nerd --- test/conftest.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/test/conftest.py b/test/conftest.py index c5142da..f1f3979 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -24,6 +24,51 @@ import aiohttp import httpx import pytest +# ── Patch aioresponses for aiohttp 3.14.0 compatibility ────────────────────── +# aiohttp 3.14.0 added a required `stream_writer` parameter to +# `ClientResponse.__init__()`. The released `aioresponses==0.7.8` does not pass +# this argument, causing: +# TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: +# 'stream_writer' +# +# We monkey-patch `ClientResponse.__init__` to accept `stream_writer` with a +# default value when called from aioresponses (i.e. when `writer` is None). + +try: + from aiohttp.client_reqrep import ClientResponse + + _ClientResponse__init__ = ClientResponse.__init__ + + def _patched_client_response_init( + self, + method, + url, + *, + writer, + continue100, + timer, + request_info, + traces, + loop, + session, + stream_writer=None, # type: ignore[assignment] + ): + # If stream_writer was not provided (aioresponses 0.7.8), create a mock. + # When writer is None (mocked response), stream_writer.output_size is read. + if writer is None and stream_writer is None: + mock_writer = MagicMock() + mock_writer.output_size = 0 + stream_writer = mock_writer + return _ClientResponse__init__( + self, method, url, writer=writer, continue100=continue100, + timer=timer, request_info=request_info, traces=traces, + loop=loop, session=session, stream_writer=stream_writer, + ) + + ClientResponse.__init__ = _patched_client_response_init # type: ignore[assignment] +except Exception: + pass # If patching fails, tests will fail with a clear TypeError instead + _TEST_DIR = Path(__file__).parent # Must be set before importing router so module-level Config.from_yaml + Config field # defaults pick these up. db_path is intentionally absent from config_test.yaml so the -- 2.43.0