Add type hints support to Falcon with Pydantic and Marshmallow integration
Project description
Falcon typing
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 UserResource(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:
return UserV2(username='user', balance=0.0)
if user_id == 0:
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
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
falcontyping-0.3.2.tar.gz
(8.9 kB
view hashes)
Built Distribution
Close
Hashes for falcontyping-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22fdaae779fa5b0a0cc9b5c9ff229c051012f841270d81a0c3a93552aef51fc1 |
|
MD5 | 3c02313fb52e26714a9b0ff4d0a869e5 |
|
BLAKE2b-256 | adc30a9186f63b1933b17fc10169a68c2af4444c8a9d1e07f673088686190a69 |