From d4d2cd5cdfb1633e6bbc071761ebb87b6cf5ce02 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 29 Jul 2026 14:04:48 +0300 Subject: [PATCH 1/4] Bump tqdm to 4.70.* --- stubs/tqdm/METADATA.toml | 2 +- stubs/tqdm/tqdm/contrib/concurrent.pyi | 106 +++++++++++++++++++++---- 2 files changed, 91 insertions(+), 17 deletions(-) diff --git a/stubs/tqdm/METADATA.toml b/stubs/tqdm/METADATA.toml index 8b46cd5d48e9..911213ce5f75 100644 --- a/stubs/tqdm/METADATA.toml +++ b/stubs/tqdm/METADATA.toml @@ -1,4 +1,4 @@ -version = "4.69.*" +version = "4.70.*" upstream-repository = "https://github.com/tqdm/tqdm" optional-dependencies = ["types-requests", "types-tensorflow"] diff --git a/stubs/tqdm/tqdm/contrib/concurrent.pyi b/stubs/tqdm/tqdm/contrib/concurrent.pyi index 982a359416cd..9a44efeb02c2 100644 --- a/stubs/tqdm/tqdm/contrib/concurrent.pyi +++ b/stubs/tqdm/tqdm/contrib/concurrent.pyi @@ -1,11 +1,13 @@ -from _typeshed import SupportsWrite -from collections.abc import Callable, Iterable, Mapping +from _typeshed import SupportsWrite, Incomplete +from contextlib import contextmanager +from collections.abc import Callable, Iterable, Mapping, Generator from typing import Any, TypedDict, TypeVar, overload, type_check_only from typing_extensions import Unpack +from multiprocessing.context import BaseContext from ..std import tqdm -__all__ = ["thread_map", "process_map"] +__all__ = ["thread_map", "process_map", "interpreter_map"] _R = TypeVar("_R") _T1 = TypeVar("_T1") @@ -20,7 +22,9 @@ class _TqdmKwargs(TypedDict, total=False): tqdm_class: type[tqdm[object]] max_workers: int | None chunksize: int - lock_name: str + # TODO: add when conditional fields in `TypedDict` will be supported: + # if sys.version_info >= (3, 14): + # buffersize: int | None # Standard tqdm parameters desc: str | None total: float | None @@ -47,11 +51,28 @@ class _TqdmKwargs(TypedDict, total=False): colour: str | None delay: float | None + +@type_check_only +class _TqdmProcessKwargs(_TqdmKwargs): + mp_context: BaseContext | None + max_tasks_per_child: int | None + + +@type_check_only +class _TqdmThreadKwargs(_TqdmKwargs): + thread_name_prefix: str | None + # Not techically for threading, but just a signature difference: + lock_name: str + + +@contextmanager +def ensure_lock(tqdm_class: type[tqdm[object]], lock_name: str = "", lock: Incomplete | None = None) -> Generator[None]: ... + @overload -def thread_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmKwargs]) -> list[_R]: ... +def thread_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmThreadKwargs]) -> list[_R]: ... @overload def thread_map( - fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], /, **tqdm_kwargs: Unpack[_TqdmKwargs] + fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], /, **tqdm_kwargs: Unpack[_TqdmThreadKwargs] ) -> list[_R]: ... @overload def thread_map( @@ -59,7 +80,7 @@ def thread_map( iter1: Iterable[_T1], iter2: Iterable[_T2], iter3: Iterable[_T3], - **tqdm_kwargs: Unpack[_TqdmKwargs], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], ) -> list[_R]: ... @overload def thread_map( @@ -68,7 +89,7 @@ def thread_map( iter2: Iterable[_T2], iter3: Iterable[_T3], iter4: Iterable[_T4], - **tqdm_kwargs: Unpack[_TqdmKwargs], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], ) -> list[_R]: ... @overload def thread_map( @@ -78,7 +99,7 @@ def thread_map( iter3: Iterable[_T3], iter4: Iterable[_T4], iter5: Iterable[_T5], - **tqdm_kwargs: Unpack[_TqdmKwargs], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], ) -> list[_R]: ... @overload def thread_map( @@ -90,14 +111,14 @@ def thread_map( iter5: Iterable[Any], iter6: Iterable[Any], *iterables: Iterable[Any], - **tqdm_kwargs: Unpack[_TqdmKwargs], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], ) -> list[_R]: ... @overload -def process_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmKwargs]) -> list[_R]: ... +def process_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], *, lock_name: str = "mp_lock", **tqdm_kwargs: Unpack[_TqdmProcessKwargs]) -> list[_R]: ... @overload def process_map( - fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], **tqdm_kwargs: Unpack[_TqdmKwargs] + fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], *, lock_name: str = "mp_lock", **tqdm_kwargs: Unpack[_TqdmProcessKwargs] ) -> list[_R]: ... @overload def process_map( @@ -105,7 +126,9 @@ def process_map( iter1: Iterable[_T1], iter2: Iterable[_T2], iter3: Iterable[_T3], - **tqdm_kwargs: Unpack[_TqdmKwargs], + *, + lock_name: str = "mp_lock", + **tqdm_kwargs: Unpack[_TqdmProcessKwargs], ) -> list[_R]: ... @overload def process_map( @@ -114,7 +137,9 @@ def process_map( iter2: Iterable[_T2], iter3: Iterable[_T3], iter4: Iterable[_T4], - **tqdm_kwargs: Unpack[_TqdmKwargs], + *, + lock_name: str = "mp_lock", + **tqdm_kwargs: Unpack[_TqdmProcessKwargs], ) -> list[_R]: ... @overload def process_map( @@ -124,7 +149,9 @@ def process_map( iter3: Iterable[_T3], iter4: Iterable[_T4], iter5: Iterable[_T5], - **tqdm_kwargs: Unpack[_TqdmKwargs], + *, + lock_name: str = "mp_lock", + **tqdm_kwargs: Unpack[_TqdmProcessKwargs], ) -> list[_R]: ... @overload def process_map( @@ -136,5 +163,52 @@ def process_map( iter5: Iterable[Any], iter6: Iterable[Any], *iterables: Iterable[Any], - **tqdm_kwargs: Unpack[_TqdmKwargs], + lock_name: str = "mp_lock", + **tqdm_kwargs: Unpack[_TqdmProcessKwargs], +) -> list[_R]: ... + +@overload +def interpreter_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmThreadKwargs]) -> list[_R]: ... +@overload +def interpreter_map( + fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], /, **tqdm_kwargs: Unpack[_TqdmThreadKwargs] +) -> list[_R]: ... +@overload +def interpreter_map( + fn: Callable[[_T1, _T2, _T3], _R], + iter1: Iterable[_T1], + iter2: Iterable[_T2], + iter3: Iterable[_T3], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], +) -> list[_R]: ... +@overload +def interpreter_map( + fn: Callable[[_T1, _T2, _T3, _T4], _R], + iter1: Iterable[_T1], + iter2: Iterable[_T2], + iter3: Iterable[_T3], + iter4: Iterable[_T4], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], +) -> list[_R]: ... +@overload +def interpreter_map( + fn: Callable[[_T1, _T2, _T3, _T4, _T5], _R], + iter1: Iterable[_T1], + iter2: Iterable[_T2], + iter3: Iterable[_T3], + iter4: Iterable[_T4], + iter5: Iterable[_T5], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], +) -> list[_R]: ... +@overload +def interpreter_map( + fn: Callable[..., _R], + iter1: Iterable[Any], + iter2: Iterable[Any], + iter3: Iterable[Any], + iter4: Iterable[Any], + iter5: Iterable[Any], + iter6: Iterable[Any], + *iterables: Iterable[Any], + **tqdm_kwargs: Unpack[_TqdmThreadKwargs], ) -> list[_R]: ... From d0cb3d27817d0f59e8be7c00ecb7d04eac1a4648 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 11:07:20 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/tqdm/tqdm/contrib/concurrent.pyi | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/stubs/tqdm/tqdm/contrib/concurrent.pyi b/stubs/tqdm/tqdm/contrib/concurrent.pyi index 9a44efeb02c2..16f0cc90f76c 100644 --- a/stubs/tqdm/tqdm/contrib/concurrent.pyi +++ b/stubs/tqdm/tqdm/contrib/concurrent.pyi @@ -1,9 +1,9 @@ -from _typeshed import SupportsWrite, Incomplete +from _typeshed import Incomplete, SupportsWrite +from collections.abc import Callable, Generator, Iterable, Mapping from contextlib import contextmanager -from collections.abc import Callable, Iterable, Mapping, Generator +from multiprocessing.context import BaseContext from typing import Any, TypedDict, TypeVar, overload, type_check_only from typing_extensions import Unpack -from multiprocessing.context import BaseContext from ..std import tqdm @@ -51,20 +51,17 @@ class _TqdmKwargs(TypedDict, total=False): colour: str | None delay: float | None - @type_check_only class _TqdmProcessKwargs(_TqdmKwargs): mp_context: BaseContext | None max_tasks_per_child: int | None - @type_check_only class _TqdmThreadKwargs(_TqdmKwargs): thread_name_prefix: str | None # Not techically for threading, but just a signature difference: lock_name: str - @contextmanager def ensure_lock(tqdm_class: type[tqdm[object]], lock_name: str = "", lock: Incomplete | None = None) -> Generator[None]: ... @@ -115,10 +112,17 @@ def thread_map( ) -> list[_R]: ... @overload -def process_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], *, lock_name: str = "mp_lock", **tqdm_kwargs: Unpack[_TqdmProcessKwargs]) -> list[_R]: ... +def process_map( + fn: Callable[[_T1], _R], iter1: Iterable[_T1], *, lock_name: str = "mp_lock", **tqdm_kwargs: Unpack[_TqdmProcessKwargs] +) -> list[_R]: ... @overload def process_map( - fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], *, lock_name: str = "mp_lock", **tqdm_kwargs: Unpack[_TqdmProcessKwargs] + fn: Callable[[_T1, _T2], _R], + iter1: Iterable[_T1], + iter2: Iterable[_T2], + *, + lock_name: str = "mp_lock", + **tqdm_kwargs: Unpack[_TqdmProcessKwargs], ) -> list[_R]: ... @overload def process_map( From 714ba7a8815a9ea262fc97f7e8f3b4f3e1a0f249 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Wed, 29 Jul 2026 14:12:49 +0300 Subject: [PATCH 3/4] Fix CI --- stubs/tqdm/tqdm/contrib/concurrent.pyi | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/stubs/tqdm/tqdm/contrib/concurrent.pyi b/stubs/tqdm/tqdm/contrib/concurrent.pyi index 16f0cc90f76c..95df9a53e135 100644 --- a/stubs/tqdm/tqdm/contrib/concurrent.pyi +++ b/stubs/tqdm/tqdm/contrib/concurrent.pyi @@ -1,4 +1,5 @@ -from _typeshed import Incomplete, SupportsWrite +import sys +from _typeshed import SupportsWrite from collections.abc import Callable, Generator, Iterable, Mapping from contextlib import contextmanager from multiprocessing.context import BaseContext @@ -17,14 +18,11 @@ _T4 = TypeVar("_T4") _T5 = TypeVar("_T5") @type_check_only -class _TqdmKwargs(TypedDict, total=False): +class _TqdmCommonKwargs(TypedDict, total=False): # Concurrent-specific parameters tqdm_class: type[tqdm[object]] max_workers: int | None chunksize: int - # TODO: add when conditional fields in `TypedDict` will be supported: - # if sys.version_info >= (3, 14): - # buffersize: int | None # Standard tqdm parameters desc: str | None total: float | None @@ -51,6 +49,14 @@ class _TqdmKwargs(TypedDict, total=False): colour: str | None delay: float | None +# TODO: refactor this, when `TypedDict` will support conditional fields +if sys.version_info >= (3, 14): + @type_check_only + class _TqdmKwargs(_TqdmCommonKwargs): + buffersize: int | None +else: + _TqdmKwargs = _TqdmCommonKwargs + @type_check_only class _TqdmProcessKwargs(_TqdmKwargs): mp_context: BaseContext | None @@ -63,7 +69,7 @@ class _TqdmThreadKwargs(_TqdmKwargs): lock_name: str @contextmanager -def ensure_lock(tqdm_class: type[tqdm[object]], lock_name: str = "", lock: Incomplete | None = None) -> Generator[None]: ... +def ensure_lock(tqdm_class: type[tqdm[object]], lock_name: str = "", lock=None) -> Generator[None]: ... @overload def thread_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmThreadKwargs]) -> list[_R]: ... From e641d08fff72428aa904f40ff63349dfb14d8f8c Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 11:14:56 +0000 Subject: [PATCH 4/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/tqdm/tqdm/contrib/concurrent.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stubs/tqdm/tqdm/contrib/concurrent.pyi b/stubs/tqdm/tqdm/contrib/concurrent.pyi index 95df9a53e135..0d2db089baa9 100644 --- a/stubs/tqdm/tqdm/contrib/concurrent.pyi +++ b/stubs/tqdm/tqdm/contrib/concurrent.pyi @@ -54,6 +54,7 @@ if sys.version_info >= (3, 14): @type_check_only class _TqdmKwargs(_TqdmCommonKwargs): buffersize: int | None + else: _TqdmKwargs = _TqdmCommonKwargs