GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — openapi-python-client/openapi_python_client/templates at main · emann/openapi-python-client

Expand file tree

/

templates

/
Copy path

Directory actions

More options

More options

Directory actions

More options

More options

Latest commit

 

History

History
History
 
 
/

templates

/
Copy path

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
property_templates
property_templates
 
 
.gitignore
.gitignore
 
 
README.md
README.md
 
 
client.pyi
client.pyi
 
 
endpoint_macros.pyi
endpoint_macros.pyi
 
 
endpoint_module.pyi
endpoint_module.pyi
 
 
int_enum.pyi
int_enum.pyi
 
 
model.pyi
model.pyi
 
 
models_init.pyi
models_init.pyi
 
 
package_init.pyi
package_init.pyi
 
 
pyproject.toml
pyproject.toml
 
 
str_enum.pyi
str_enum.pyi
 
 
types.py
types.py
 
 

README.md

Outline

{{ project_name }}

{{ description }}

Usage

First, create a client:

from {{ package_name }} import Client

client = Client(base_url="https://api.example.com")

If the endpoints you're going to hit require authentication, use AuthenticatedClient instead:

from {{ package_name }} import AuthenticatedClient

client = AuthenticatedClient(base_url="https://api.example.com", token="SuperSecretToken")

Now call your endpoint and use your models:

from {{ package_name }}.models import MyDataModel
from {{ package_name }}.api.my_tag import get_my_data_model

my_data: MyDataModel = get_my_data_model(client=client)

Or do the same thing with an async version:

from {{ package_name }}.models import MyDataModel
from {{ package_name }}.async_api.my_tag import get_my_data_model

my_data: MyDataModel = await get_my_data_model(client=client)

Things to know:

  1. Every path/method combo becomes a Python function with type annotations.
  2. All path/query params, and bodies become method arguments.
  3. If your endpoint had any tags on it, the first tag will be used as a module name for the function (my_tag above)
  4. Any endpoint which did not have a tag will be in {{ package_name }}.api.default
  5. If the API returns a response code that was not declared in the OpenAPI document, a {{ package_name }}.api.errors.ApiResponseError wil be raised with the response attribute set to the httpx.Response that was received.

Building / publishing this Client

This project uses Poetry to manage dependencies and packaging. Here are the basics:

  1. Update the metadata in pyproject.toml (e.g. authors, version)
  2. If you're using a private repository, configure it with Poetry
    1. poetry config repositories.<your-repository-name> <url-to-your-repository>
    2. poetry config http-basic.<your-repository-name> <username> <password>
  3. Publish the client with poetry publish --build -r <your-repository-name> or, if for public PyPI, just poetry publish --build

If you want to install this client into another project without publishing it (e.g. for development) then:

  1. If that project is using Poetry, you can simply do poetry add <path-to-this-client> from that project
  2. If that project is not using Poetry:
    1. Build a wheel with poetry build -f wheel
    2. Install that wheel from the other project pip install <path-to-wheel>
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.