pypaginate.domain.pages
Pagination result pages.
OffsetPage and CursorPage are separate types with clean schemas. No null leakage — each page has only the fields for its mode.
When msgspec is installed (pypaginate[fast]), page construction
uses msgspec.Struct for near-zero overhead. The returned object
duck-types as a Pydantic model with .model_dump() support.
Classes
Shared result fields for all pagination modes. |
|
Cursor pagination result. |
|
Offset pagination result. |
Module Contents
- class pypaginate.domain.pages.BasePage(/, **data: Any)
Bases:
pydantic.BaseModel,Generic[ItemT]Shared result fields for all pagination modes.
- model_config
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class pypaginate.domain.pages.CursorPage
Bases:
BasePage[ItemT]Cursor pagination result.
No total, no page — those are offset-only concepts.
- classmethod create(items: list[ItemT], params: pypaginate.domain.params.CursorParams, *, next_cursor: str | None = None, previous_cursor: str | None = None) Any
Build from cursor pagination results.
- Parameters:
items – Items for this page.
params – Cursor parameters used.
next_cursor – Cursor for the next page.
previous_cursor – Cursor for the previous page.
- Returns:
CursorPage or FastCursorPage (if msgspec installed).
- class pypaginate.domain.pages.OffsetPage
Bases:
BasePage[ItemT]Offset pagination result.
All fields are non-optional — clean serialization.
- classmethod create(items: list[ItemT], total: int, params: pypaginate.domain.params.OffsetParams) Any
Build from offset pagination results.
- Parameters:
items – Items for this page.
total – Total item count across all pages.
params – Offset parameters used.
- Returns:
OffsetPage or FastOffsetPage (if msgspec installed).