Skip to main content

Add type hints support to Falcon with Pydantic and Marshmallow integration

Project description

Falcon typing

PyPI - Python Version PyPI codecov Build Status License: MIT

Use type hints to specify request parameters with Marshmallow and Pydantic support.

**Uses typedjson

Example

"""API."""
from typing import Optional, Union

from pydantic import BaseModel as PydanticModel
from falcontyping import TypedAPI, TypedResource


class UserV1(PydanticModel):

    username: str

class UserV2(PydanticModel):

    username: str
    balance: float


class UsersResource(TypedResource):

    def on_post(self, request, response, user: Union[UserV2, UserV1]) -> Union[UserV2, UserV1]:
        if isinstance(user, UserV2):
            return UserV2(username=user.username, balance=user.balance)

        else:
            return UserV1(username=user.username)

class UserDetailsResource(TypedResource):

    def on_get(self, request, response, user_id: int) -> Optional[Union[UserV2, UserV1]]:
        if user_id == 2:
            return UserV2(username='user', balance=0.0)

        if user_id == 1:
            return UserV1(username='user')

        return None

API = TypedAPI()
API.add_route('/users', UserResource())
API.add_route('/users/{user_id}', UserDetailsResource())

How to install

pip install falcontyping

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

falcontyping-0.7.0.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

falcontyping-0.7.0-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

Details for the file falcontyping-0.7.0.tar.gz.

File metadata

  • Download URL: falcontyping-0.7.0.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for falcontyping-0.7.0.tar.gz
Algorithm Hash digest
SHA256 ae81c0b3f67651dabefff99e3e438d433a383480c5b0051190aa19be4e201212
MD5 312e31c3383adf72a0b5b470b718488b
BLAKE2b-256 0fe47e394d243b3f64bc836a4f43c8bab25fb3a37765cc68fc6901a322391446

See more details on using hashes here.

File details

Details for the file falcontyping-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: falcontyping-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 16.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for falcontyping-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 152b7794e2091e5560a0b4db4957af17ec9610dd6c96a8698cdd3e75248f4154
MD5 0ba6d6439e4252d53b60472c50450da4
BLAKE2b-256 f3541e9b8fc69928b227342ace7cee703b2f9ee5a866edb00f5d5a7c7d37b198

See more details on using hashes here.

Supported by

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