python-iterutils 0.1.1__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- iterutils/__init__.py +52 -4
- {python_iterutils-0.1.1.dist-info → python_iterutils-0.1.2.dist-info}/METADATA +1 -1
- python_iterutils-0.1.2.dist-info/RECORD +7 -0
- python_iterutils-0.1.1.dist-info/RECORD +0 -7
- {python_iterutils-0.1.1.dist-info → python_iterutils-0.1.2.dist-info}/LICENSE +0 -0
- {python_iterutils-0.1.1.dist-info → python_iterutils-0.1.2.dist-info}/WHEEL +0 -0
iterutils/__init__.py
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
4
|
__author__ = "ChenyangGao <https://chenyanggao.github.io>"
|
|
5
|
-
__version__ = (0, 1,
|
|
5
|
+
__version__ = (0, 1, 2)
|
|
6
6
|
__all__ = [
|
|
7
7
|
"Return", "Yield", "YieldFrom", "iterable", "async_iterable", "foreach", "async_foreach",
|
|
8
|
-
"through", "async_through", "flatten", "async_flatten", "
|
|
9
|
-
"
|
|
8
|
+
"through", "async_through", "flatten", "async_flatten", "iter_unique", "async_iter_unique",
|
|
9
|
+
"chunked", "wrap_iter", "wrap_aiter", "acc_step", "cut_iter", "run_gen_step",
|
|
10
|
+
"run_gen_step_iter", "bfs_gen",
|
|
10
11
|
]
|
|
11
12
|
|
|
12
13
|
|
|
@@ -15,7 +16,7 @@ from asyncio import to_thread
|
|
|
15
16
|
from collections import deque
|
|
16
17
|
from collections.abc import (
|
|
17
18
|
AsyncIterable, AsyncIterator, Buffer, Callable, Generator,
|
|
18
|
-
Iterable, Iterator, Sequence,
|
|
19
|
+
Iterable, Iterator, MutableSet, Sequence,
|
|
19
20
|
)
|
|
20
21
|
from dataclasses import dataclass
|
|
21
22
|
from itertools import batched, pairwise
|
|
@@ -175,6 +176,53 @@ async def async_flatten(
|
|
|
175
176
|
yield e
|
|
176
177
|
|
|
177
178
|
|
|
179
|
+
@overload
|
|
180
|
+
def iter_unique[T](
|
|
181
|
+
iterable: Iterable[T],
|
|
182
|
+
/,
|
|
183
|
+
seen: None | MutableSet = None,
|
|
184
|
+
) -> Iterator[T]:
|
|
185
|
+
...
|
|
186
|
+
@overload
|
|
187
|
+
def iter_unique[T](
|
|
188
|
+
iterable: AsyncIterable[T],
|
|
189
|
+
/,
|
|
190
|
+
seen: None | MutableSet = None,
|
|
191
|
+
) -> AsyncIterator[T]:
|
|
192
|
+
...
|
|
193
|
+
def iter_unique[T](
|
|
194
|
+
iterable: Iterable[T] | AsyncIterable[T],
|
|
195
|
+
/,
|
|
196
|
+
seen: None | MutableSet = None,
|
|
197
|
+
) -> Iterator[T] | AsyncIterator[T]:
|
|
198
|
+
if not isinstance(iterable, Iterable):
|
|
199
|
+
return async_iter_unique(iterable, seen)
|
|
200
|
+
if seen is None:
|
|
201
|
+
seen = set()
|
|
202
|
+
def gen(iterable):
|
|
203
|
+
add = seen.add
|
|
204
|
+
for e in iterable:
|
|
205
|
+
if e not in seen:
|
|
206
|
+
yield e
|
|
207
|
+
add(e)
|
|
208
|
+
return gen(iterable)
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
async def async_iter_unique[T](
|
|
212
|
+
iterable: Iterable[T] | AsyncIterable[T],
|
|
213
|
+
/,
|
|
214
|
+
seen: None | MutableSet = None,
|
|
215
|
+
threaded: bool = False,
|
|
216
|
+
) -> AsyncIterator[T]:
|
|
217
|
+
if seen is None:
|
|
218
|
+
seen = set()
|
|
219
|
+
add = seen.add
|
|
220
|
+
async for e in ensure_aiter(iterable, threaded=threaded):
|
|
221
|
+
if e not in seen:
|
|
222
|
+
yield e
|
|
223
|
+
add(e)
|
|
224
|
+
|
|
225
|
+
|
|
178
226
|
@overload
|
|
179
227
|
def chunked[T](
|
|
180
228
|
iterable: Iterable[T],
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
|
2
|
+
iterutils/__init__.py,sha256=5hCDZOCOWXFOpQAiER-oeO5L_7ZKgyfC9tit_4cb7D8,19786
|
|
3
|
+
iterutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
python_iterutils-0.1.2.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
|
5
|
+
python_iterutils-0.1.2.dist-info/METADATA,sha256=AWuufxXMxFsqdAjEMrV_AvblI5qIX-IZ5CdJkACCQzY,1341
|
|
6
|
+
python_iterutils-0.1.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
7
|
+
python_iterutils-0.1.2.dist-info/RECORD,,
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
|
2
|
-
iterutils/__init__.py,sha256=Wrlg5UDuOta7ixKS3Mh5FT9EZkqKT7sBRXNeujoanDE,18639
|
|
3
|
-
iterutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
python_iterutils-0.1.1.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
|
|
5
|
-
python_iterutils-0.1.1.dist-info/METADATA,sha256=DjSEacOQgDGD7CZDcm-uzPLfWz-Gayb5agE0pkZjRUM,1341
|
|
6
|
-
python_iterutils-0.1.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
7
|
-
python_iterutils-0.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|