python-iterutils 0.2.6__py3-none-any.whl → 0.2.7__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 CHANGED
@@ -2,14 +2,13 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  __author__ = "ChenyangGao <https://chenyanggao.github.io>"
5
- __version__ = (0, 2, 6)
5
+ __version__ = (0, 2, 7)
6
6
  __all__ = [
7
- "Yield", "YieldFrom", "GenStep", "iterable", "async_iterable",
8
- "run_gen_step", "run_gen_step_iter", "as_gen_step",
9
- "as_gen_step_iter", "split_cm", "with_iter_next",
10
- "map", "filter", "reduce", "zip", "chain",
11
- "chain_from_iterable", "chunked", "foreach",
12
- "async_foreach", "through", "async_through",
7
+ "Yield", "YieldFrom", "GenStep", "GenStepIter", "iterable",
8
+ "async_iterable", "run_gen_step", "run_gen_step_iter",
9
+ "as_gen_step", "as_gen_step_iter", "split_cm", "with_iter_next",
10
+ "map", "filter", "reduce", "zip", "chain", "chain_from_iterable",
11
+ "chunked", "foreach", "async_foreach", "through", "async_through",
13
12
  "flatten", "async_flatten", "collect", "async_collect",
14
13
  "group_collect", "async_group_collect", "iter_unique",
15
14
  "async_iter_unique", "wrap_iter", "wrap_aiter", "acc_step",
@@ -68,7 +67,15 @@ class GenStep:
68
67
  """专供 `run_gen_step` 和 `run_gen_step_iter`,说明值需要进一步提取
69
68
  """
70
69
  value: Generator
71
- max_depth: int = -1
70
+ max_depth: int = 0
71
+
72
+
73
+ @dataclass(slots=True, frozen=True, unsafe_hash=True)
74
+ class GenStepIter:
75
+ """专供 `run_gen_step_iter`,说明值需要进一步提取
76
+ """
77
+ value: Generator
78
+ max_depth: int = 0
72
79
 
73
80
 
74
81
  iterable = Iterable.__instancecheck__
@@ -204,7 +211,9 @@ def _run_gen_step_iter(
204
211
  val_type = type(value)
205
212
  if issubclass(val_type, (Yield, YieldFrom)):
206
213
  value = value.value
207
- if isinstance(value, GenStep):
214
+ elif isinstance(value, GenStepIter):
215
+ yield from _run_gen_step_iter(value.value, value.max_depth)
216
+ elif isinstance(value, GenStep):
208
217
  value = _run_gen_step(value.value, value.max_depth)
209
218
  elif drive_generator and isinstance(value, Generator):
210
219
  value = _run_gen_step(value, dgen)
@@ -221,7 +230,9 @@ def _run_gen_step_iter(
221
230
  val_type = type(value)
222
231
  if issubclass(val_type, (Yield, YieldFrom)):
223
232
  value = value.value
224
- if isinstance(value, GenStep):
233
+ elif isinstance(value, GenStepIter):
234
+ yield from _run_gen_step_iter(value.value, value.max_depth)
235
+ elif isinstance(value, GenStep):
225
236
  value = _run_gen_step(value.value, value.max_depth)
226
237
  elif drive_generator and isinstance(value, Generator):
227
238
  value = _run_gen_step(value, dgen)
@@ -250,6 +261,9 @@ async def _run_gen_step_async_iter(
250
261
  value = value.value
251
262
  if isawaitable(value):
252
263
  value = await value
264
+ elif isinstance(value, GenStepIter):
265
+ async for el in _run_gen_step_async_iter(value.value, value.max_depth):
266
+ yield el
253
267
  elif isinstance(value, GenStep):
254
268
  value = await _run_gen_step_async(value.value, value.max_depth)
255
269
  elif drive_generator and isinstance(value, Generator):
@@ -274,6 +288,9 @@ async def _run_gen_step_async_iter(
274
288
  value = value.value
275
289
  if isawaitable(value):
276
290
  value = await value
291
+ elif isinstance(value, GenStepIter):
292
+ async for el in _run_gen_step_async_iter(value.value, value.max_depth):
293
+ yield el
277
294
  elif isinstance(value, GenStep):
278
295
  value = await _run_gen_step_async(value.value, value.max_depth)
279
296
  elif drive_generator and isinstance(value, Generator):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-iterutils
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: Python another itertools.
5
5
  Home-page: https://github.com/ChenyangGao/web-mount-packs/tree/main/python-module/python-iterutils
6
6
  License: MIT
@@ -0,0 +1,7 @@
1
+ LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
2
+ iterutils/__init__.py,sha256=44RZPpEkjbhfDwb9cmUcStPJTPfyixaoMifj9iHme2s,37665
3
+ iterutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ python_iterutils-0.2.7.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
5
+ python_iterutils-0.2.7.dist-info/METADATA,sha256=VjYnPSbvmJBEe8CV8Ba2C5NN3La6vqrrAqLsJeb3q8Q,1427
6
+ python_iterutils-0.2.7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
7
+ python_iterutils-0.2.7.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
2
- iterutils/__init__.py,sha256=gfuQk9Qp4hVpjCciZIyeS-0dRNIFsrO6HkWEZK4UgUo,36876
3
- iterutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- python_iterutils-0.2.6.dist-info/LICENSE,sha256=o5242_N2TgDsWwFhPn7yr8YJNF7XsJM5NxUMtcT97bc,1100
5
- python_iterutils-0.2.6.dist-info/METADATA,sha256=Bd-gpNnYlks584NbnAndkac7XDznJNBDeeR-xoiKUdY,1427
6
- python_iterutils-0.2.6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
7
- python_iterutils-0.2.6.dist-info/RECORD,,