recipes.pyi 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. """Stubs for more_itertools.recipes"""
  2. from __future__ import annotations
  3. from typing import (
  4. Any,
  5. Callable,
  6. Iterable,
  7. Iterator,
  8. overload,
  9. Sequence,
  10. Type,
  11. TypeVar,
  12. )
  13. # Type and type variable definitions
  14. _T = TypeVar('_T')
  15. _T1 = TypeVar('_T1')
  16. _T2 = TypeVar('_T2')
  17. _U = TypeVar('_U')
  18. def take(n: int, iterable: Iterable[_T]) -> list[_T]: ...
  19. def tabulate(
  20. function: Callable[[int], _T], start: int = ...
  21. ) -> Iterator[_T]: ...
  22. def tail(n: int, iterable: Iterable[_T]) -> Iterator[_T]: ...
  23. def consume(iterator: Iterable[_T], n: int | None = ...) -> None: ...
  24. @overload
  25. def nth(iterable: Iterable[_T], n: int) -> _T | None: ...
  26. @overload
  27. def nth(iterable: Iterable[_T], n: int, default: _U) -> _T | _U: ...
  28. def all_equal(
  29. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  30. ) -> bool: ...
  31. def quantify(
  32. iterable: Iterable[_T], pred: Callable[[_T], bool] = ...
  33. ) -> int: ...
  34. def pad_none(iterable: Iterable[_T]) -> Iterator[_T | None]: ...
  35. def padnone(iterable: Iterable[_T]) -> Iterator[_T | None]: ...
  36. def ncycles(iterable: Iterable[_T], n: int) -> Iterator[_T]: ...
  37. def dotproduct(vec1: Iterable[_T1], vec2: Iterable[_T2]) -> Any: ...
  38. def flatten(listOfLists: Iterable[Iterable[_T]]) -> Iterator[_T]: ...
  39. def repeatfunc(
  40. func: Callable[..., _U], times: int | None = ..., *args: Any
  41. ) -> Iterator[_U]: ...
  42. def pairwise(iterable: Iterable[_T]) -> Iterator[tuple[_T, _T]]: ...
  43. def grouper(
  44. iterable: Iterable[_T],
  45. n: int,
  46. incomplete: str = ...,
  47. fillvalue: _U = ...,
  48. ) -> Iterator[tuple[_T | _U, ...]]: ...
  49. def roundrobin(*iterables: Iterable[_T]) -> Iterator[_T]: ...
  50. def partition(
  51. pred: Callable[[_T], object] | None, iterable: Iterable[_T]
  52. ) -> tuple[Iterator[_T], Iterator[_T]]: ...
  53. def powerset(iterable: Iterable[_T]) -> Iterator[tuple[_T, ...]]: ...
  54. def unique_everseen(
  55. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  56. ) -> Iterator[_T]: ...
  57. def unique_justseen(
  58. iterable: Iterable[_T], key: Callable[[_T], object] | None = ...
  59. ) -> Iterator[_T]: ...
  60. def unique(
  61. iterable: Iterable[_T],
  62. key: Callable[[_T], object] | None = ...,
  63. reverse: bool = False,
  64. ) -> Iterator[_T]: ...
  65. @overload
  66. def iter_except(
  67. func: Callable[[], _T],
  68. exception: Type[BaseException] | tuple[Type[BaseException], ...],
  69. first: None = ...,
  70. ) -> Iterator[_T]: ...
  71. @overload
  72. def iter_except(
  73. func: Callable[[], _T],
  74. exception: Type[BaseException] | tuple[Type[BaseException], ...],
  75. first: Callable[[], _U],
  76. ) -> Iterator[_T | _U]: ...
  77. @overload
  78. def first_true(
  79. iterable: Iterable[_T], *, pred: Callable[[_T], object] | None = ...
  80. ) -> _T | None: ...
  81. @overload
  82. def first_true(
  83. iterable: Iterable[_T],
  84. default: _U,
  85. pred: Callable[[_T], object] | None = ...,
  86. ) -> _T | _U: ...
  87. def random_product(
  88. *args: Iterable[_T], repeat: int = ...
  89. ) -> tuple[_T, ...]: ...
  90. def random_permutation(
  91. iterable: Iterable[_T], r: int | None = ...
  92. ) -> tuple[_T, ...]: ...
  93. def random_combination(iterable: Iterable[_T], r: int) -> tuple[_T, ...]: ...
  94. def random_combination_with_replacement(
  95. iterable: Iterable[_T], r: int
  96. ) -> tuple[_T, ...]: ...
  97. def nth_combination(
  98. iterable: Iterable[_T], r: int, index: int
  99. ) -> tuple[_T, ...]: ...
  100. def prepend(value: _T, iterator: Iterable[_U]) -> Iterator[_T | _U]: ...
  101. def convolve(signal: Iterable[_T], kernel: Iterable[_T]) -> Iterator[_T]: ...
  102. def before_and_after(
  103. predicate: Callable[[_T], bool], it: Iterable[_T]
  104. ) -> tuple[Iterator[_T], Iterator[_T]]: ...
  105. def triplewise(iterable: Iterable[_T]) -> Iterator[tuple[_T, _T, _T]]: ...
  106. def sliding_window(
  107. iterable: Iterable[_T], n: int
  108. ) -> Iterator[tuple[_T, ...]]: ...
  109. def subslices(iterable: Iterable[_T]) -> Iterator[list[_T]]: ...
  110. def polynomial_from_roots(roots: Sequence[_T]) -> list[_T]: ...
  111. def iter_index(
  112. iterable: Iterable[_T],
  113. value: Any,
  114. start: int | None = ...,
  115. stop: int | None = ...,
  116. ) -> Iterator[int]: ...
  117. def sieve(n: int) -> Iterator[int]: ...
  118. def batched(
  119. iterable: Iterable[_T], n: int, *, strict: bool = False
  120. ) -> Iterator[tuple[_T]]: ...
  121. def transpose(
  122. it: Iterable[Iterable[_T]],
  123. ) -> Iterator[tuple[_T, ...]]: ...
  124. def reshape(
  125. matrix: Iterable[Iterable[_T]], cols: int
  126. ) -> Iterator[tuple[_T, ...]]: ...
  127. def matmul(m1: Sequence[_T], m2: Sequence[_T]) -> Iterator[tuple[_T]]: ...
  128. def factor(n: int) -> Iterator[int]: ...
  129. def polynomial_eval(coefficients: Sequence[_T], x: _U) -> _U: ...
  130. def sum_of_squares(it: Iterable[_T]) -> _T: ...
  131. def polynomial_derivative(coefficients: Sequence[_T]) -> list[_T]: ...
  132. def totient(n: int) -> int: ...