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.

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.0: PR for < 3.0 support are welcome

Using the generator

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.1.6.tar.gz (10.5 kB view hashes)

Uploaded Source

Built Distribution

python_client_generator-1.1.6-py3-none-any.whl (14.4 kB view hashes)

Uploaded Python 3

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