Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pydantic-client

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pydantic-client

Http client base pydantic, with requests or aiohttp

  • 1.0.5
  • PyPI
  • Socket score

Maintainers
1

pydantic-client

codecov Upload Python Package

Http client base pydantic, with requests, aiohttp and httpx. Only support the json response.

If you like this project, please give me a star.

How to install

only support requests:

pip install pydantic-client

support aiohttp and requests:

pip install "pydantic-client[aiohttp]"

support httpx(async) and requests:

pip install "pydantic-client[httpx]"

support all:

pip install "pydantic-client[all]"

How to use

from pydantic import BaseModel

from pydantic_client import delete, get, post, put, pydantic_client_manager
from pydantic_client import ClientConfig


class Book(BaseModel):
    name: str
    age: int


@pydantic_client_manager.register(
    ClientConfig(
        base_url="https://example.com",
        headers={"Authorization": "Bearer abcdefg"},
        timeout=10
    )
)
class WebClient:

    @get("/books/{book_id}?query={query}")
    def get_book(self, book_id: int, query: str) -> Book:
        ...

    @post("/books", form_body=True)
    def create_book_form(self, book: Book) -> Book:
        """ will post the form with book"""
        ...

    @put("/books/{book_id}")
    def change_book(self, book_id: int, book: Book) -> Book:
        """will put the json body"""
        ...

    @delete("/books/{book_id}")
    def change_book(self, book_id: int, request_headers: dict = None) -> Book:
        ...


client = pydantic_client_manager.get()
# will get the book with book_id=1
book: Book = client.get_book(1)

# request_headers will overwrite the headers in client_config
client.change_book(1, request_headers={"Authorization": "Bearer abcdefg"})

And see the examples.

Change Log

v1.0.3: you can define your own client session in client_config

import aiohttp
from pydantic_client import ClientConfig, ClientType

client_config = ClientConfig(
    client_type=ClientType.aiohttp,
    base_url="https://example.com",
    headers={"Authorization": "Bearer abcdefg"},
    timeout=10,
    session=lambda: aiohttp.ClientSession()
)


v1.0.5: support file response type.

from pydantic_client.schema.file import File
from pydantic_client import post

@post("/download")
def download_file(self) -> File:
    # you will get the bytes content of the file
    ...

FAQs


Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc