Skip to main content

Generic API client based on Pydantic

Project description

Combadge

Combadge generates a service client implementation from a user service interface declared by a protocol class or an abstract base class.

Checks Coverage Code style Python Version License

Documentation

Documentation

Sneak peek

from httpx import Client
from pydantic import BaseModel, Field
from typing_extensions import Annotated, Protocol

from combadge.support.http.markers import QueryParam, http_method, path
from combadge.support.httpx.backends.sync import HttpxBackend


# 1️⃣ Declare the response models:
class CurrentCondition(BaseModel):
    humidity: int
    temperature: Annotated[float, Field(alias="temp_C")]


class Weather(BaseModel):
    current: Annotated[list[CurrentCondition], Field(alias="current_condition")]


# 2️⃣ Declare the protocol:
class SupportsWttrIn(Protocol):
    @http_method("GET")
    @path("/{in_}")
    def get_weather(
        self,
        *,
        in_: str,
        format_: Annotated[str, QueryParam("format")] = "j1",
    ) -> Weather:
        raise NotImplementedError


# 3️⃣ Bind the service:
with HttpxBackend(Client(base_url="https://wttr.in"))[SupportsWttrIn] as service:
    # 🚀 Call the service:
    response = service.get_weather(in_="amsterdam")

assert response.current[0].humidity == 71
assert response.current[0].temperature == 8.0

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

combadge-4.7.0.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

combadge-4.7.0-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file combadge-4.7.0.tar.gz.

File metadata

  • Download URL: combadge-4.7.0.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for combadge-4.7.0.tar.gz
Algorithm Hash digest
SHA256 b589b7e645cadb8592b726db66528a6d3a70e4ce3587ba106c5f519ef3eb4b76
MD5 986bdd8202f623b8e67fb9c6320bff3c
BLAKE2b-256 f2bdf5408f545d46cb8eb21c4d020d74a28125206f3a882038eec5a7ab2eb6e2

See more details on using hashes here.

File details

Details for the file combadge-4.7.0-py3-none-any.whl.

File metadata

  • Download URL: combadge-4.7.0-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.10.12 Linux/6.5.0-1025-azure

File hashes

Hashes for combadge-4.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 568e66186c0c4aead4608a6e74a7051f63b50155481d8fca5a791de75afe0e97
MD5 f1b9f224c511a880c44f5424975aba15
BLAKE2b-256 41c91cd04c36d7da3eec7bcacb48bcea45fc74651a7a44a8a348f8a44cba395b

See more details on using hashes here.

Supported by

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