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.

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

    app -- "OpenAPI json" --> generator
    generator -- "generates" --> package

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

Install the dependencies with poetry:

poetry install

Format the code:

make format

Test the code locally:

poetry run pytest

Commiting

We use commitlint in the CI/CD to make sure all commit messages adhere to conventionalcommits. See .commitlintrc.js, .releaserc and .czrc.json for specific implementation details.

As per the default commitlint settings for conventionalcommits (see here) the following commit types may be used:

  • build
  • chore
  • ci
  • docs
  • feat
  • fix
  • perf
  • refactor
  • revert
  • style
  • test

Of which the following will cause a release (one of these types must be used if you are submitting code that you expect to be deployed after merging):

  • build
  • ci
  • docs(api)
  • feat
  • fix
  • perf
  • refactor
  • revert

To ensure that your commits always conform to the above format, you can install commitizen:

npm i -g commitizen

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

Uploaded Source

Built Distribution

python_client_generator-1.0.5-py3-none-any.whl (14.2 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