Skip to main content

Python package to generate an httpx-based client off an OpenAPI spec

Project description

python-client-generator

Python package to generate an httpx- and pydantic-based async (or sync) client off an OpenAPI spec >= 3.0 (partial specification support).

flowchart LR
    generator["python-client-generator"]
    app["REST API App"]
    package["App HTTP client"]

    app -- "OpenAPI JSON" --> generator
    generator -- "Generates" --> package

:warning: Currently does not support OpenAPI 2.x (PRs for < 3.0 support are welcome).

:exclamation: Only partial OpenAPI specification support, if you encounter unsupported spec. please feel free to contribute to the project.

Using the generator

Install the package (see on PyPi):

pip install python-client-generator

Run:

python -m python_client_generator --open-api openapi.json --package-name foo_bar --project-name foo-bar --outdir clients

This will produce a Python package with the following structure:

clients
├── foo_bar
│   ├── __init__.py
│   ├── apis.py
│   ├── base_client.py
│   └── models.py
└── pyproject.toml

Using PATCH functions from the generator

When calling one of the generated update functions that uses an HTTP PATCH method, you'll probably want to pass the additional argument body_serializer_args={"exclude_unset": True}. This will ensure that only the fields that are set in the update object are sent to the API. Example:

await api_client.update_contact_v1_contacts__contact_id__patch(
    body=patch_body,
    contact_id=contact.id,
    tenant=tenant,
    body_serializer_args={"exclude_unset": True}
)

Contributing

Please refer to CONTRIBUTING.md.

Project details


Download files

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

Source Distribution

python_client_generator-1.3.1.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

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

python_client_generator-1.3.1-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file python_client_generator-1.3.1.tar.gz.

File metadata

  • Download URL: python_client_generator-1.3.1.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.8.18 Linux/6.11.0-1015-azure

File hashes

Hashes for python_client_generator-1.3.1.tar.gz
Algorithm Hash digest
SHA256 ba7f28b37a0fffab8f58f87e9f0b67cb82c281cbd17ecd2038071548b7fed595
MD5 8541feef0b1cd58cd7199832a3c8095a
BLAKE2b-256 0280f66559cc1d2bb8a8554cb32133e2c1abc95a82137e21ece7a6dbf1c50b75

See more details on using hashes here.

File details

Details for the file python_client_generator-1.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_client_generator-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 451e2430344adebf6ead8fef3447e4893ab9468541470c794ea72965de348870
MD5 e1725aa7e59e95add0f9cac64cc5234b
BLAKE2b-256 cd0058e130693b7c32dd3fc5558c6058073aca892c772367802d1bb4896e64be

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