pypaginate.domain.params

Pagination input parameters — Elysia-style type inference.

Each params class contains only the fields relevant to its mode. Illegal states are unrepresentable.

Attributes

MAX_LIMIT

Maximum allowed page limit (DoS mitigation).

Classes

BaseParams

Shared pagination input — just limit.

CursorParams

Cursor pagination input.

OffsetParams

Offset pagination input.

Module Contents

class pypaginate.domain.params.BaseParams(/, **data: Any)

Bases: pydantic.BaseModel

Shared pagination input — just limit.

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pypaginate.domain.params.CursorParams(/, **data: Any)

Bases: BaseParams

Cursor pagination input.

Example:

CursorParams(limit=20, after="abc123")
CursorParams(limit=20, before="xyz789")
class pypaginate.domain.params.OffsetParams(/, **data: Any)

Bases: BaseParams

Offset pagination input.

Example:

OffsetParams(page=2, limit=20)
clamp(total: int) Self

Clamp page number to valid bounds.

Parameters:

total – Total number of items available.

Returns:

New params clamped to valid range, or self if valid.

property offset: int

Zero-based offset for database queries.

pypaginate.domain.params.MAX_LIMIT = 1000

Maximum allowed page limit (DoS mitigation).