Skip to content

Commit 3bfbabc

Browse files
committed
tqdm: add thread_map and process_map type hints
1 parent 33b3568 commit 3bfbabc

File tree

1 file changed

+136
-2
lines changed

1 file changed

+136
-2
lines changed
Lines changed: 136 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,138 @@
1+
from _typeshed import SupportsWrite
2+
from collections.abc import Callable, Iterable, Mapping
3+
from typing import Any, TypedDict, TypeVar, overload
4+
from typing_extensions import Unpack
5+
6+
from ..std import tqdm
7+
18
__all__ = ["thread_map", "process_map"]
29

3-
def thread_map(fn, *iterables, **tqdm_kwargs): ...
4-
def process_map(fn, *iterables, **tqdm_kwargs): ...
10+
_R = TypeVar("_R")
11+
_T1 = TypeVar("_T1")
12+
_T2 = TypeVar("_T2")
13+
_T3 = TypeVar("_T3")
14+
_T4 = TypeVar("_T4")
15+
_T5 = TypeVar("_T5")
16+
17+
class _TqdmKwargs(TypedDict, total=False):
18+
# Concurrent-specific parameters
19+
tqdm_class: type[tqdm[object]]
20+
max_workers: int | None
21+
chunksize: int
22+
lock_name: str
23+
# Standard tqdm parameters
24+
desc: str | None
25+
total: float | None
26+
leave: bool | None
27+
file: SupportsWrite[str] | None
28+
ncols: int | None
29+
mininterval: float
30+
maxinterval: float
31+
miniters: float | None
32+
ascii: bool | str | None
33+
disable: bool | None
34+
unit: str
35+
unit_scale: bool | float
36+
dynamic_ncols: bool
37+
smoothing: float
38+
bar_format: str | None
39+
initial: float
40+
position: int | None
41+
postfix: Mapping[str, object] | str | None
42+
unit_divisor: float
43+
write_bytes: bool | None
44+
lock_args: tuple[bool | None, float | None] | tuple[bool | None] | None
45+
nrows: int | None
46+
colour: str | None
47+
delay: float | None
48+
49+
@overload
50+
def thread_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmKwargs]) -> list[_R]: ...
51+
@overload
52+
def thread_map(
53+
fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], /, **tqdm_kwargs: Unpack[_TqdmKwargs]
54+
) -> list[_R]: ...
55+
@overload
56+
def thread_map(
57+
fn: Callable[[_T1, _T2, _T3], _R],
58+
iter1: Iterable[_T1],
59+
iter2: Iterable[_T2],
60+
iter3: Iterable[_T3],
61+
**tqdm_kwargs: Unpack[_TqdmKwargs],
62+
) -> list[_R]: ...
63+
@overload
64+
def thread_map(
65+
fn: Callable[[_T1, _T2, _T3, _T4], _R],
66+
iter1: Iterable[_T1],
67+
iter2: Iterable[_T2],
68+
iter3: Iterable[_T3],
69+
iter4: Iterable[_T4],
70+
**tqdm_kwargs: Unpack[_TqdmKwargs],
71+
) -> list[_R]: ...
72+
@overload
73+
def thread_map(
74+
fn: Callable[[_T1, _T2, _T3, _T4, _T5], _R],
75+
iter1: Iterable[_T1],
76+
iter2: Iterable[_T2],
77+
iter3: Iterable[_T3],
78+
iter4: Iterable[_T4],
79+
iter5: Iterable[_T5],
80+
**tqdm_kwargs: Unpack[_TqdmKwargs],
81+
) -> list[_R]: ...
82+
@overload
83+
def thread_map(
84+
fn: Callable[..., _R],
85+
iter1: Iterable[Any],
86+
iter2: Iterable[Any],
87+
iter3: Iterable[Any],
88+
iter4: Iterable[Any],
89+
iter5: Iterable[Any],
90+
iter6: Iterable[Any],
91+
*iterables: Iterable[Any],
92+
**tqdm_kwargs: Unpack[_TqdmKwargs],
93+
) -> list[_R]: ...
94+
@overload
95+
def process_map(fn: Callable[[_T1], _R], iter1: Iterable[_T1], **tqdm_kwargs: Unpack[_TqdmKwargs]) -> list[_R]: ...
96+
@overload
97+
def process_map(
98+
fn: Callable[[_T1, _T2], _R], iter1: Iterable[_T1], iter2: Iterable[_T2], **tqdm_kwargs: Unpack[_TqdmKwargs]
99+
) -> list[_R]: ...
100+
@overload
101+
def process_map(
102+
fn: Callable[[_T1, _T2, _T3], _R],
103+
iter1: Iterable[_T1],
104+
iter2: Iterable[_T2],
105+
iter3: Iterable[_T3],
106+
**tqdm_kwargs: Unpack[_TqdmKwargs],
107+
) -> list[_R]: ...
108+
@overload
109+
def process_map(
110+
fn: Callable[[_T1, _T2, _T3, _T4], _R],
111+
iter1: Iterable[_T1],
112+
iter2: Iterable[_T2],
113+
iter3: Iterable[_T3],
114+
iter4: Iterable[_T4],
115+
**tqdm_kwargs: Unpack[_TqdmKwargs],
116+
) -> list[_R]: ...
117+
@overload
118+
def process_map(
119+
fn: Callable[[_T1, _T2, _T3, _T4, _T5], _R],
120+
iter1: Iterable[_T1],
121+
iter2: Iterable[_T2],
122+
iter3: Iterable[_T3],
123+
iter4: Iterable[_T4],
124+
iter5: Iterable[_T5],
125+
**tqdm_kwargs: Unpack[_TqdmKwargs],
126+
) -> list[_R]: ...
127+
@overload
128+
def process_map(
129+
fn: Callable[..., _R],
130+
iter1: Iterable[Any],
131+
iter2: Iterable[Any],
132+
iter3: Iterable[Any],
133+
iter4: Iterable[Any],
134+
iter5: Iterable[Any],
135+
iter6: Iterable[Any],
136+
*iterables: Iterable[Any],
137+
**tqdm_kwargs: Unpack[_TqdmKwargs],
138+
) -> list[_R]: ...

0 commit comments

Comments
 (0)