From 6cc92bc055a2464141a64df098cec8f26c2f0240 Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Fri, 3 Jul 2026 11:26:42 +0800 Subject: [PATCH] Fix _transport_sockname request initialization warning --- CHANGES/13029.bugfix.rst | 3 +++ aiohttp/web_request.py | 1 + tests/test_web_request.py | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 CHANGES/13029.bugfix.rst diff --git a/CHANGES/13029.bugfix.rst b/CHANGES/13029.bugfix.rst new file mode 100644 index 00000000000..629b723deba --- /dev/null +++ b/CHANGES/13029.bugfix.rst @@ -0,0 +1,3 @@ +Fixed a deprecation warning during request initialization by allowing +``BaseRequest`` to assign ``_transport_sockname``. +-- by :user:`nightcityblade`. diff --git a/aiohttp/web_request.py b/aiohttp/web_request.py index d3d9cc2989f..ca925e2acdb 100644 --- a/aiohttp/web_request.py +++ b/aiohttp/web_request.py @@ -132,6 +132,7 @@ class BaseRequest(MutableMapping[str | RequestKey[Any], Any], HeadersMixin): "_loop", "_transport_sslcontext", "_transport_peername", + "_transport_sockname", ] ) _post: MultiDictProxy[_Post] | None = None diff --git a/tests/test_web_request.py b/tests/test_web_request.py index d025c8c4812..4815fc073c7 100644 --- a/tests/test_web_request.py +++ b/tests/test_web_request.py @@ -167,6 +167,29 @@ def test_host_with_no_transport_sockname() -> None: assert req.host == "" +def test_request_init_allows_transport_sockname_assignment() -> None: + message = make_mocked_request("GET", "/")._message + payload = mock.Mock() + payload_writer = mock.Mock() + task = mock.Mock() + loop = mock.Mock() + protocol = mock.Mock() + protocol.ssl_context = None + protocol.peername = None + protocol.sockname = ("127.0.0.1", 8080) + + req = BaseRequest( + message, + payload, + protocol, + payload_writer, + task, + loop, + ) + + assert req._transport_sockname == ("127.0.0.1", 8080) + + def test_doubleslashes() -> None: # NB: //foo/bar is an absolute URL with foo netloc and /bar path req = make_mocked_request("GET", "/bar//foo/")