def max_items( self, *, key: _max_min_key_annotation = _max_min_key_default, default: Union[_T, Sentinel] = sentinel, ) -> _T: _, kwargs = drop_sentinel(key=key, default=default) return max(self.items(), **kwargs)
def islice( self, start: int, stop: Union[int, Sentinel] = sentinel, step: Union[int, Sentinel] = sentinel, ) -> "ChainedIterable[_T]": args, _ = drop_sentinel(stop, step) return self.pipe(islice, start, *args, index=0)
def range( cls: Type["ChainedIterable"], start: int, stop: Union[int, Sentinel] = sentinel, step: Union[int, Sentinel] = sentinel, ) -> "ChainedIterable[int]": args, _ = drop_sentinel(stop, step) return cls(range(start, *args))
def test_range( start: int, stop: Union[int, Sentinel], step: Union[int, Sentinel], ) -> None: if step is sentinel: assume(stop is not sentinel) args, _ = drop_sentinel(stop, step) iterable = ChainedIterable.range(start, *args) assert isinstance(iterable, ChainedIterable) assert iterable == range(start, *args)
def reduce( self, func: Callable[[_T, _T], _T], initial: Union[_U, Sentinel] = sentinel, ) -> Any: args, _ = drop_sentinel(initial) try: return reduce(func, self._iterable, *args) except TypeError as error: (msg,) = error.args if msg == "reduce() of empty sequence with no initial value": raise EmptyIterableError from None else: raise error
def sum(self, start: Union[_T, int] = 0) -> Union[_T, int]: args, _ = drop_sentinel(start) return sum(self._iterable, *args)
def sum(self, start: Union[_T, Sentinel] = sentinel) -> _T: args, _ = drop_sentinel(start) return sum(self._iterable, *args)