Security News
Bun 1.2 Released with 90% Node.js Compatibility and Built-in S3 Object Support
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
API Client extension for validate and transform requests / responses using pydantic.
pip install api-client-pydantic
The following decorators have been provided to validate request data and converting json straight to pydantic class.
from apiclient_pydantic import serialize, serialize_all_methods
# serialize request and response data
@serialize(config: Optional[ConfigDict] = None, validate_return: bool = True, response: Optional[Type[BaseModel]] = None)
# wraps all local methods of a class with a decorator 'serialize'.
@serialize_all_methods(config: Optional[ConfigDict] = None)
Usage:
Define the schema for your api in pydantic classes.
from pydantic import BaseModel, Field
class Account(BaseModel):
account_number: int = Field(alias='accountNumber')
sort_code: int = Field(alias='sortCode')
date_opened: datetime = Field(alias='dateOpened')
Add the @serialize
decorator to the api client method to transform the response
directly into your defined schema.
@serialize(response=List[Account])
def get_accounts():
...
# or
@serialize
def get_accounts() -> List[Account]:
...
Add the @serialize
decorator to the api client method to translate the incoming kwargs
into the required dict or instance for the endpoint:
from apiclient_pydantic import ModelDumped
@serialize
def create_account(data: AccountHolder):
# data will be AccountHolder instance
...
create_account(data={'last_name' : 'Smith','first_name' : 'John'})
# data will be a AccountHolder(last_name="Smith", first_name="John")
@serialize
def create_account(data: ModelDumped[AccountHolder]):
# data will be exactly a dict
...
create_account(data={'last_name' : 'Smith','first_name' : 'John'})
# data will be a dict {"last_name": "Smith", "first_name": "John"}
For more convenient use, you can wrap all APIClient methods with @serialize_all_methods
.
from apiclient import APIClient
from apiclient_pydantic import serialize_all_methods
from typing import List
from .models import Account, AccountHolder
@serialize_all_methods
class MyApiClient(APIClient):
def decorated_func(self, data: Account) -> Account:
...
def decorated_func_holder(self, data: AccountHolder) -> List[Account]:
...
This code generator creates a ApiClient app from an openapi file.
FAQs
API Client extension for validate and transform requests / responses using pydantic.
We found that api-client-pydantic demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.
Security News
Biden's executive order pushes for AI-driven cybersecurity, software supply chain transparency, and stronger protections for federal and open source systems.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.