diff --git a/homeassistant/components/hassio/http.py b/homeassistant/components/hassio/http.py index 5bcdb6896cd..84b49af11c2 100644 --- a/homeassistant/components/hassio/http.py +++ b/homeassistant/components/hassio/http.py @@ -156,9 +156,8 @@ class HassIOView(HomeAssistantView): # _stored_content_type is only computed once `content_type` is accessed if path == "backups/new/upload": # We need to reuse the full content type that includes the boundary - headers[ - CONTENT_TYPE - ] = request._stored_content_type # pylint: disable=protected-access + # pylint: disable-next=protected-access + headers[CONTENT_TYPE] = request._stored_content_type # type: ignore[assignment] try: client = await self._websession.request( diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index ac253d49254..1948d3bca95 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -4,7 +4,6 @@ from __future__ import annotations import asyncio from collections.abc import Awaitable, Callable from contextlib import suppress -from ssl import SSLContext import sys from types import MappingProxyType from typing import TYPE_CHECKING, Any, cast @@ -59,6 +58,17 @@ MAXIMUM_CONNECTIONS = 4096 MAXIMUM_CONNECTIONS_PER_HOST = 100 +# Overwrite base aiohttp _wait implementation +# Homeassistant has a custom shutdown wait logic. +async def _noop_wait(*args: Any, **kwargs: Any) -> None: + """Do nothing.""" + return + + +# pylint: disable-next=protected-access +web.BaseSite._wait = _noop_wait # type: ignore[method-assign] + + class HassClientResponse(aiohttp.ClientResponse): """aiohttp.ClientResponse with a json method that uses json_loads by default.""" @@ -276,7 +286,7 @@ def _async_get_connector( return cast(aiohttp.BaseConnector, hass.data[key]) if verify_ssl: - ssl_context: bool | SSLContext = ssl_util.get_default_context() + ssl_context = ssl_util.get_default_context() else: ssl_context = ssl_util.get_default_no_verify_context() diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 799de88f8e0..0a299d50239 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -1,5 +1,5 @@ aiodiscover==1.5.1 -aiohttp==3.8.6 +aiohttp==3.9.0b0 aiohttp_cors==0.7.0 astral==2.2 async-upnp-client==0.36.1 diff --git a/pyproject.toml b/pyproject.toml index 7badc6be1e4..0bae2c942d7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ classifiers = [ ] requires-python = ">=3.11.0" dependencies = [ - "aiohttp==3.8.6", + "aiohttp==3.9.0b0", "astral==2.2", "attrs==23.1.0", "atomicwrites-homeassistant==1.4.1", diff --git a/requirements.txt b/requirements.txt index a7ede68c9ec..62c5ab5aede 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ -c homeassistant/package_constraints.txt # Home Assistant Core -aiohttp==3.8.6 +aiohttp==3.9.0b0 astral==2.2 attrs==23.1.0 atomicwrites-homeassistant==1.4.1 diff --git a/tests/components/generic/test_camera.py b/tests/components/generic/test_camera.py index f7f7c390e0d..8bfd0a66dd5 100644 --- a/tests/components/generic/test_camera.py +++ b/tests/components/generic/test_camera.py @@ -164,7 +164,7 @@ async def test_limit_refetch( hass.states.async_set("sensor.temp", "5") with pytest.raises(aiohttp.ServerTimeoutError), patch( - "async_timeout.timeout", side_effect=asyncio.TimeoutError() + "asyncio.timeout", side_effect=asyncio.TimeoutError() ): resp = await client.get("/api/camera_proxy/camera.config_test") diff --git a/tests/util/test_aiohttp.py b/tests/util/test_aiohttp.py index 76394b42491..496e6373ba5 100644 --- a/tests/util/test_aiohttp.py +++ b/tests/util/test_aiohttp.py @@ -51,7 +51,7 @@ def test_serialize_body_str() -> None: assert aiohttp.serialize_response(response) == { "status": 201, "body": "Hello", - "headers": {"Content-Length": "5", "Content-Type": "text/plain; charset=utf-8"}, + "headers": {"Content-Type": "text/plain; charset=utf-8"}, }