more.pyi 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931
  1. """Stubs for more_itertools.more"""
  2. from __future__ import annotations
  3. import sys
  4. import types
  5. from collections.abc import (
  6. Container,
  7. Hashable,
  8. Iterable,
  9. Iterator,
  10. Mapping,
  11. Reversible,
  12. Sequence,
  13. Sized,
  14. )
  15. from contextlib import AbstractContextManager
  16. from typing import (
  17. Any,
  18. Callable,
  19. Generic,
  20. TypeVar,
  21. overload,
  22. type_check_only,
  23. )
  24. from typing_extensions import Protocol
  25. __all__ = [
  26. 'AbortThread',
  27. 'SequenceView',
  28. 'UnequalIterablesError',
  29. 'adjacent',
  30. 'all_unique',
  31. 'always_iterable',
  32. 'always_reversible',
  33. 'bucket',
  34. 'callback_iter',
  35. 'chunked',
  36. 'chunked_even',
  37. 'circular_shifts',
  38. 'collapse',
  39. 'combination_index',
  40. 'combination_with_replacement_index',
  41. 'consecutive_groups',
  42. 'constrained_batches',
  43. 'consumer',
  44. 'count_cycle',
  45. 'countable',
  46. 'dft',
  47. 'difference',
  48. 'distinct_combinations',
  49. 'distinct_permutations',
  50. 'distribute',
  51. 'divide',
  52. 'doublestarmap',
  53. 'duplicates_everseen',
  54. 'duplicates_justseen',
  55. 'classify_unique',
  56. 'exactly_n',
  57. 'filter_except',
  58. 'filter_map',
  59. 'first',
  60. 'gray_product',
  61. 'groupby_transform',
  62. 'ichunked',
  63. 'iequals',
  64. 'idft',
  65. 'ilen',
  66. 'interleave',
  67. 'interleave_evenly',
  68. 'interleave_longest',
  69. 'intersperse',
  70. 'is_sorted',
  71. 'islice_extended',
  72. 'iterate',
  73. 'iter_suppress',
  74. 'join_mappings',
  75. 'last',
  76. 'locate',
  77. 'longest_common_prefix',
  78. 'lstrip',
  79. 'make_decorator',
  80. 'map_except',
  81. 'map_if',
  82. 'map_reduce',
  83. 'mark_ends',
  84. 'minmax',
  85. 'nth_or_last',
  86. 'nth_permutation',
  87. 'nth_prime',
  88. 'nth_product',
  89. 'nth_combination_with_replacement',
  90. 'numeric_range',
  91. 'one',
  92. 'only',
  93. 'outer_product',
  94. 'padded',
  95. 'partial_product',
  96. 'partitions',
  97. 'peekable',
  98. 'permutation_index',
  99. 'powerset_of_sets',
  100. 'product_index',
  101. 'raise_',
  102. 'repeat_each',
  103. 'repeat_last',
  104. 'replace',
  105. 'rlocate',
  106. 'rstrip',
  107. 'run_length',
  108. 'sample',
  109. 'seekable',
  110. 'set_partitions',
  111. 'side_effect',
  112. 'sliced',
  113. 'sort_together',
  114. 'split_after',
  115. 'split_at',
  116. 'split_before',
  117. 'split_into',
  118. 'split_when',
  119. 'spy',
  120. 'stagger',
  121. 'strip',
  122. 'strictly_n',
  123. 'substrings',
  124. 'substrings_indexes',
  125. 'takewhile_inclusive',
  126. 'time_limited',
  127. 'unique_in_window',
  128. 'unique_to_each',
  129. 'unzip',
  130. 'value_chain',
  131. 'windowed',
  132. 'windowed_complete',
  133. 'with_iter',
  134. 'zip_broadcast',
  135. 'zip_equal',
  136. 'zip_offset',
  137. ]
  138. # Type and type variable definitions
  139. _T = TypeVar('_T')
  140. _T1 = TypeVar('_T1')
  141. _T2 = TypeVar('_T2')
  142. _T3 = TypeVar('_T3')
  143. _T4 = TypeVar('_T4')
  144. _T5 = TypeVar('_T5')
  145. _U = TypeVar('_U')
  146. _V = TypeVar('_V')
  147. _W = TypeVar('_W')
  148. _T_co = TypeVar('_T_co', covariant=True)
  149. _GenFn = TypeVar('_GenFn', bound=Callable[..., Iterator[Any]])
  150. _Raisable = BaseException | type[BaseException]
  151. # The type of isinstance's second argument (from typeshed builtins)
  152. if sys.version_info >= (3, 10):
  153. _ClassInfo = type | types.UnionType | tuple[_ClassInfo, ...]
  154. else:
  155. _ClassInfo = type | tuple[_ClassInfo, ...]
  156. @type_check_only
  157. class _SizedIterable(Protocol[_T_co], Sized, Iterable[_T_co]): ...
  158. @type_check_only
  159. class _SizedReversible(Protocol[_T_co], Sized, Reversible[_T_co]): ...
  160. @type_check_only
  161. class _SupportsSlicing(Protocol[_T_co]):
  162. def __getitem__(self, __k: slice) -> _T_co: ...
  163. def chunked(
  164. iterable: Iterable[_T], n: int | None, strict: bool = ...
  165. ) -> Iterator[list[_T]]: ...
  166. @overload
  167. def first(iterable: Iterable[_T]) -> _T: ...
  168. @overload
  169. def first(iterable: Iterable[_T], default: _U) -> _T | _U: ...
  170. @overload
  171. def last(iterable: Iterable[_T]) -> _T: ...
  172. @overload
  173. def last(iterable: Iterable[_T], default: _U) -> _T | _U: ...
  174. @overload
  175. def nth_or_last(iterable: Iterable[_T], n: int) -> _T: ...
  176. @overload
  177. def nth_or_last(iterable: Iterable[_T], n: int, default: _U) -> _T | _U: ...
  178. class peekable(Generic[_T], Iterator[_T]):
  179. def __init__(self, iterable: Iterable[_T]) -> None: ...
  180. def __iter__(self) -> peekable[_T]: ...
  181. def __bool__(self) -> bool: ...
  182. @overload
  183. def peek(self) -> _T: ...
  184. @overload
  185. def peek(self, default: _U) -> _T | _U: ...
  186. def prepend(self, *items: _T) -> None: ...
  187. def __next__(self) -> _T: ...
  188. @overload
  189. def __getitem__(self, index: int) -> _T: ...
  190. @overload
  191. def __getitem__(self, index: slice) -> list[_T]: ...
  192. def consumer(func: _GenFn) -> _GenFn: ...
  193. def ilen(iterable: Iterable[_T]) -> int: ...
  194. def iterate(func: Callable[[_T], _T], start: _T) -> Iterator[_T]: ...
  195. def with_iter(
  196. context_manager: AbstractContextManager[Iterable[_T]],
  197. ) -> Iterator[_T]: ...
  198. def one(
  199. iterable: Iterable[_T],
  200. too_short: _Raisable | None = ...,
  201. too_long: _Raisable | None = ...,
  202. ) -> _T: ...
  203. def raise_(exception: _Raisable, *args: Any) -> None: ...
  204. def strictly_n(
  205. iterable: Iterable[_T],
  206. n: int,
  207. too_short: _GenFn | None = ...,
  208. too_long: _GenFn | None = ...,
  209. ) -> list[_T]: ...
  210. def distinct_permutations(
  211. iterable: Iterable[_T], r: int | None = ...
  212. ) -> Iterator[tuple[_T, ...]]: ...
  213. def intersperse(
  214. e: _U, iterable: Iterable[_T], n: int = ...
  215. ) -> Iterator[_T | _U]: ...
  216. def unique_to_each(*iterables: Iterable[_T]) -> list[list[_T]]: ...
  217. @overload
  218. def windowed(
  219. seq: Iterable[_T], n: int, *, step: int = ...
  220. ) -> Iterator[tuple[_T | None, ...]]: ...
  221. @overload
  222. def windowed(
  223. seq: Iterable[_T], n: int, fillvalue: _U, step: int = ...
  224. ) -> Iterator[tuple[_T | _U, ...]]: ...
  225. def substrings(iterable: Iterable[_T]) -> Iterator[tuple[_T, ...]]: ...
  226. def substrings_indexes(
  227. seq: Sequence[_T], reverse: bool = ...
  228. ) -> Iterator[tuple[Sequence[_T], int, int]]: ...
  229. class bucket(Generic[_T, _U], Container[_U]):
  230. def __init__(
  231. self,
  232. iterable: Iterable[_T],
  233. key: Callable[[_T], _U],
  234. validator: Callable[[_U], object] | None = ...,
  235. ) -> None: ...
  236. def __contains__(self, value: object) -> bool: ...
  237. def __iter__(self) -> Iterator[_U]: ...
  238. def __getitem__(self, value: object) -> Iterator[_T]: ...
  239. def spy(
  240. iterable: Iterable[_T], n: int = ...
  241. ) -> tuple[list[_T], Iterator[_T]]: ...
  242. def interleave(*iterables: Iterable[_T]) -> Iterator[_T]: ...
  243. def interleave_longest(*iterables: Iterable[_T]) -> Iterator[_T]: ...
  244. def interleave_evenly(
  245. iterables: list[Iterable[_T]], lengths: list[int] | None = ...
  246. ) -> Iterator[_T]: ...
  247. def collapse(
  248. iterable: Iterable[Any],
  249. base_type: _ClassInfo | None = ...,
  250. levels: int | None = ...,
  251. ) -> Iterator[Any]: ...
  252. @overload
  253. def side_effect(
  254. func: Callable[[_T], object],
  255. iterable: Iterable[_T],
  256. chunk_size: None = ...,
  257. before: Callable[[], object] | None = ...,
  258. after: Callable[[], object] | None = ...,
  259. ) -> Iterator[_T]: ...
  260. @overload
  261. def side_effect(
  262. func: Callable[[list[_T]], object],
  263. iterable: Iterable[_T],
  264. chunk_size: int,
  265. before: Callable[[], object] | None = ...,
  266. after: Callable[[], object] | None = ...,
  267. ) -> Iterator[_T]: ...
  268. def sliced(
  269. seq: _SupportsSlicing[_T], n: int, strict: bool = ...
  270. ) -> Iterator[_T]: ...
  271. def split_at(
  272. iterable: Iterable[_T],
  273. pred: Callable[[_T], object],
  274. maxsplit: int = ...,
  275. keep_separator: bool = ...,
  276. ) -> Iterator[list[_T]]: ...
  277. def split_before(
  278. iterable: Iterable[_T], pred: Callable[[_T], object], maxsplit: int = ...
  279. ) -> Iterator[list[_T]]: ...
  280. def split_after(
  281. iterable: Iterable[_T], pred: Callable[[_T], object], maxsplit: int = ...
  282. ) -> Iterator[list[_T]]: ...
  283. def split_when(
  284. iterable: Iterable[_T],
  285. pred: Callable[[_T, _T], object],
  286. maxsplit: int = ...,
  287. ) -> Iterator[list[_T]]: ...
  288. def split_into(
  289. iterable: Iterable[_T], sizes: Iterable[int | None]
  290. ) -> Iterator[list[_T]]: ...
  291. @overload
  292. def padded(
  293. iterable: Iterable[_T],
  294. *,
  295. n: int | None = ...,
  296. next_multiple: bool = ...,
  297. ) -> Iterator[_T | None]: ...
  298. @overload
  299. def padded(
  300. iterable: Iterable[_T],
  301. fillvalue: _U,
  302. n: int | None = ...,
  303. next_multiple: bool = ...,
  304. ) -> Iterator[_T | _U]: ...
  305. @overload
  306. def repeat_last(iterable: Iterable[_T]) -> Iterator[_T]: ...
  307. @overload
  308. def repeat_last(iterable: Iterable[_T], default: _U) -> Iterator[_T | _U]: ...
  309. def distribute(n: int, iterable: Iterable[_T]) -> list[Iterator[_T]]: ...
  310. @overload
  311. def stagger(
  312. iterable: Iterable[_T],
  313. offsets: _SizedIterable[int] = ...,
  314. longest: bool = ...,
  315. ) -> Iterator[tuple[_T | None, ...]]: ...
  316. @overload
  317. def stagger(
  318. iterable: Iterable[_T],
  319. offsets: _SizedIterable[int] = ...,
  320. longest: bool = ...,
  321. fillvalue: _U = ...,
  322. ) -> Iterator[tuple[_T | _U, ...]]: ...
  323. class UnequalIterablesError(ValueError):
  324. def __init__(self, details: tuple[int, int, int] | None = ...) -> None: ...
  325. # zip_equal
  326. @overload
  327. def zip_equal(__iter1: Iterable[_T1]) -> Iterator[tuple[_T1]]: ...
  328. @overload
  329. def zip_equal(
  330. __iter1: Iterable[_T1], __iter2: Iterable[_T2]
  331. ) -> Iterator[tuple[_T1, _T2]]: ...
  332. @overload
  333. def zip_equal(
  334. __iter1: Iterable[_T1], __iter2: Iterable[_T2], __iter3: Iterable[_T3]
  335. ) -> Iterator[tuple[_T1, _T2, _T3]]: ...
  336. @overload
  337. def zip_equal(
  338. __iter1: Iterable[_T1],
  339. __iter2: Iterable[_T2],
  340. __iter3: Iterable[_T3],
  341. __iter4: Iterable[_T4],
  342. ) -> Iterator[tuple[_T1, _T2, _T3, _T4]]: ...
  343. @overload
  344. def zip_equal(
  345. __iter1: Iterable[_T1],
  346. __iter2: Iterable[_T2],
  347. __iter3: Iterable[_T3],
  348. __iter4: Iterable[_T4],
  349. __iter5: Iterable[_T5],
  350. ) -> Iterator[tuple[_T1, _T2, _T3, _T4, _T5]]: ...
  351. @overload
  352. def zip_equal(
  353. __iter1: Iterable[Any],
  354. __iter2: Iterable[Any],
  355. __iter3: Iterable[Any],
  356. __iter4: Iterable[Any],
  357. __iter5: Iterable[Any],
  358. __iter6: Iterable[Any],
  359. *iterables: Iterable[Any],
  360. ) -> Iterator[tuple[Any, ...]]: ...
  361. # zip_offset
  362. @overload
  363. def zip_offset(
  364. __iter1: Iterable[_T1],
  365. *,
  366. offsets: _SizedIterable[int],
  367. longest: bool = ...,
  368. fillvalue: None = None,
  369. ) -> Iterator[tuple[_T1 | None]]: ...
  370. @overload
  371. def zip_offset(
  372. __iter1: Iterable[_T1],
  373. __iter2: Iterable[_T2],
  374. *,
  375. offsets: _SizedIterable[int],
  376. longest: bool = ...,
  377. fillvalue: None = None,
  378. ) -> Iterator[tuple[_T1 | None, _T2 | None]]: ...
  379. @overload
  380. def zip_offset(
  381. __iter1: Iterable[_T],
  382. __iter2: Iterable[_T],
  383. __iter3: Iterable[_T],
  384. *iterables: Iterable[_T],
  385. offsets: _SizedIterable[int],
  386. longest: bool = ...,
  387. fillvalue: None = None,
  388. ) -> Iterator[tuple[_T | None, ...]]: ...
  389. @overload
  390. def zip_offset(
  391. __iter1: Iterable[_T1],
  392. *,
  393. offsets: _SizedIterable[int],
  394. longest: bool = ...,
  395. fillvalue: _U,
  396. ) -> Iterator[tuple[_T1 | _U]]: ...
  397. @overload
  398. def zip_offset(
  399. __iter1: Iterable[_T1],
  400. __iter2: Iterable[_T2],
  401. *,
  402. offsets: _SizedIterable[int],
  403. longest: bool = ...,
  404. fillvalue: _U,
  405. ) -> Iterator[tuple[_T1 | _U, _T2 | _U]]: ...
  406. @overload
  407. def zip_offset(
  408. __iter1: Iterable[_T],
  409. __iter2: Iterable[_T],
  410. __iter3: Iterable[_T],
  411. *iterables: Iterable[_T],
  412. offsets: _SizedIterable[int],
  413. longest: bool = ...,
  414. fillvalue: _U,
  415. ) -> Iterator[tuple[_T | _U, ...]]: ...
  416. def sort_together(
  417. iterables: Iterable[Iterable[_T]],
  418. key_list: Iterable[int] = ...,
  419. key: Callable[..., Any] | None = ...,
  420. reverse: bool = ...,
  421. strict: bool = ...,
  422. ) -> list[tuple[_T, ...]]: ...
  423. def unzip(iterable: Iterable[Sequence[_T]]) -> tuple[Iterator[_T], ...]: ...
  424. def divide(n: int, iterable: Iterable[_T]) -> list[Iterator[_T]]: ...
  425. def always_iterable(
  426. obj: object,
  427. base_type: _ClassInfo | None = ...,
  428. ) -> Iterator[Any]: ...
  429. def adjacent(
  430. predicate: Callable[[_T], bool],
  431. iterable: Iterable[_T],
  432. distance: int = ...,
  433. ) -> Iterator[tuple[bool, _T]]: ...
  434. @overload
  435. def groupby_transform(
  436. iterable: Iterable[_T],
  437. keyfunc: None = None,
  438. valuefunc: None = None,
  439. reducefunc: None = None,
  440. ) -> Iterator[tuple[_T, Iterator[_T]]]: ...
  441. @overload
  442. def groupby_transform(
  443. iterable: Iterable[_T],
  444. keyfunc: Callable[[_T], _U],
  445. valuefunc: None,
  446. reducefunc: None,
  447. ) -> Iterator[tuple[_U, Iterator[_T]]]: ...
  448. @overload
  449. def groupby_transform(
  450. iterable: Iterable[_T],
  451. keyfunc: None,
  452. valuefunc: Callable[[_T], _V],
  453. reducefunc: None,
  454. ) -> Iterable[tuple[_T, Iterable[_V]]]: ...
  455. @overload
  456. def groupby_transform(
  457. iterable: Iterable[_T],
  458. keyfunc: Callable[[_T], _U],
  459. valuefunc: Callable[[_T], _V],
  460. reducefunc: None,
  461. ) -> Iterable[tuple[_U, Iterator[_V]]]: ...
  462. @overload
  463. def groupby_transform(
  464. iterable: Iterable[_T],
  465. keyfunc: None,
  466. valuefunc: None,
  467. reducefunc: Callable[[Iterator[_T]], _W],
  468. ) -> Iterable[tuple[_T, _W]]: ...
  469. @overload
  470. def groupby_transform(
  471. iterable: Iterable[_T],
  472. keyfunc: Callable[[_T], _U],
  473. valuefunc: None,
  474. reducefunc: Callable[[Iterator[_T]], _W],
  475. ) -> Iterable[tuple[_U, _W]]: ...
  476. @overload
  477. def groupby_transform(
  478. iterable: Iterable[_T],
  479. keyfunc: None,
  480. valuefunc: Callable[[_T], _V],
  481. reducefunc: Callable[[Iterable[_V]], _W],
  482. ) -> Iterable[tuple[_T, _W]]: ...
  483. @overload
  484. def groupby_transform(
  485. iterable: Iterable[_T],
  486. keyfunc: Callable[[_T], _U],
  487. valuefunc: Callable[[_T], _V],
  488. reducefunc: Callable[[Iterable[_V]], _W],
  489. ) -> Iterable[tuple[_U, _W]]: ...
  490. class numeric_range(Generic[_T, _U], Sequence[_T], Hashable, Reversible[_T]):
  491. @overload
  492. def __init__(self, __stop: _T) -> None: ...
  493. @overload
  494. def __init__(self, __start: _T, __stop: _T) -> None: ...
  495. @overload
  496. def __init__(self, __start: _T, __stop: _T, __step: _U) -> None: ...
  497. def __bool__(self) -> bool: ...
  498. def __contains__(self, elem: object) -> bool: ...
  499. def __eq__(self, other: object) -> bool: ...
  500. @overload
  501. def __getitem__(self, key: int) -> _T: ...
  502. @overload
  503. def __getitem__(self, key: slice) -> numeric_range[_T, _U]: ...
  504. def __hash__(self) -> int: ...
  505. def __iter__(self) -> Iterator[_T]: ...
  506. def __len__(self) -> int: ...
  507. def __reduce__(
  508. self,
  509. ) -> tuple[type[numeric_range[_T, _U]], tuple[_T, _T, _U]]: ...
  510. def __repr__(self) -> str: ...
  511. def __reversed__(self) -> Iterator[_T]: ...
  512. def count(self, value: _T) -> int: ...
  513. def index(self, value: _T) -> int: ... # type: ignore
  514. def count_cycle(
  515. iterable: Iterable[_T], n: int | None = ...
  516. ) -> Iterable[tuple[int, _T]]: ...
  517. def mark_ends(
  518. iterable: Iterable[_T],
  519. ) -> Iterable[tuple[bool, bool, _T]]: ...
  520. def locate(
  521. iterable: Iterable[_T],
  522. pred: Callable[..., Any] = ...,
  523. window_size: int | None = ...,
  524. ) -> Iterator[int]: ...
  525. def lstrip(
  526. iterable: Iterable[_T], pred: Callable[[_T], object]
  527. ) -> Iterator[_T]: ...
  528. def rstrip(
  529. iterable: Iterable[_T], pred: Callable[[_T], object]
  530. ) -> Iterator[_T]: ...
  531. def strip(
  532. iterable: Iterable[_T], pred: Callable[[_T], object]
  533. ) -> Iterator[_T]: ...
  534. class islice_extended(Generic[_T], Iterator[_T]):
  535. def __init__(self, iterable: Iterable[_T], *args: int | None) -> None: ...
  536. def __iter__(self) -> islice_extended[_T]: ...
  537. def __next__(self) -> _T: ...
  538. def __getitem__(self, index: slice) -> islice_extended[_T]: ...
  539. def always_reversible(iterable: Iterable[_T]) -> Iterator[_T]: ...
  540. def consecutive_groups(
  541. iterable: Iterable[_T], ordering: Callable[[_T], int] = ...
  542. ) -> Iterator[Iterator[_T]]: ...
  543. @overload
  544. def difference(
  545. iterable: Iterable[_T],
  546. func: Callable[[_T, _T], _U] = ...,
  547. *,
  548. initial: None = ...,
  549. ) -> Iterator[_T | _U]: ...
  550. @overload
  551. def difference(
  552. iterable: Iterable[_T], func: Callable[[_T, _T], _U] = ..., *, initial: _U
  553. ) -> Iterator[_U]: ...
  554. class SequenceView(Generic[_T], Sequence[_T]):
  555. def __init__(self, target: Sequence[_T]) -> None: ...
  556. @overload
  557. def __getitem__(self, index: int) -> _T: ...
  558. @overload
  559. def __getitem__(self, index: slice) -> Sequence[_T]: ...
  560. def __len__(self) -> int: ...
  561. class seekable(Generic[_T], Iterator[_T]):
  562. def __init__(
  563. self, iterable: Iterable[_T], maxlen: int | None = ...
  564. ) -> None: ...
  565. def __iter__(self) -> seekable[_T]: ...
  566. def __next__(self) -> _T: ...
  567. def __bool__(self) -> bool: ...
  568. @overload
  569. def peek(self) -> _T: ...
  570. @overload
  571. def peek(self, default: _U) -> _T | _U: ...
  572. def elements(self) -> SequenceView[_T]: ...
  573. def seek(self, index: int) -> None: ...
  574. def relative_seek(self, count: int) -> None: ...
  575. class run_length:
  576. @staticmethod
  577. def encode(iterable: Iterable[_T]) -> Iterator[tuple[_T, int]]: ...
  578. @staticmethod
  579. def decode(iterable: Iterable[tuple[_T, int]]) -> Iterator[_T]: ...
  580. def exactly_n(
  581. iterable: Iterable[_T], n: int, predicate: Callable[[_T], object] = ...
  582. ) -> bool: ...
  583. def circular_shifts(
  584. iterable: Iterable[_T], steps: int = 1
  585. ) -> list[tuple[_T, ...]]: ...
  586. def make_decorator(
  587. wrapping_func: Callable[..., _U], result_index: int = ...
  588. ) -> Callable[..., Callable[[Callable[..., Any]], Callable[..., _U]]]: ...
  589. @overload
  590. def map_reduce(
  591. iterable: Iterable[_T],
  592. keyfunc: Callable[[_T], _U],
  593. valuefunc: None = ...,
  594. reducefunc: None = ...,
  595. ) -> dict[_U, list[_T]]: ...
  596. @overload
  597. def map_reduce(
  598. iterable: Iterable[_T],
  599. keyfunc: Callable[[_T], _U],
  600. valuefunc: Callable[[_T], _V],
  601. reducefunc: None = ...,
  602. ) -> dict[_U, list[_V]]: ...
  603. @overload
  604. def map_reduce(
  605. iterable: Iterable[_T],
  606. keyfunc: Callable[[_T], _U],
  607. valuefunc: None = ...,
  608. reducefunc: Callable[[list[_T]], _W] = ...,
  609. ) -> dict[_U, _W]: ...
  610. @overload
  611. def map_reduce(
  612. iterable: Iterable[_T],
  613. keyfunc: Callable[[_T], _U],
  614. valuefunc: Callable[[_T], _V],
  615. reducefunc: Callable[[list[_V]], _W],
  616. ) -> dict[_U, _W]: ...
  617. def rlocate(
  618. iterable: Iterable[_T],
  619. pred: Callable[..., object] = ...,
  620. window_size: int | None = ...,
  621. ) -> Iterator[int]: ...
  622. def replace(
  623. iterable: Iterable[_T],
  624. pred: Callable[..., object],
  625. substitutes: Iterable[_U],
  626. count: int | None = ...,
  627. window_size: int = ...,
  628. ) -> Iterator[_T | _U]: ...
  629. def partitions(iterable: Iterable[_T]) -> Iterator[list[list[_T]]]: ...
  630. def set_partitions(
  631. iterable: Iterable[_T],
  632. k: int | None = ...,
  633. min_size: int | None = ...,
  634. max_size: int | None = ...,
  635. ) -> Iterator[list[list[_T]]]: ...
  636. class time_limited(Generic[_T], Iterator[_T]):
  637. def __init__(
  638. self, limit_seconds: float, iterable: Iterable[_T]
  639. ) -> None: ...
  640. def __iter__(self) -> islice_extended[_T]: ...
  641. def __next__(self) -> _T: ...
  642. @overload
  643. def only(
  644. iterable: Iterable[_T], *, too_long: _Raisable | None = ...
  645. ) -> _T | None: ...
  646. @overload
  647. def only(
  648. iterable: Iterable[_T], default: _U, too_long: _Raisable | None = ...
  649. ) -> _T | _U: ...
  650. def ichunked(iterable: Iterable[_T], n: int) -> Iterator[Iterator[_T]]: ...
  651. def distinct_combinations(
  652. iterable: Iterable[_T], r: int
  653. ) -> Iterator[tuple[_T, ...]]: ...
  654. def filter_except(
  655. validator: Callable[[Any], object],
  656. iterable: Iterable[_T],
  657. *exceptions: type[BaseException],
  658. ) -> Iterator[_T]: ...
  659. def map_except(
  660. function: Callable[[Any], _U],
  661. iterable: Iterable[_T],
  662. *exceptions: type[BaseException],
  663. ) -> Iterator[_U]: ...
  664. def map_if(
  665. iterable: Iterable[Any],
  666. pred: Callable[[Any], bool],
  667. func: Callable[[Any], Any],
  668. func_else: Callable[[Any], Any] | None = ...,
  669. ) -> Iterator[Any]: ...
  670. def _sample_unweighted(
  671. iterator: Iterator[_T], k: int, strict: bool
  672. ) -> list[_T]: ...
  673. def _sample_counted(
  674. population: Iterator[_T], k: int, counts: Iterable[int], strict: bool
  675. ) -> list[_T]: ...
  676. def _sample_weighted(
  677. iterator: Iterator[_T], k: int, weights: Iterator[float], strict: bool
  678. ) -> list[_T]: ...
  679. def sample(
  680. iterable: Iterable[_T],
  681. k: int,
  682. weights: Iterable[float] | None = ...,
  683. *,
  684. counts: Iterable[int] | None = ...,
  685. strict: bool = False,
  686. ) -> list[_T]: ...
  687. def is_sorted(
  688. iterable: Iterable[_T],
  689. key: Callable[[_T], _U] | None = ...,
  690. reverse: bool = False,
  691. strict: bool = False,
  692. ) -> bool: ...
  693. class AbortThread(BaseException):
  694. pass
  695. class callback_iter(Generic[_T], Iterator[_T]):
  696. def __init__(
  697. self,
  698. func: Callable[..., Any],
  699. callback_kwd: str = ...,
  700. wait_seconds: float = ...,
  701. ) -> None: ...
  702. def __enter__(self) -> callback_iter[_T]: ...
  703. def __exit__(
  704. self,
  705. exc_type: type[BaseException] | None,
  706. exc_value: BaseException | None,
  707. traceback: types.TracebackType | None,
  708. ) -> bool | None: ...
  709. def __iter__(self) -> callback_iter[_T]: ...
  710. def __next__(self) -> _T: ...
  711. def _reader(self) -> Iterator[_T]: ...
  712. @property
  713. def done(self) -> bool: ...
  714. @property
  715. def result(self) -> Any: ...
  716. def windowed_complete(
  717. iterable: Iterable[_T], n: int
  718. ) -> Iterator[tuple[tuple[_T, ...], tuple[_T, ...], tuple[_T, ...]]]: ...
  719. def all_unique(
  720. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  721. ) -> bool: ...
  722. def nth_product(index: int, *args: Iterable[_T]) -> tuple[_T, ...]: ...
  723. def nth_combination_with_replacement(
  724. iterable: Iterable[_T], r: int, index: int
  725. ) -> tuple[_T, ...]: ...
  726. def nth_permutation(
  727. iterable: Iterable[_T], r: int, index: int
  728. ) -> tuple[_T, ...]: ...
  729. def value_chain(*args: _T | Iterable[_T]) -> Iterable[_T]: ...
  730. def product_index(element: Iterable[_T], *args: Iterable[_T]) -> int: ...
  731. def combination_index(
  732. element: Iterable[_T], iterable: Iterable[_T]
  733. ) -> int: ...
  734. def combination_with_replacement_index(
  735. element: Iterable[_T], iterable: Iterable[_T]
  736. ) -> int: ...
  737. def permutation_index(
  738. element: Iterable[_T], iterable: Iterable[_T]
  739. ) -> int: ...
  740. def repeat_each(iterable: Iterable[_T], n: int = ...) -> Iterator[_T]: ...
  741. class countable(Generic[_T], Iterator[_T]):
  742. def __init__(self, iterable: Iterable[_T]) -> None: ...
  743. def __iter__(self) -> countable[_T]: ...
  744. def __next__(self) -> _T: ...
  745. items_seen: int
  746. def chunked_even(iterable: Iterable[_T], n: int) -> Iterator[list[_T]]: ...
  747. @overload
  748. def zip_broadcast(
  749. __obj1: _T | Iterable[_T],
  750. *,
  751. scalar_types: _ClassInfo | None = ...,
  752. strict: bool = ...,
  753. ) -> Iterable[tuple[_T, ...]]: ...
  754. @overload
  755. def zip_broadcast(
  756. __obj1: _T | Iterable[_T],
  757. __obj2: _T | Iterable[_T],
  758. *,
  759. scalar_types: _ClassInfo | None = ...,
  760. strict: bool = ...,
  761. ) -> Iterable[tuple[_T, ...]]: ...
  762. @overload
  763. def zip_broadcast(
  764. __obj1: _T | Iterable[_T],
  765. __obj2: _T | Iterable[_T],
  766. __obj3: _T | Iterable[_T],
  767. *,
  768. scalar_types: _ClassInfo | None = ...,
  769. strict: bool = ...,
  770. ) -> Iterable[tuple[_T, ...]]: ...
  771. @overload
  772. def zip_broadcast(
  773. __obj1: _T | Iterable[_T],
  774. __obj2: _T | Iterable[_T],
  775. __obj3: _T | Iterable[_T],
  776. __obj4: _T | Iterable[_T],
  777. *,
  778. scalar_types: _ClassInfo | None = ...,
  779. strict: bool = ...,
  780. ) -> Iterable[tuple[_T, ...]]: ...
  781. @overload
  782. def zip_broadcast(
  783. __obj1: _T | Iterable[_T],
  784. __obj2: _T | Iterable[_T],
  785. __obj3: _T | Iterable[_T],
  786. __obj4: _T | Iterable[_T],
  787. __obj5: _T | Iterable[_T],
  788. *,
  789. scalar_types: _ClassInfo | None = ...,
  790. strict: bool = ...,
  791. ) -> Iterable[tuple[_T, ...]]: ...
  792. @overload
  793. def zip_broadcast(
  794. __obj1: _T | Iterable[_T],
  795. __obj2: _T | Iterable[_T],
  796. __obj3: _T | Iterable[_T],
  797. __obj4: _T | Iterable[_T],
  798. __obj5: _T | Iterable[_T],
  799. __obj6: _T | Iterable[_T],
  800. *objects: _T | Iterable[_T],
  801. scalar_types: _ClassInfo | None = ...,
  802. strict: bool = ...,
  803. ) -> Iterable[tuple[_T, ...]]: ...
  804. def unique_in_window(
  805. iterable: Iterable[_T], n: int, key: Callable[[_T], _U] | None = ...
  806. ) -> Iterator[_T]: ...
  807. def duplicates_everseen(
  808. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  809. ) -> Iterator[_T]: ...
  810. def duplicates_justseen(
  811. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  812. ) -> Iterator[_T]: ...
  813. def classify_unique(
  814. iterable: Iterable[_T], key: Callable[[_T], _U] | None = ...
  815. ) -> Iterator[tuple[_T, bool, bool]]: ...
  816. class _SupportsLessThan(Protocol):
  817. def __lt__(self, __other: Any) -> bool: ...
  818. _SupportsLessThanT = TypeVar("_SupportsLessThanT", bound=_SupportsLessThan)
  819. @overload
  820. def minmax(
  821. iterable_or_value: Iterable[_SupportsLessThanT], *, key: None = None
  822. ) -> tuple[_SupportsLessThanT, _SupportsLessThanT]: ...
  823. @overload
  824. def minmax(
  825. iterable_or_value: Iterable[_T], *, key: Callable[[_T], _SupportsLessThan]
  826. ) -> tuple[_T, _T]: ...
  827. @overload
  828. def minmax(
  829. iterable_or_value: Iterable[_SupportsLessThanT],
  830. *,
  831. key: None = None,
  832. default: _U,
  833. ) -> _U | tuple[_SupportsLessThanT, _SupportsLessThanT]: ...
  834. @overload
  835. def minmax(
  836. iterable_or_value: Iterable[_T],
  837. *,
  838. key: Callable[[_T], _SupportsLessThan],
  839. default: _U,
  840. ) -> _U | tuple[_T, _T]: ...
  841. @overload
  842. def minmax(
  843. iterable_or_value: _SupportsLessThanT,
  844. __other: _SupportsLessThanT,
  845. *others: _SupportsLessThanT,
  846. ) -> tuple[_SupportsLessThanT, _SupportsLessThanT]: ...
  847. @overload
  848. def minmax(
  849. iterable_or_value: _T,
  850. __other: _T,
  851. *others: _T,
  852. key: Callable[[_T], _SupportsLessThan],
  853. ) -> tuple[_T, _T]: ...
  854. def longest_common_prefix(
  855. iterables: Iterable[Iterable[_T]],
  856. ) -> Iterator[_T]: ...
  857. def iequals(*iterables: Iterable[Any]) -> bool: ...
  858. def constrained_batches(
  859. iterable: Iterable[_T],
  860. max_size: int,
  861. max_count: int | None = ...,
  862. get_len: Callable[[_T], object] = ...,
  863. strict: bool = ...,
  864. ) -> Iterator[tuple[_T]]: ...
  865. def gray_product(*iterables: Iterable[_T]) -> Iterator[tuple[_T, ...]]: ...
  866. def partial_product(*iterables: Iterable[_T]) -> Iterator[tuple[_T, ...]]: ...
  867. def takewhile_inclusive(
  868. predicate: Callable[[_T], bool], iterable: Iterable[_T]
  869. ) -> Iterator[_T]: ...
  870. def outer_product(
  871. func: Callable[[_T, _U], _V],
  872. xs: Iterable[_T],
  873. ys: Iterable[_U],
  874. *args: Any,
  875. **kwargs: Any,
  876. ) -> Iterator[tuple[_V, ...]]: ...
  877. def iter_suppress(
  878. iterable: Iterable[_T],
  879. *exceptions: type[BaseException],
  880. ) -> Iterator[_T]: ...
  881. def filter_map(
  882. func: Callable[[_T], _V | None],
  883. iterable: Iterable[_T],
  884. ) -> Iterator[_V]: ...
  885. def powerset_of_sets(iterable: Iterable[_T]) -> Iterator[set[_T]]: ...
  886. def join_mappings(
  887. **field_to_map: Mapping[_T, _V]
  888. ) -> dict[_T, dict[str, _V]]: ...
  889. def doublestarmap(
  890. func: Callable[..., _T],
  891. iterable: Iterable[Mapping[str, Any]],
  892. ) -> Iterator[_T]: ...
  893. def dft(xarr: Sequence[complex]) -> Iterator[complex]: ...
  894. def idft(Xarr: Sequence[complex]) -> Iterator[complex]: ...
  895. def _nth_prime_ub(n: int) -> float: ...
  896. def nth_prime(n: int) -> int: ...