A Python client for OpenAPI specifications using httpx
Project description
OpenAPI Client for Python
A Python implementation inspired by openapi-client-axios that provides a dynamic client for OpenAPI specifications. This implementation uses httpx for HTTP requests and Python's metaprogramming capabilities to dynamically generate a client with an API design similar to httpx.
Installation
pip install openapi-httpx-client
Usage
The client supports both synchronous and asynchronous usage patterns through a familiar context manager interface.
Asynchronous Usage
from openapiclient import OpenAPIClient
import asyncio
async def main():
# Initialize the API factory with the OpenAPI definition
api = OpenAPIClient(definition="https://petstore3.swagger.io/api/v3/openapi.json")
# Use the async client with context manager
async with api.AsyncClient() as client:
# Show available operations
print("Operations:", client.operations)
print("Available functions:", client.functions)
# Call operations directly as methods
pet = await client.getPetById(petId=1)
print(f"Status: {pet['status']}")
print(f"Pet data: {pet['data']}")
# Alternative way to call methods
pet = await client("getPetById", petId=2)
print(f"Another pet: {pet['data']}")
# Access AI tools definition for integration with LLMs
print(f"AI tools: {client.tools}")
if __name__ == "__main__":
asyncio.run(main())
Synchronous Usage
from openapiclient import OpenAPIClient
# Initialize the API factory
api = OpenAPIClient(definition="https://petstore3.swagger.io/api/v3/openapi.json")
# Use the synchronous client with context manager
with api.Client() as client:
# Show available operations
print("Operations:", client.operations)
# Call operations directly
pet = client.getPetById(petId=1)
print(f"Pet name: {pet['data'].get('name')}")
# Call operations using dictionary-like access
store_inventory = client["getInventory"]()
print(f"Store inventory: {store_inventory['data']}")
Advanced Options
You can pass any httpx client options when creating a client:
# With timeout and custom headers
with api.Client(timeout=30, headers={"API-Key": "your-api-key"}) as client:
result = client.someOperation()
# With proxy configuration
async with api.AsyncClient(proxies="http://localhost:8080") as client:
result = await client.someOperation()
Features
- Intuitive API design similar to httpx with context managers
- Support for both synchronous and asynchronous operations
- Dynamic client generation using Python metaprogramming
- Compatible with OpenAPI 3.0 and 3.1 specifications
- Support for loading specifications from URL, file, or dictionary (JSON/YAML)
- Response format similar to axios (data, status, headers, config)
- AI tools generation for integration with LLMs and AI assistants
Client Properties
Each client instance provides these properties:
operations: List of all available operation IDspaths: List of API paths defined in the specificationfunctions: Dictionary of all operation methods mapped by nametools: List of AI function calling definitions for LLM integration
Response Format
All API responses are returned in a dictionary format with the following keys:
data: The parsed response body (JSON or text)status: HTTP status codeheaders: Response headersconfig: Original request configuration
Author
lloydzhou
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file openapi-httpx-client-0.4.0.tar.gz.
File metadata
- Download URL: openapi-httpx-client-0.4.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6468424fda0791d5567b045162b9ff636fc771c7c1259bed72f373c7a04655bf
|
|
| MD5 |
12437e5cdc5265c11b5b42cc955c7dcc
|
|
| BLAKE2b-256 |
d833e24cd107191c3aec5e8cc12957e6ad18a7f32bedcef2591d90ce846e5a45
|
File details
Details for the file openapi_httpx_client-0.4.0-py3-none-any.whl.
File metadata
- Download URL: openapi_httpx_client-0.4.0-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abf47c550a5d81db1888464df0d6df61270ba691730d2739b0bd4c1e38e76226
|
|
| MD5 |
9c9808ae07dc73a1f5be06b05ab40540
|
|
| BLAKE2b-256 |
b7c1fd3ff95ffbd49b959f4fc956b461996f6ffaaf597cc2ca19b98e62d9063b
|