python_arango_ogm.utils.iter_util

 1from itertools import islice
 2from typing import List, Iterable, Generator
 3
 4def chunken(iterable: Iterable, chunk_size: int = 100) -> Generator:
 5  it = iter(iterable)
 6  yield from iter(lambda: list(islice(it, chunk_size)), [])
 7
 8def replace_tuple_item(tpl: tuple, index: int, new_item):
 9  l = list(tpl)
10  l[index] = new_item
11  return tuple(l)
12
13# Recursively flatten n-dimensional list into a single list
14# Allows for jagged and mixed lists
15# TODO: Make recursion a generator?
16def flatten(lst: List, flat=[]):
17  if (lst):
18    for item in lst:
19      if isinstance(item, List):
20        flatten(item, flat)
21      else:
22        flat.append(item)
23  return flat
24
25  # @staticmethod
26  # def chunk_sequence(seq, size):
27  #     return (seq[pos:pos + size] for pos in range(0, len(seq), size))
def chunken(iterable: Iterable, chunk_size: int = 100) -> Generator:
5def chunken(iterable: Iterable, chunk_size: int = 100) -> Generator:
6  it = iter(iterable)
7  yield from iter(lambda: list(islice(it, chunk_size)), [])
def replace_tuple_item(tpl: tuple, index: int, new_item):
 9def replace_tuple_item(tpl: tuple, index: int, new_item):
10  l = list(tpl)
11  l[index] = new_item
12  return tuple(l)
def flatten(lst: List, flat=[]):
17def flatten(lst: List, flat=[]):
18  if (lst):
19    for item in lst:
20      if isinstance(item, List):
21        flatten(item, flat)
22      else:
23        flat.append(item)
24  return flat
25
26  # @staticmethod
27  # def chunk_sequence(seq, size):
28  #     return (seq[pos:pos + size] for pos in range(0, len(seq), size))