Skip to main content

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

Python Modern API Tools, fast to code

Coverage

PyPI - Python Version PyPI

GitHub Workflow Status GitHub release (release name instead of tag name) Test

Support framework


Documentation: https://so1n.me/pait/

中文文档: https://so1n.me/pait-zh-doc/


pait

Pait is an api tool that can be used in any python web framework (currently only flask, starlette, sanic, tornado are supported, other frameworks will be supported once Pait is stable).

Note:

mypy check 100%

test coverage 95%+ (exclude api_doc)

python version >= 3.7 (support postponed annotations)

The following code does not specify, all default to use the starlette framework.

Warning

There are changes between the current version and the 0.8 version of the API, For more information, please refer to 0.9.0version change

Feature

  • Parameter checksum automatic conversion (parameter check depends on Pydantic)
  • Parameter dependency verification
  • Automatically generate openapi files
  • Swagger, Redoc route
  • gRPC Gateway route
  • TestClient support, support response result verification
  • Support for plugin extensions, such as the Mock plugin

Installation

pip install pait

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, add_doc_route
from pait.field import Body
from pait.model.response import PaitResponseModel
from pydantic import BaseModel, Field


class DemoResponseModel(PaitResponseModel):
    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)

How to used in other web framework?

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

IDE Support

While pydantic will work well with any IDE out of the box.

Full example

For more complete examples, please refer to example

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

pait-1.0.0a1.tar.gz (97.2 kB view details)

Uploaded Source

Built Distribution

pait-1.0.0a1-py3-none-any.whl (146.6 kB view details)

Uploaded Python 3

File details

Details for the file pait-1.0.0a1.tar.gz.

File metadata

  • Download URL: pait-1.0.0a1.tar.gz
  • Upload date:
  • Size: 97.2 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

Hashes for pait-1.0.0a1.tar.gz
Algorithm Hash digest
SHA256 14dc80286faca0333d0363d7f21b9c7729c231b6d42921c52a460dcd0b8633c9
MD5 1d10ed5924c5f9127a6eff1f9c2c228b
BLAKE2b-256 2e7b0f51ab5f63722f4d735b1a7ec94cf7d9a855d3847da827b3bee25d422f49

See more details on using hashes here.

File details

Details for the file pait-1.0.0a1-py3-none-any.whl.

File metadata

  • Download URL: pait-1.0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 146.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

Hashes for pait-1.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ff9a2c67156d3afa39ea070586b62a1dbe4e3b6c201d14597106ae382be16c5
MD5 47d0a790b85b1640b28efd65e423ab7a
BLAKE2b-256 6d9697ec4ef801c87eb515ea1ec0d156be25ccc20bd510db8ff4a7e120a1660b

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