Source code for redditwarp.pagination.paginator
from __future__ import annotations
from typing import TypeVar, Sequence, Generic, Iterator, Optional
T = TypeVar('T')
# Abstract classes
[docs]class Paginator(Generic[T]):
def __init__(self, *, limit: Optional[int] = None) -> None:
self.limit: Optional[int] = limit
("")
def __iter__(self) -> Iterator[Sequence[T]]:
while page := self.fetch():
yield page
[docs]class OffsetPaginator(Paginator[T]):
def __init__(self, *, limit: Optional[int] = None, offset: Optional[int] = None) -> None:
super().__init__(limit=limit)
self.offset: Optional[int] = offset
("")
# Interfaces
# Mixins
[docs]class HasMorePaginator(HasMore, Paginator[T]):
def __iter__(self) -> Iterator[Sequence[T]]:
if page := self.fetch():
yield page
while self.has_more() and (page := self.fetch()):
yield page