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
⚠️ Currently does not support OpenAPI 2.0: PR for < 3.0 support are welcome
python -m python_client_generator --open-api openapi.json --package-name foo_bar --project-name foo-bar --outdir clientsThis will produce a Python package with the following structure:
clients
├── foo_bar
│ ├── __init__.py
│ ├── apis.py
│ ├── base_client.py
│ └── models.py
└── pyproject.tomlWhen 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}
)Please refer to CONTRIBUTING.md.