8000 stdlib: add overloads fot itertools.product() up to an arity of 15 · python/typeshed@4e69fa4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4e69fa4

Browse files
author
muxator
committed
stdlib: add overloads fot itertools.product() up to an arity of 15
Before this change, the maximum usable arity for itertools.product() was 10 (increased in 2e83e65, #12023, which raised it from 6 to 10). Fixes #13490, albeit partially: just based on this change, a user has no way of knowing if he is hitting this limit or not. This discoverability problem will probably be best addressed with changes in documentation or in the type checkers.
1 parent 24c78b9 commit 4e69fa4

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

stdlib/itertools.pyi

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ _T7 = TypeVar("_T7")
2222
_T8 = TypeVar("_T8")
2323
_T9 = TypeVar("_T9")
2424
_T10 = TypeVar("_T10")
25+
_T11 = TypeVar("_T11")
26+
_T12 = TypeVar("_T12")
27+
_T13 = TypeVar("_T13")
28+
_T14 = TypeVar("_T14")
29+
_T15 = TypeVar("_T15")
2530

2631
_Step: TypeAlias = SupportsFloat | SupportsInt | SupportsIndex | SupportsComplex
2732

@@ -273,6 +278,96 @@ class product(Generic[_T_co]):
273278
/,
274279
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10]]: ...
275280
@overload
281+
def __new__(
282+
cls,
283+
iter1: Iterable[_T1],
284+
iter2: Iterable[_T2],
285+
iter3: Iterable[_T3],
286+
iter4: Iterable[_T4],
287+
iter5: Iterable[_T5],
288+
iter6: Iterable[_T6],
289+
iter7: Iterable[_T7],
290+
iter8: Iterable[_T8],
291+
iter9: Iterable[_T9],
292+
iter10: Iterable[_T10],
293+
iter11: Iterable[_T11],
294+
/,
295+
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11]]: ...
296+
@overload
297+
def __new__(
298+
cls,
299+
iter1: Iterable[_T1],
300+
iter2: Iterable[_T2],
301+
iter3: Iterable[_T3],
302+
iter4: Iterable[_T4],
303+
iter5: Iterable[_T5],
304+
iter6: Iterable[_T6],
305+
iter7: Iterable[_T7],
306+
iter8: Iterable[_T8],
307+
iter9: Iterable[_T9],
308+
iter10: Iterable[_T10],
309+
iter11: Iterable[_T11],
310+
iter12: Iterable[_T12],
311+
/,
312+
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12]]: ...
313+
@overload
314+
def __new__(
315+
cls,
316+
iter1: Iterable[_T1],
317+
iter2: Iterable[_T2],
318+
iter3: Iterable[_T3],
319+
iter4: Iterable[_T4],
320+
iter5: Iterable[_T5],
321+
iter6: Iterable[_T6],
322+
iter7: Iterable[_T7],
323+
iter8: Iterable[_T8],
324+
iter9: Iterable[_T9],
325+
iter10: Iterable[_T10],
326+
iter11: Iterable[_T11],
327+
iter12: Iterable[_T12],
328+
iter13: Iterable[_T13],
329+
/,
330+
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13]]: ...
331+
@overload
332+
def __new__(
333+
cls,
334+
iter1: Iterable[_T1],
335+
iter2: Iterable[_T2],
336+
iter3: Iterable[_T3],
337+
iter4: Iterable[_T4],
338+
iter5: Iterable[_T5],
339+
iter6: Iterable[_T6],
340+
iter7: Iterable[_T7],
341+
iter8: Iterable[_T8],
342+
iter9: Iterable[_T9],
343+
iter10: Iterable[_T10],
344+
iter11: Iterable[_T11],
345+
iter12: Iterable[_T12],
346+
iter13: Iterable[_T13],
347+
iter14: Iterable[_T14],
348+
/,
349+
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14]]: ...
350+
@overload
351+
def __new__(
352+
cls,
353+
iter1: Iterable[_T1],
354+
iter2: Iterable[_T2],
355+
iter3: Iterable[_T3],
356+
iter4: Iterable[_T4],
357+
iter5: Iterable[_T5],
358+
iter6: Iterable[_T6],
359+
iter7: Iterable[_T7],
360+
iter8: Iterable[_T8],
361+
iter9: Iterable[_T9],
362+
iter10: Iterable[_T10],
363+
iter11: Iterable[_T11],
364+
iter12: Iterable[_T12],
365+
iter13: Iterable[_T13],
366+
iter14: Iterable[_T14],
367+
iter15: Iterable[_T15],
368+
/,
369+
) -> product[tuple[_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12, _T13, _T14, _T15]]: ...
370+
@overload
276371
def __new__(cls, *iterables: Iterable[_T1], repeat: int = 1) -> product[tuple[_T1, ...]]: ...
277372
def __iter__(self) -> Self: ...
278373
def __next__(self) -> _T_co: ...

0 commit comments

Comments
 (0)
0