--- /dev/null
+import sys
+from _typeshed import Self
+from contextlib import AbstractContextManager
+from typing import Any, Callable, Generic, Iterable, Iterator, List, Mapping, TypeVar
+
+if sys.version_info >= (3, 9):
+ from types import GenericAlias
+
+_PT = TypeVar("_PT", bound=Pool)
+_S = TypeVar("_S")
+_T = TypeVar("_T")
+
+class ApplyResult(Generic[_T]):
+ if sys.version_info >= (3, 8):
+ def __init__(
+ self, pool: Pool, callback: Callable[[_T], None] | None, error_callback: Callable[[BaseException], None] | None
+ ) -> None: ...
+ else:
+ def __init__(
+ self,
+ cache: dict[int, ApplyResult[Any]],
+ callback: Callable[[_T], None] | None,
+ error_callback: Callable[[BaseException], None] | None,
+ ) -> None: ...
+ def get(self, timeout: float | None = ...) -> _T: ...
+ def wait(self, timeout: float | None = ...) -> None: ...
+ def ready(self) -> bool: ...
+ def successful(self) -> bool: ...
+ if sys.version_info >= (3, 9):
+ def __class_getitem__(cls, item: Any) -> GenericAlias: ...
+
+# alias created during issue #17805
+AsyncResult = ApplyResult
+
+class MapResult(ApplyResult[List[_T]]):
+ if sys.version_info >= (3, 8):
+ def __init__(
+ self,
+ pool: Pool,
+ chunksize: int,
+ length: int,
+ callback: Callable[[list[_T]], None] | None,
+ error_callback: Callable[[BaseException], None] | None,
+ ) -> None: ...
+ else:
+ def __init__(
+ self,
+ cache: dict[int, ApplyResult[Any]],
+ chunksize: int,
+ length: int,
+ callback: Callable[[list[_T]], None] | None,
+ error_callback: Callable[[BaseException], None] | None,
+ ) -> None: ...
+
+class IMapIterator(Iterator[_T]):
+ if sys.version_info >= (3, 8):
+ def __init__(self, pool: Pool) -> None: ...
+ else:
+ def __init__(self, cache: dict[int, IMapIterator[Any]]) -> None: ...
+ def __iter__(self: _S) -> _S: ...
+ def next(self, timeout: float | None = ...) -> _T: ...
+ def __next__(self, timeout: float | None = ...) -> _T: ...
+
+class IMapUnorderedIterator(IMapIterator[_T]): ...
+
+class Pool(AbstractContextManager[Pool]):
+ def __init__(
+ self,
+ processes: int | None = ...,
+ initializer: Callable[..., None] | None = ...,
+ initargs: Iterable[Any] = ...,
+ maxtasksperchild: int | None = ...,
+ context: Any | None = ...,
+ ) -> None: ...
+ def apply(self, func: Callable[..., _T], args: Iterable[Any] = ..., kwds: Mapping[str, Any] = ...) -> _T: ...
+ def apply_async(
+ self,
+ func: Callable[..., _T],
+ args: Iterable[Any] = ...,
+ kwds: Mapping[str, Any] = ...,
+ callback: Callable[[_T], None] | None = ...,
+ error_callback: Callable[[BaseException], None] | None = ...,
+ ) -> AsyncResult[_T]: ...
+ def map(self, func: Callable[[_S], _T], iterable: Iterable[_S], chunksize: int | None = ...) -> list[_T]: ...
+ def map_async(
+ self,
+ func: Callable[[_S], _T],
+ iterable: Iterable[_S],
+ chunksize: int | None = ...,
+ callback: Callable[[_T], None] | None = ...,
+ error_callback: Callable[[BaseException], None] | None = ...,
+ ) -> MapResult[_T]: ...
+ def imap(self, func: Callable[[_S], _T], iterable: Iterable[_S], chunksize: int | None = ...) -> IMapIterator[_T]: ...
+ def imap_unordered(
+ self, func: Callable[[_S], _T], iterable: Iterable[_S], chunksize: int | None = ...
+ ) -> IMapIterator[_T]: ...
+ def starmap(self, func: Callable[..., _T], iterable: Iterable[Iterable[Any]], chunksize: int | None = ...) -> list[_T]: ...
+ def starmap_async(
+ self,
+ func: Callable[..., _T],
+ iterable: Iterable[Iterable[Any]],
+ chunksize: int | None = ...,
+ callback: Callable[[_T], None] | None = ...,
+ error_callback: Callable[[BaseException], None] | None = ...,
+ ) -> AsyncResult[list[_T]]: ...
+ def close(self) -> None: ...
+ def terminate(self) -> None: ...
+ def join(self) -> None: ...
+ def __enter__(self: Self) -> Self: ...
+
+class ThreadPool(Pool, AbstractContextManager[ThreadPool]):
+ def __init__(
+ self, processes: int | None = ..., initializer: Callable[..., Any] | None = ..., initargs: Iterable[Any] = ...
+ ) -> None: ...
+
+# undocumented
+if sys.version_info >= (3, 8):
+ INIT: str
+ RUN: str
+ CLOSE: str
+ TERMINATE: str
+else:
+ RUN: int
+ CLOSE: int
+ TERMINATE: int