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.20.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

quart_schema-0.20.0-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: quart_schema-0.20.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for quart_schema-0.20.0.tar.gz
Algorithm Hash digest
SHA256 9e2ec72f4b781e81f6e298d0a8a873f299b0c8dd81d14ade31e24d3d9483233c
MD5 23ce879d559692f1f2b0680dff6f9134
BLAKE2b-256 183472f2dec4fc199cce27110581a1380c78e9fb697d98e70e50a46ad0c39344

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quart_schema-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 03d4ba12e1e37d81fe580db0f40e0ca11edf30099ad661fd5a97ead7c89eb644
MD5 fcf219676df3bee30b2817ae7b5e7c11
BLAKE2b-256 b19190eb1c1c4e0b8733de3d17411bac8063fc4387585d748bc2deaec27a4b81

See more details on using hashes here.

Supported by

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