recipes.pyi 5.7 KB

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