Skip to main content

A Quart extension to provide schema validation

Project description

Build Status docs pypi python license

Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation. This is particularly useful when writing RESTful APIs.

Quart-Schema can use either msgspec or pydantic to validate.

Quickstart

Quart-Schema can validate an existing Quart route by decorating it with validate_querystring, validate_request, or validate_response. It can also validate the JSON data sent and received over websockets using the send_as and receive_as methods.

from dataclasses import dataclass
from datetime import datetime

from quart import Quart, websocket
from quart_schema import QuartSchema, validate_request, validate_response

app = Quart(__name__)
QuartSchema(app)

@dataclass
class Todo:
    task: str
    due: datetime | None

@app.post("/")
@validate_request(Todo)
@validate_response(Todo, 201)
async def create_todo(data: Todo) -> tuple[Todo, int]:
    ... # Do something with data, e.g. save to the DB
    return data, 201

@app.websocket("/ws")
async def ws() -> None:
    while True:
        data = await websocket.receive_as(Todo)
        ... # Do something with data, e.g. save to the DB
        await websocket.send_as(data, Todo)

The documentation is served by default at /openapi.json according to the OpenAPI standard, or at /docs for a SwaggerUI interface, or /redocs for a redoc interface, or /scalar for a Scalar interface. Note that there is currently no documentation standard for WebSockets.

Contributing

Quart-Schema is developed on GitHub. If you come across an issue, or have a feature request please open an issue. If you want to contribute a fix or the feature-implementation please do (typo fixes welcome), by proposing a merge request.

Testing

The best way to test Quart-Schema is with Tox,

$ pip install tox
$ tox

this will check the code style and run the tests.

Help

The Quart-Schema documentation is the best places to start, after that try searching stack overflow or ask for help on gitter. If you still can’t find an answer please open an issue.

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

quart_schema-0.23.0.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

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

quart_schema-0.23.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file quart_schema-0.23.0.tar.gz.

File metadata

  • Download URL: quart_schema-0.23.0.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for quart_schema-0.23.0.tar.gz
Algorithm Hash digest
SHA256 778f36aa80697420a0148807eb324b7d6ca1f10793cd1d0eb4f1c7908d860bdd
MD5 64b4d3b03204292e4f70693832d89e1b
BLAKE2b-256 246597b69c76bc8838f0389387c87f480382eea48ca60d5262aeaf4086ad14e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for quart_schema-0.23.0.tar.gz:

Publisher: publish.yml on pgjones/quart-schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quart_schema-0.23.0-py3-none-any.whl.

File metadata

  • Download URL: quart_schema-0.23.0-py3-none-any.whl
  • Upload date:
  • Size: 21.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for quart_schema-0.23.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8f217942d433954dfe9860b4d748fe4b111836d8d74e06bc0afc512dd991c80
MD5 ecd8e94e8d492fcf6f41e0657d9be3d2
BLAKE2b-256 12ba54c4516499bf6549ff47d656b8dc8cd58cea7f6d03d3097aebf1958f4974

See more details on using hashes here.

Provenance

The following attestation bundles were made for quart_schema-0.23.0-py3-none-any.whl:

Publisher: publish.yml on pgjones/quart-schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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