diff --git a/stubs/docker/docker/api/container.pyi b/stubs/docker/docker/api/container.pyi index b1e025fe6..06a6167c8 100644 --- a/stubs/docker/docker/api/container.pyi +++ b/stubs/docker/docker/api/container.pyi @@ -105,7 +105,7 @@ class ContainerApiMixin: since: datetime.datetime | float | None = None, follow: bool | None = None, until: datetime.datetime | float | None = None, - ) -> CancellableStream: ... + ) -> CancellableStream[bytes]: ... @overload def logs( self, @@ -118,7 +118,7 @@ class ContainerApiMixin: since: datetime.datetime | float | None = None, follow: bool | None = None, until: datetime.datetime | float | None = None, - ) -> CancellableStream: ... + ) -> CancellableStream[bytes]: ... @overload def logs( self, diff --git a/stubs/docker/docker/api/daemon.pyi b/stubs/docker/docker/api/daemon.pyi index 81adb4aef..60dccc739 100644 --- a/stubs/docker/docker/api/daemon.pyi +++ b/stubs/docker/docker/api/daemon.pyi @@ -1,3 +1,4 @@ +from _typeshed import Incomplete from datetime import datetime from typing import Any @@ -11,7 +12,7 @@ class DaemonApiMixin: until: datetime | int | None = None, filters: dict[str, Any] | None = None, decode: bool | None = None, - ) -> CancellableStream: ... + ) -> CancellableStream[Incomplete]: ... def info(self) -> dict[str, Any]: ... def login( self, diff --git a/stubs/docker/docker/models/containers.pyi b/stubs/docker/docker/models/containers.pyi index a5190adaa..34db3d06c 100644 --- a/stubs/docker/docker/models/containers.pyi +++ b/stubs/docker/docker/models/containers.pyi @@ -61,7 +61,7 @@ class Container(Model): since: datetime.datetime | float | None = None, follow: bool | None = None, until: datetime.datetime | float | None = None, - ) -> CancellableStream: ... + ) -> CancellableStream[bytes]: ... @overload def logs( self, diff --git a/stubs/docker/docker/types/daemon.pyi b/stubs/docker/docker/types/daemon.pyi index efa5f7411..8cad90ea9 100644 --- a/stubs/docker/docker/types/daemon.pyi +++ b/stubs/docker/docker/types/daemon.pyi @@ -1,6 +1,12 @@ -class CancellableStream: - def __init__(self, stream, response) -> None: ... - def __iter__(self): ... - def __next__(self): ... +from collections.abc import Iterator +from typing import Generic, TypeVar +from typing_extensions import Self + +_T_co = TypeVar("_T_co", covariant=True) + +class CancellableStream(Generic[_T_co]): + def __init__(self, stream: Iterator[_T_co], response) -> None: ... + def __iter__(self) -> Self: ... + def __next__(self) -> _T_co: ... next = __next__ def close(self) -> None: ...