Skip to content

semlib.reduce

reduce async

reduce(
    iterable: Iterable[str],
    /,
    template: str | Callable[[str, str], str],
    *,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> str
reduce[T](
    iterable: Iterable[str | T],
    /,
    template: str | Callable[[str | T, str | T], str],
    *,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> str | T
reduce[T: BaseModel](
    iterable: Iterable[T],
    /,
    template: str | Callable[[T, T], str],
    *,
    return_type: type[T],
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> T
reduce[T](
    iterable: Iterable[T],
    /,
    template: str | Callable[[T, T], str],
    *,
    return_type: Bare[T],
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> T
reduce[T, U: BaseModel](
    iterable: Iterable[T],
    /,
    template: str | Callable[[U, T], str],
    initial: U,
    *,
    return_type: type[U],
    model: str | None = None,
    max_concurrency: int | None = None,
) -> U
reduce[T, U](
    iterable: Iterable[T],
    /,
    template: str | Callable[[U, T], str],
    initial: U,
    *,
    return_type: Bare[U],
    model: str | None = None,
    max_concurrency: int | None = None,
) -> U

Standalone version of reduce.

Source code in src/semlib/reduce.py
async def reduce(
    iterable: Iterable[Any],
    /,
    template: str | Callable[[Any, Any], str],
    initial: Any = None,
    *,
    return_type: Any = None,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> Any:
    """Standalone version of [reduce][semlib.reduce.Reduce.reduce]."""
    reducer = Reduce(model=model, max_concurrency=max_concurrency)
    return await reducer.reduce(  # type: ignore[call-overload]
        iterable,
        template,
        initial,
        return_type=return_type,
        associative=associative,
    )

reduce_sync

reduce_sync(
    iterable: Iterable[str],
    /,
    template: str | Callable[[str, str], str],
    *,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> str
reduce_sync[T](
    iterable: Iterable[str | T],
    /,
    template: str | Callable[[str | T, str | T], str],
    *,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> str | T
reduce_sync[T: BaseModel](
    iterable: Iterable[T],
    /,
    template: str | Callable[[T, T], str],
    *,
    return_type: type[T],
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> T
reduce_sync[T](
    iterable: Iterable[T],
    /,
    template: str | Callable[[T, T], str],
    *,
    return_type: Bare[T],
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> T
reduce_sync[T, U: BaseModel](
    iterable: Iterable[T],
    /,
    template: str | Callable[[U, T], str],
    initial: U,
    *,
    return_type: type[U],
    model: str | None = None,
    max_concurrency: int | None = None,
) -> U
reduce_sync[T, U](
    iterable: Iterable[T],
    /,
    template: str | Callable[[U, T], str],
    initial: U,
    *,
    return_type: Bare[U],
    model: str | None = None,
    max_concurrency: int | None = None,
) -> U

Standalone synchronous version of reduce.

Source code in src/semlib/reduce.py
def reduce_sync(
    iterable: Iterable[Any],
    /,
    template: str | Callable[[Any, Any], str],
    initial: Any = None,
    *,
    return_type: Any = None,
    associative: bool = False,
    model: str | None = None,
    max_concurrency: int | None = None,
) -> Any:
    """Standalone synchronous version of [reduce][semlib.reduce.Reduce.reduce]."""
    reducer = Reduce(model=model, max_concurrency=max_concurrency)
    return asyncio.run(
        reducer.reduce(  # type: ignore[call-overload]
            iterable,
            template,
            initial,
            return_type=return_type,
            associative=associative,
        )
    )

:::