pypaginate.dataset
Resident in-memory dataset: marshal once, query many times.
Marshals a sequence into the Rust core ONCE, then answers repeated filter / sort
/ search / page queries natively (the core returns indices; this wrapper selects
your original objects). Build once, query many — the only in-memory shape where
crossing into Rust pays off versus native list operations.
Dataset Objects
class Dataset(Generic[ItemT])
An in-memory dataset queried natively (marshalled once).
filter
def filter(filters: Sequence[FilterSpec]) -> list[ItemT]
Rows matching the flat filters (each keeps its own AND/OR logic).
sort
def sort(sorting: Sequence[SortSpec]) -> list[ItemT]
Rows sorted by sorting (stable, null-aware).
search
def search(spec: SearchSpec) -> list[ItemT]
Rows ranked by relevance of spec over its fields.
page
def page(params: OffsetParams,
*,
filters: Sequence[FilterSpec] | None = None,
sorting: Sequence[SortSpec] | None = None,
search: SearchSpec | None = None) -> OffsetPage[ItemT]
Filter + search + sort + offset-paginate in one native call.