Skip to content

array_typing.utils

Functions:

flatten

flatten(
    iterable: (
        _T
        | Iterable[_T]
        | Iterable[Iterable[_T]]
        | Iterable
    ),
    base_type: tuple[type, ...] = (str, bytes),
) -> Iterable[_T]
Source code in src/array_typing/utils/_sequence.py
 9
10
11
12
13
14
15
16
17
18
19
20
21
def flatten(
    iterable: _T | Iterable[_T] | Iterable[Iterable[_T]] | Iterable,
    base_type: tuple[type, ...] = (str, bytes),
) -> Iterable[_T]:
    if not at.is_iterable(iterable, base_type):
        yield iterable  # pyright: ignore [reportReturnType]
        return

    for item in iterable:
        if at.is_iterable(item, base_type):
            yield from flatten(item)
        else:
            yield item

is_subsequence

is_subsequence(a: Sequence[Any], b: Sequence[Any]) -> bool
Source code in src/array_typing/utils/_sequence.py
24
25
26
27
28
29
30
31
def is_subsequence(a: Sequence[Any], b: Sequence[Any]) -> bool:
    i: int = 0
    j: int = 0
    while i < len(a) and j < len(b):
        if a[i] == b[j]:
            i += 1
        j += 1
    return i == len(a)