Skip to main content

fastapi-filters

Project description

logo

license test codecov downloads pypi black

Introduction

fastapi-filters is a library that provides filtering/sorting feature for FastAPI applications.


Installation

pip install fastapi-filters

Quickstart

Define filters using a FilterSet class:

from fastapi import Depends, FastAPI
from pydantic import BaseModel

from fastapi_filters import FilterField, FilterSet, SortingValues, create_sorting

app = FastAPI()


class UserOut(BaseModel):
    name: str
    surname: str
    age: int


class UserFilters(FilterSet):
    name: FilterField[str]
    surname: FilterField[str]
    age: FilterField[int]


@app.get("/users")
async def get_users(
    filters: UserFilters = Depends(),
    sorting: SortingValues = Depends(create_sorting("name", "age")),
) -> list[UserOut]:
    pass

Query parameters are auto-generated based on field types:

GET /users?name[eq]=Steve&age[gt]=30&sort=+age

fastapi-filters supports SQLAlchemy, Tortoise ORM, Beanie (MongoDB), and raw SQL integrations.

from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession

from fastapi_filters.ext.sqlalchemy import apply_filters_and_sorting


@app.get("/users")
async def get_users(
    db: AsyncSession = Depends(get_db),
    filters: UserFilters = Depends(),
    sorting: SortingValues = Depends(create_sorting("name", "age")),
) -> list[UserOut]:
    stmt = apply_filters_and_sorting(select(User), filters, sorting)
    return (await db.scalars(stmt)).all()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_filters-0.5.0.tar.gz (222.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_filters-0.5.0-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_filters-0.5.0.tar.gz.

File metadata

  • Download URL: fastapi_filters-0.5.0.tar.gz
  • Upload date:
  • Size: 222.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastapi_filters-0.5.0.tar.gz
Algorithm Hash digest
SHA256 7ffea1b317502184eb0b00933b6e4cfc7299c491be4cae234455df3983e355ca
MD5 b811c380fc8ad0b98d595e6f84822c83
BLAKE2b-256 20f6bf90e4bdc51cb917174a9172fdc6c2439e8c8063771773bec7b164ccd409

See more details on using hashes here.

File details

Details for the file fastapi_filters-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: fastapi_filters-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.20 {"installer":{"name":"uv","version":"0.11.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastapi_filters-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c61ad770bd43732ba48575ed05cc627010ae3d357794aff120ab131aeec8a1f
MD5 09944b2ce23c95d822838fa49b39e289
BLAKE2b-256 192cc66f62edc8528fe914c6f69da07472ee56e3de61508d23ceb9b2b3cda232

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page