diff --git a/requirements_tests.txt b/requirements_tests.txt index e060b7fe2..ccdd86804 100644 --- a/requirements_tests.txt +++ b/requirements_tests.txt @@ -10,7 +10,7 @@ pytest-timeout==2.4.0 pytest==9.0.1 ruff==0.14.7 time-machine==3.1.0 -types-docker==7.1.0.20251127 +types-docker==7.1.0.20251129 types-pyyaml==6.0.12.20250915 types-requests==2.32.4.20250913 urllib3==2.5.0 diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index 48b69defe..5faea61f1 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -7,6 +7,7 @@ from ipaddress import IPv4Address import logging import os from pathlib import Path +from socket import SocketIO import tempfile from typing import TYPE_CHECKING, cast @@ -834,7 +835,10 @@ class DockerAddon(DockerInterface): try: # Load needed docker objects container = self.sys_docker.containers.get(self.name) - socket = container.attach_socket(params={"stdin": 1, "stream": 1}) + # attach_socket returns SocketIO for local Docker connections (Unix socket) + socket = cast( + SocketIO, container.attach_socket(params={"stdin": 1, "stream": 1}) + ) except (docker.errors.DockerException, requests.RequestException) as err: _LOGGER.error("Can't attach to %s stdin: %s", self.name, err) raise DockerError() from err diff --git a/supervisor/docker/manager.py b/supervisor/docker/manager.py index 73933bf83..2db73e48c 100644 --- a/supervisor/docker/manager.py +++ b/supervisor/docker/manager.py @@ -708,7 +708,8 @@ class DockerAPI(CoreSysAttributes): raise DockerError(f"Container {name} is not running", _LOGGER.error) try: - return docker_container.stats(stream=False) + # When stream=False, stats() returns dict, not Iterator + return cast(dict[str, Any], docker_container.stats(stream=False)) except (docker_errors.DockerException, requests.RequestException) as err: raise DockerError( f"Can't read stats from {name}: {err}", _LOGGER.error