Skip to main content

Pydantic to fastapi model converter.

Project description

pyfa-converter

Allows you to convert pydantic models for fastapi param models - query, form, header, cookie, body, etc.

How to install?

pip install pyfa_converter

How to simplify your life?

from datetime import datetime
from typing import Optional

from fastapi import FastAPI, UploadFile, File, Form
from pydantic import BaseModel, Field

from pyfa_converter import FormDepends, PyFaDepends

app = FastAPI()


class PostContractBodySchema(BaseModel):
    title: str = Field(..., description="Description title")
    date: Optional[datetime] = Field(
        None, description="Example: 2021-12-14T09:56:31.056Z"
    )


@app.post("/form-data-body")
async def example_foo_body_handler(
    data1: PostContractBodySchema = PyFaDepends(model=PostContractBodySchema, _type=Form),
    document: UploadFile = File(...),
):
    return {"title": data.title, "date": data.date, "file_name": document.filename}

What do I need to do?

from pyfa_converter import PyFaDepends, FormDepends, QueryDepends
from fastapi import Header, Form
...

async def foo(data: MyCustomModel = PyFaDepends(MyCustomModel, _type=Header)): ...
async def foo(data: MyCustomModel = PyFaDepends(MyCustomModel, _type=Form)): ...

async def foo(data: MyCustomModel = FormDepends(MyCustomModel)): ...
async def foo(data: MyCustomModel = QueryDepends(MyCustomModel)): ...

If you want to accept a file on an endpoint, then the content-type for that endpoint changes from application/json to www-form-data.

FastAPI does not know how to override the pydantic schema so that parameters are passed as form. Even if you do

foo: CustomPydanticModel = Depends() all model attributes will be passed as query, but we want them to become body, that's what this library exists for.

Usually you use something along the lines of:

image

But, if we accept a lot of fields, then the function becomes very large (the number of attributes for the endpoint increases and it does not look very good).

Thanks to this library, it is possible to force the conversion of Field fields into fields of FastAPI Form with full preservation of all attributes (alias, gt, te, description, title, example and more...)

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

pyfa_converter-1.0.5.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

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

pyfa_converter-1.0.5.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file pyfa_converter-1.0.5.0.tar.gz.

File metadata

  • Download URL: pyfa_converter-1.0.5.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.2.0-1019-azure

File hashes

Hashes for pyfa_converter-1.0.5.0.tar.gz
Algorithm Hash digest
SHA256 feada234adc0164a863d591810cbacbfefd1c3b89cbed62d7e6805012d83e4c1
MD5 547f78e7450d47911b428d835e6d8087
BLAKE2b-256 a7c2f10b933ed41a673373b4cfb14958f507e6442465bd1e51577eb3a56684a6

See more details on using hashes here.

File details

Details for the file pyfa_converter-1.0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pyfa_converter-1.0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.2 Linux/6.2.0-1019-azure

File hashes

Hashes for pyfa_converter-1.0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 559fbbd57a10b0819410ae078dc04fae2a0e41fdfacc5ac7cc4f6121fcfaeaeb
MD5 34c8cf06e68e1e73700bb7c8734732b7
BLAKE2b-256 0520491f71127ac4ac558b65f733d36351e2d17046d99d69270405107fc17e69

See more details on using hashes here.

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