21 lines
511 B
Python
21 lines
511 B
Python
from typing import Any, Callable, Optional
|
|
|
|
from reactivex import Observable, compose
|
|
from reactivex import operators as ops
|
|
from reactivex.typing import Mapper
|
|
|
|
|
|
def sum_(
|
|
key_mapper: Optional[Mapper[Any, float]] = None
|
|
) -> Callable[[Observable[Any]], Observable[float]]:
|
|
if key_mapper:
|
|
return compose(ops.map(key_mapper), ops.sum())
|
|
|
|
def accumulator(prev: float, cur: float) -> float:
|
|
return prev + cur
|
|
|
|
return ops.reduce(seed=0, accumulator=accumulator)
|
|
|
|
|
|
__all__ = ["sum_"]
|