Skip to content

liblaf.grapes.itertools ¤

Classes:

Functions:

IterableWrapper ¤

IterableWrapper(iterable: Iterable[T])

Bases: Collection[T]

Methods:

Attributes:

Source code in src/liblaf/grapes/itertools/_iterable_wrapper.py
7
8
def __init__(self, iterable: Iterable[T], /) -> None:
    self.iterable = iterable

iterable instance-attribute ¤

iterable: Iterable[T] = iterable

__contains__ ¤

__contains__(x: object) -> bool
Source code in src/liblaf/grapes/itertools/_iterable_wrapper.py
10
11
def __contains__(self, x: object, /) -> bool:
    return x in self.iterable  # pyright: ignore[reportOperatorIssue]

__iter__ ¤

__iter__() -> Iterator[T]
Source code in src/liblaf/grapes/itertools/_iterable_wrapper.py
13
14
def __iter__(self) -> Iterator[T]:
    return iter(self.iterable)

__len__ ¤

__len__() -> int
Source code in src/liblaf/grapes/itertools/_iterable_wrapper.py
16
17
def __len__(self) -> int:
    return len(self.iterable)  # pyright: ignore[reportArgumentType]

as_iterable ¤

as_iterable(
    obj: Any, base_type: ClassInfo | None = (str, bytes)
) -> Iterable
Source code in src/liblaf/grapes/itertools/_as_iterable.py
 7
 8
 9
10
11
12
13
14
15
def as_iterable(obj: Any, base_type: ClassInfo | None = (str, bytes)) -> Iterable:
    # https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.always_iterable
    if obj is None:
        return ()
    if base_type is not None and isinstance(obj, base_type):
        return (obj,)
    if isinstance(obj, Iterable):
        return obj
    return (obj,)

as_sequence ¤

as_sequence(
    obj: Any, base_type: ClassInfo | None = (str, bytes)
) -> Sequence
Source code in src/liblaf/grapes/itertools/_as_sequence.py
 9
10
def as_sequence(obj: Any, base_type: ClassInfo | None = (str, bytes)) -> Sequence:
    return tuple(as_iterable(obj, base_type))

first_not_none ¤

first_not_none(*args: T | None) -> T

.

References
  1. more_itertools.first_true
Source code in src/liblaf/grapes/itertools/_first_not_none.py
1
2
3
4
5
6
7
def first_not_none[T](*args: T | None) -> T:
    """.

    References:
        1. [`more_itertools.first_true`](https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.first_true)
    """
    return next(arg for arg in args if arg is not None)

generator_to_list ¤

generator_to_list(
    fn: Callable[P, Generator[T]],
) -> Callable[P, list[T]]
Source code in src/liblaf/grapes/itertools/_generator_to_list.py
 5
 6
 7
 8
 9
10
def generator_to_list[**P, T](fn: Callable[P, Generator[T]]) -> Callable[P, list[T]]:
    @functools.wraps(fn)
    def wrapped(*args: P.args, **kwargs: P.kwargs) -> list[T]:
        return list(fn(*args, **kwargs))

    return wrapped