A module containing helpers for paginating responses with FastAPI
Project description
FastAPI Pagination Utilities
This Python package contains utilities to aid in paginating responses from FastAPI applications.
Use
Install fastapi-pagination-utilities
using pip:
pip install fastapi-pagination-utilities
The module can then be used as fastapi_pagination
:
from fastapi import FastAPI
from fastapi_pagination import (
CURSOR_QUERY, PAGE_SIZE_QUERY, PaginationDetails, PaginatedResults
)
from pydantic import BaseModel
app = FastAPI()
class Widget(BaseModel):
name: str
@app.get(
'/widgets',
summary="List widgets",
description="List all the widgers which are available."
response_model=PaginatedResults[Widget]
)
def list_widgets(
request: Request,
cursor: Optional[str] = CURSOR_QUERY,
page_size: Optional[int] = PAGE_SIZE_QUERY):
# Get pagination.
pagination = PaginationDetails(cursor, page_size)
# list_widgets() should take a page size and offset and return a list of
# results.
results, has_more = list_widgets(pagination.offset, pagination.page_size)
return PaginatedResults(
next=(
str(request.url.include_query_params(cursor=pagination.next_cursor()))
if has_more else None
),
previous=(
str(request.url.include_query_params(cursor=pagination.previous_cursor()))
if pagination.previous_cursor() else None
),
results=results
)
Developer quickstart
This project contains a dockerized testing environment which wraps tox.
Tests can be run using the ./test.sh
command:
# Run all PyTest tests and Flake8 checks
$ ./test.sh
# Run just PyTest
$ ./test.sh -e py3
# Run a single test file within PyTest
$ ./test.sh -e py3 -- tests/test_identifiers.py
# Run a single test file within PyTest with verbose logging
$ ./test.sh -e py3 -- tests/test_identifiers.py -vvv
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for fastapi-pagination-utilities-0.9.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d30e461418326d32775dec63413e3b802a2ed25b57e909eddb98bec27183eab9 |
|
MD5 | 268bc20f84dddd94df151057fd6543ca |
|
BLAKE2b-256 | c0889ce0c3b41e486999347f07c6626aa085a04fcb425b4ffdab577c111cdb00 |
Close
Hashes for fastapi_pagination_utilities-0.9.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ac236edfad7f78879777c4ea20092a99e1cc3bf9932d5df7fc7ec026290b755 |
|
MD5 | 855e1e4e5217fc0e6da716f74a8be1ee |
|
BLAKE2b-256 | 19bf5feee3db57ab9e61e71688e82374b5d8701ac21295f9ab78174a83e34e0a |