Skip to main content

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).

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.