pypaginate.adapters.fastapi.filters

Declarative filter dependencies for FastAPI.

Users define filter parameters as Pydantic models. The pipeline auto-converts via the FilterInput protocol — no .to_specs() call needed.

Example:

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


@app.get("/users")
async def get_users(params: OffsetDep, filters: Annotated[UserFilters, Query()]):
    return pipeline.execute(data, params, filters=filters).model_dump()

Classes

FilterDep

Base class for declarative filter dependencies.

Functions

FilterField(→ Any)

Declare a filter field with operator metadata.

Module Contents

class pypaginate.adapters.fastapi.filters.FilterDep(/, **data: Any)

Bases: pydantic.BaseModel

Base class for declarative filter dependencies.

Subclass this and define fields with FilterField(). Non-None fields are converted to FilterSpec via to_specs(). Pipeline auto-detects this via the to_specs method.

to_specs() list[pypaginate.domain.specs.FilterSpec]

Convert non-None fields to FilterSpec list.

model_config

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

pypaginate.adapters.fastapi.filters.FilterField(default: Any = None, *, operator: str = 'eq', field: str | None = None, **kwargs: Any) Any

Declare a filter field with operator metadata.

Parameters:
  • default – Default value (None means not applied).

  • operator – Filter operator name (eq, gte, contains, etc.).

  • field – Target field name (defaults to the attribute name).