%global _empty_manifest_terminate_build 0 Name: python-api-client-pydantic Version: 2.2.1 Release: 1 Summary: API Client extension for validate and transform requests / responses using pydantic. License: MIT URL: https://github.com/mom1/api-client-pydantic Source0: https://mirrors.nju.edu.cn/pypi/web/packages/0c/d0/69967ca4bd5a243f6dfbb9d46db54671e170f97f624905ff925d3d4bc959/api_client_pydantic-2.2.1.tar.gz BuildArch: noarch Requires: python3-api-client Requires: python3-pydantic %description ![GitHub issues](https://img.shields.io/github/issues/mom1/api-client-pydantic.svg) ![GitHub stars](https://img.shields.io/github/stars/mom1/api-client-pydantic.svg) ![GitHub Release Date](https://img.shields.io/github/release-date/mom1/api-client-pydantic.svg) ![GitHub commits since latest release](https://img.shields.io/github/commits-since/mom1/api-client-pydantic/latest.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/mom1/api-client-pydantic.svg) [![GitHub license](https://img.shields.io/github/license/mom1/api-client-pydantic)](https://github.com/mom1/api-client-pydantic/blob/master/LICENSE) [![PyPI](https://img.shields.io/pypi/v/api-client-pydantic.svg)](https://pypi.python.org/pypi/api-client-pydantic) [![PyPI](https://img.shields.io/pypi/pyversions/api-client-pydantic.svg)]() ![PyPI - Downloads](https://img.shields.io/pypi/dm/api-client-pydantic.svg?label=pip%20installs&logo=python) Gitmoji Code style: black # Python API Client Pydantic Extension ## Installation ```bash pip install api-client-pydantic ``` ## Usage The following decorators have been provided to validate request data and converting json straight to pydantic class. ```python from apiclient_pydantic import params_serializer, response_serializer, serialize, serialize_all_methods # serialize incoming kwargs @params_serializer(by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # serialize response in pydantic class @response_serializer(response: Optional[Type[BaseModel]] = None) # serialize request and response data @serialize(response: Optional[Type[BaseModel]] = None, by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # wraps all local methods of a class with a specified decorator. default 'serialize' @serialize_all_methods(decorator=serialize) ``` Usage: 1. Define the schema for your api in pydantic classes. ```python 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') ``` 2. Add the `@response_serializer` decorator to the api client method to transform the response directly into your defined schema. ```python @response_serializer(List[Account]) def get_accounts(): ... # or @response_serializer() def get_accounts() -> List[Account]: ... ``` 3. Add the `@params_serializer` decorator to the api client method to translate the incoming kwargs into the required dict for the endpoint: ```python @params_serializer(AccountHolder) def create_account(data: dict): ... # or @params_serializer() def create_account(data: AccountHolder): # data will be exactly a dict ... create_account(last_name='Smith', first_name='John') # data will be a dict {"last_name": "Smith", "first_name": "John"} ``` 4. `@serialize` - It is a combination of the two decorators `@response_serializer` and`@params_serializer`. 5. For more convenient use, you can wrap all APIClient methods with `@serialize_all_methods`. ```python 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]: ... ``` ## Related projects ### apiclient-pydantic-generator This code generator creates a [ApiClient](https://github.com/MikeWooster/api-client) app from an openapi file. [apiclient-pydantic-generator](https://github.com/mom1/apiclient-pydantic-generator) ## Mentions Many thanks to [JetBrains](https://www.jetbrains.com/?from=api-client-pydantic) for supplying me with a license to use their product in the development of this tool. ![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg) %package -n python3-api-client-pydantic Summary: API Client extension for validate and transform requests / responses using pydantic. Provides: python-api-client-pydantic BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-api-client-pydantic ![GitHub issues](https://img.shields.io/github/issues/mom1/api-client-pydantic.svg) ![GitHub stars](https://img.shields.io/github/stars/mom1/api-client-pydantic.svg) ![GitHub Release Date](https://img.shields.io/github/release-date/mom1/api-client-pydantic.svg) ![GitHub commits since latest release](https://img.shields.io/github/commits-since/mom1/api-client-pydantic/latest.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/mom1/api-client-pydantic.svg) [![GitHub license](https://img.shields.io/github/license/mom1/api-client-pydantic)](https://github.com/mom1/api-client-pydantic/blob/master/LICENSE) [![PyPI](https://img.shields.io/pypi/v/api-client-pydantic.svg)](https://pypi.python.org/pypi/api-client-pydantic) [![PyPI](https://img.shields.io/pypi/pyversions/api-client-pydantic.svg)]() ![PyPI - Downloads](https://img.shields.io/pypi/dm/api-client-pydantic.svg?label=pip%20installs&logo=python) Gitmoji Code style: black # Python API Client Pydantic Extension ## Installation ```bash pip install api-client-pydantic ``` ## Usage The following decorators have been provided to validate request data and converting json straight to pydantic class. ```python from apiclient_pydantic import params_serializer, response_serializer, serialize, serialize_all_methods # serialize incoming kwargs @params_serializer(by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # serialize response in pydantic class @response_serializer(response: Optional[Type[BaseModel]] = None) # serialize request and response data @serialize(response: Optional[Type[BaseModel]] = None, by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # wraps all local methods of a class with a specified decorator. default 'serialize' @serialize_all_methods(decorator=serialize) ``` Usage: 1. Define the schema for your api in pydantic classes. ```python 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') ``` 2. Add the `@response_serializer` decorator to the api client method to transform the response directly into your defined schema. ```python @response_serializer(List[Account]) def get_accounts(): ... # or @response_serializer() def get_accounts() -> List[Account]: ... ``` 3. Add the `@params_serializer` decorator to the api client method to translate the incoming kwargs into the required dict for the endpoint: ```python @params_serializer(AccountHolder) def create_account(data: dict): ... # or @params_serializer() def create_account(data: AccountHolder): # data will be exactly a dict ... create_account(last_name='Smith', first_name='John') # data will be a dict {"last_name": "Smith", "first_name": "John"} ``` 4. `@serialize` - It is a combination of the two decorators `@response_serializer` and`@params_serializer`. 5. For more convenient use, you can wrap all APIClient methods with `@serialize_all_methods`. ```python 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]: ... ``` ## Related projects ### apiclient-pydantic-generator This code generator creates a [ApiClient](https://github.com/MikeWooster/api-client) app from an openapi file. [apiclient-pydantic-generator](https://github.com/mom1/apiclient-pydantic-generator) ## Mentions Many thanks to [JetBrains](https://www.jetbrains.com/?from=api-client-pydantic) for supplying me with a license to use their product in the development of this tool. ![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg) %package help Summary: Development documents and examples for api-client-pydantic Provides: python3-api-client-pydantic-doc %description help ![GitHub issues](https://img.shields.io/github/issues/mom1/api-client-pydantic.svg) ![GitHub stars](https://img.shields.io/github/stars/mom1/api-client-pydantic.svg) ![GitHub Release Date](https://img.shields.io/github/release-date/mom1/api-client-pydantic.svg) ![GitHub commits since latest release](https://img.shields.io/github/commits-since/mom1/api-client-pydantic/latest.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/mom1/api-client-pydantic.svg) [![GitHub license](https://img.shields.io/github/license/mom1/api-client-pydantic)](https://github.com/mom1/api-client-pydantic/blob/master/LICENSE) [![PyPI](https://img.shields.io/pypi/v/api-client-pydantic.svg)](https://pypi.python.org/pypi/api-client-pydantic) [![PyPI](https://img.shields.io/pypi/pyversions/api-client-pydantic.svg)]() ![PyPI - Downloads](https://img.shields.io/pypi/dm/api-client-pydantic.svg?label=pip%20installs&logo=python) Gitmoji Code style: black # Python API Client Pydantic Extension ## Installation ```bash pip install api-client-pydantic ``` ## Usage The following decorators have been provided to validate request data and converting json straight to pydantic class. ```python from apiclient_pydantic import params_serializer, response_serializer, serialize, serialize_all_methods # serialize incoming kwargs @params_serializer(by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # serialize response in pydantic class @response_serializer(response: Optional[Type[BaseModel]] = None) # serialize request and response data @serialize(response: Optional[Type[BaseModel]] = None, by_alias: bool = True, exclude_unset: bool = False, exclude_defaults: bool = False, exclude_none: bool = True) # wraps all local methods of a class with a specified decorator. default 'serialize' @serialize_all_methods(decorator=serialize) ``` Usage: 1. Define the schema for your api in pydantic classes. ```python 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') ``` 2. Add the `@response_serializer` decorator to the api client method to transform the response directly into your defined schema. ```python @response_serializer(List[Account]) def get_accounts(): ... # or @response_serializer() def get_accounts() -> List[Account]: ... ``` 3. Add the `@params_serializer` decorator to the api client method to translate the incoming kwargs into the required dict for the endpoint: ```python @params_serializer(AccountHolder) def create_account(data: dict): ... # or @params_serializer() def create_account(data: AccountHolder): # data will be exactly a dict ... create_account(last_name='Smith', first_name='John') # data will be a dict {"last_name": "Smith", "first_name": "John"} ``` 4. `@serialize` - It is a combination of the two decorators `@response_serializer` and`@params_serializer`. 5. For more convenient use, you can wrap all APIClient methods with `@serialize_all_methods`. ```python 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]: ... ``` ## Related projects ### apiclient-pydantic-generator This code generator creates a [ApiClient](https://github.com/MikeWooster/api-client) app from an openapi file. [apiclient-pydantic-generator](https://github.com/mom1/apiclient-pydantic-generator) ## Mentions Many thanks to [JetBrains](https://www.jetbrains.com/?from=api-client-pydantic) for supplying me with a license to use their product in the development of this tool. ![JetBrains Logo (Main) logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg) %prep %autosetup -n api-client-pydantic-2.2.1 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-api-client-pydantic -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 2.2.1-1 - Package Spec generated