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 typing import List

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

This version

3.0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

combadge-3.0.1.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

combadge-3.0.1-py3-none-any.whl (36.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: combadge-3.0.1.tar.gz
  • Upload date:
  • Size: 23.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.12 Linux/6.2.0-1015-azure

File hashes

Hashes for combadge-3.0.1.tar.gz
Algorithm Hash digest
SHA256 0a8b126b20fe1c9d018268a9dea0793911c07e89ba05d831cd444995ea43863c
MD5 2ee6cd716e9bf20480125ba992764e21
BLAKE2b-256 29df54d55d1343ed354017327bc87de4bacf29a2420d5033b0066d6b1e11ecd4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: combadge-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 36.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.12 Linux/6.2.0-1015-azure

File hashes

Hashes for combadge-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 56ce980f5cfac275d19ae1297e1a1b6121e7280c903ddb30db2762246b9a7739
MD5 cf221d3f887a06ca71e4c483c26df284
BLAKE2b-256 692013fa14c0e629a00bfb1c5a9d7a4377bade0eb3c81d9e2dbc80b7d7318e1e

See more details on using hashes here.

Supported by

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