Skip to main content

pypaginate.adapters.fastapi.filters

Declarative filter dependency for FastAPI.

Subclass :class:FilterDep and declare fields with :func:FilterField to map query parameters onto :class:~pypaginate.FilterSpec conditions::

from typing import Annotated from fastapi import Query

class UserFilters(FilterDep): name: str | None = FilterField(None, operator="contains") min_age: int | None = FilterField(None, field="age", operator="gte")

@app.get("/users") def list_users(filters: Annotated[UserFilters, Query()]): specs = filters.to_specs()

Only fields whose value is not None become FilterSpec conditions.

FilterField

def FilterField(default: Any = None,
*,
operator: str = "eq",
field: str | None = None,
**kwargs: Any) -> Any

Declare a filter field carrying its operator + target-field metadata.

Arguments:

  • default - Default value; None means the filter is not applied.
  • operator - Filter operator wire name (eq, gte, contains, ...).
  • ``0 - Target field path; defaults to the attribute name.
  • 1 - Extra keyword arguments forwarded to Pydantic's FieldInfo``.

Returns:

A Pydantic FieldInfo carrying the filter metadata.

FilterDep Objects

class FilterDep(BaseModel)

Base class for declarative query-parameter filters.

to_specs

def to_specs() -> list[FilterSpec]

Convert each non-None field into a FilterSpec.