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.6.0.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

combadge-4.6.0-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: combadge-4.6.0.tar.gz
  • Upload date:
  • Size: 24.6 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.6.0.tar.gz
Algorithm Hash digest
SHA256 bee1e64d4427fe499327b08756d296ae6ed02043a5a5304829362fbdbac3f8f3
MD5 e80166f425ffd1661a86e4cfaa1a5959
BLAKE2b-256 6cd5dd0a28af7d693002e512ffaac2b2c9787b3e2a84c88e2789cf9ecebd9b2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: combadge-4.6.0-py3-none-any.whl
  • Upload date:
  • Size: 38.2 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7550572c4cb67f5597df8575da96c47404b3001cc50a9373b1181509ffd4662
MD5 321e6b73f5fc2f1a5a7614199509f649
BLAKE2b-256 5e9fc45af6dec7f4c81f945302dab6ee81fd52c30a6113303c385426af1e5967

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