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
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
Hashes for python-client-generator-1.0.5.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44536cf84561ae405597f864ef935ca0265634b67342bcad44cf07f536fef2ee |
|
MD5 | d9b32865f1eba574b8e96f79bc9f868d |
|
BLAKE2b-256 | 59afa044acb71a79062aefd1c7236a8450663512da48e001d8392d3cbe031f3b |
Hashes for python_client_generator-1.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3da6d8460877a414e64f90ac4763064a73372b385badb06f69ad09bb68bf62a7 |
|
MD5 | 41bf1772461b28385c1afe47b468d631 |
|
BLAKE2b-256 | 59b3577bf830eb93702b38f6c67d8e7cb588e08802e1b61369b546ffffbb01fe |