Pait is a Python api tool. Pait enables your Python web framework to have type checking, parameter type conversion, interface document generation and can display your documents through Redoc or Swagger (power by inspect, pydantic)
Project description
Pait(π tool) - Python Modern API Tools, easier to use web frameworks/write API routing
Documentation: https://so1n.me/pait/
中文文档: https://so1n.me/pait-zh-doc/
Warning
There are changes between the current version and the 0.8 version of the API, For more information, please refer to 1.0.0version change
pait
Pait is an api tool that can be used in any python web framework, the features provided are as follows:
- Parameter checksum automatic conversion (parameter check depends on
Pydantic
) - Parameter dependency verification
- Automatically generate openapi files
- Swagger, Redoc, Rapidoc, Elements, OpenAPI route
- gRPC Gateway route(After version 1.0, this feature has been migrated to grpc-gateway)
- TestClient support, support response result verification
- Support for plugin extensions, such as the Mock plugin, CheckResponse Plugin, Cache Response Plugin
- Support Pydantic V1 and V2
- WebSocket support
- SSE support
- Auto API Test support
Note:
mypy check 100%
python version >= 3.7 (support postponed annotations)
Installation
pip install pait --pre
Simple Example
from typing import Type
import uvicorn # type: ignore
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
from pait.app.starlette import pait
from pait.field import Body
from pait.openapi.doc_route import add_doc_route
from pait.model.response import JsonResponseModel
from pydantic import BaseModel, Field
class DemoResponseModel(JsonResponseModel):
"""demo post api response model"""
class ResponseModel(BaseModel):
uid: int = Field()
user_name: str = Field()
description: str = "demo response"
response_data: Type[BaseModel] = ResponseModel
@pait(response_model_list=[DemoResponseModel])
async def demo_post(
uid: int = Body.i(description="user id", gt=10, lt=1000),
user_name: str = Body.i(description="user name", min_length=2, max_length=4)
) -> JSONResponse:
return JSONResponse({'uid': uid, 'user_name': user_name})
app = Starlette(routes=[Route('/api', demo_post, methods=['POST'])])
add_doc_route(app)
uvicorn.run(app)
See documentation for more features
Support Web framework
Framework | Description |
---|---|
Flask | All features supported |
Sanic | All features supported |
Starlette | All features supported |
Tornado | All features supported |
Django | Coming soon |
If the web framework is not supported(which you are using).
Can be modified sync web framework according to pait.app.flask
Can be modified async web framework according to pait.app.starlette
Performance
For the parameter validation and transformation feature, Pait is mainly responsible for injecting the request data dependency into the Pydantic
model, and then the Pydanitc
verifies and transforms the data.
The time consumed by this process <= 0.00005(s), for benchmarks data and subsequent optimization, see #27
Full example
For more complete examples, please refer to example
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
File details
Details for the file pait-1.0.0a13.tar.gz
.
File metadata
- Download URL: pait-1.0.0a13.tar.gz
- Upload date:
- Size: 84.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.7.3 Linux/5.15.77-amd64-desktop
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abb9a9151193c10f727ee4e329e997593d90e5c8ca0449aa20b16641c301c522 |
|
MD5 | e4c508ec10e529220d5dcb50d5357a6c |
|
BLAKE2b-256 | 024df50ad91e1f71236ddf27deee8eed0d82f4ee83eef0ad5f90838d9b5155fa |
File details
Details for the file pait-1.0.0a13-py3-none-any.whl
.
File metadata
- Download URL: pait-1.0.0a13-py3-none-any.whl
- Upload date:
- Size: 128.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.7.3 Linux/5.15.77-amd64-desktop
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b28acff06a3053ba69b11ef8886d908a3ad1981a68ee9777ce80d1ee8fb3dad |
|
MD5 | 4aa5c9be2855fafadb1fc99625dcd58a |
|
BLAKE2b-256 | aaca59becebb5dc617215bd561e2de23df0609ad16d1a94eada5450d42a2420b |