Skip to main content

An SDK for parsing OpenAPI (Swagger) 2.0 - 3.0 specifications

Project description

oapi

test distribute

oapi is a library and CLI for authoring python data models (for clients or servers), and/or client libraries, for web APIs, based on an OpenAPI specification (both OpenAPI/Swagger version 2 and version 3 are supported).

oapi-generated packages/modules differ from those generated by other tools (including but not limited to swagger-codegen) in that oapi generates a data model which enforces the schemas defined in the OpenAPI specification. This means that request and response objects cannot comprise data types which differ from those specified in the spec, and objects cannot have properties which are not defined. If an API will add properties to an object which are not explicitly defined in the schema properties, that object should have an "additionalProperties" attribute, in which case oapi will treat these objects as dictionaries/mappings. oapi also fully supports polymorphism when a schema has an "anyOf", "allOf", or "oneOf" attribute (although oapi does not require a discriminator to be defined). This design decision could prove to be an annoyance to lazy developers of client applications, since inaccurate OpenAPI schemas are endemic to many organizations. The author of this library, however, asserts that end-to-end data validation is absolutely essential for applications which are part of a critical data pipeline. The author of this library is also of the opinion that when encountering inaccurate OpenAPI specifications, you should fix the spec, and if you are not the owner of the spec (and can't convince the owner to fix it), you should script your fix in order to apply that same fix to future versions of the specification.

Notable features of an oapi generated client/model library include:

  • oapi generated data models and clients are fully type-hinted (they will pass inspection by mypy).
  • oapi generated data models and clients adhere to PEP-8 formatting standards, and will pass inspection by flake8 (with the default options).
  • oapi generated data models and clients include docstrings for all models, model properties, client methods, and client method parameters, inferred from "description" and "summary" attributes of elements within the specification.
  • oapi generated clients will handle the most common server-to-server authentication methods out-of-box, including the OAuth2 authorization code flow (client_id/client_secret), API keys, bearer tokens, HTTP basic auth, and most cookie-based authentication patterns. Custom authentication methods are also easily accomplished by specifying custom base classes and/or passing initialization decorators to the oapi client shell command or to the oapi.client.create() function.
  • oapi generated clients and models are easily updated. For instance: oapi generated data model classes can be renamed using your favorite IDE's refactoring tools, and subsequent updates to that data model (such as to reflect minor-version updates to the spec which add endpoints, schemas, parameters, etc.) will retain your new class names, so long as the schema from which the class was generated remains in the same location within the spec. Class naming can also be customized by passing a custom hook to the get_class_name_from_pointer parameter for oapi.model.Module or oapi.model.create.

TODO: Finish README.md

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

oapi-1.62.4.tar.gz (63.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oapi-1.62.4-py3-none-any.whl (63.1 kB view details)

Uploaded Python 3

File details

Details for the file oapi-1.62.4.tar.gz.

File metadata

  • Download URL: oapi-1.62.4.tar.gz
  • Upload date:
  • Size: 63.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for oapi-1.62.4.tar.gz
Algorithm Hash digest
SHA256 18313faa9da9d3babc8e2d7130592959b1c55ac1dd7a6cb1d63242562b05ebe5
MD5 0910cac02f35277f4872e9d4d5ee19c8
BLAKE2b-256 12083d762f0f2865fbff5932658538ae7e1b1adc12510a4522574c97d0915ce8

See more details on using hashes here.

File details

Details for the file oapi-1.62.4-py3-none-any.whl.

File metadata

  • Download URL: oapi-1.62.4-py3-none-any.whl
  • Upload date:
  • Size: 63.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for oapi-1.62.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9df8c35a4439102df11dd4a39b5c22d823efc43da51cdd7d91d1cab3e4fc942d
MD5 fe21f0087c27c1d1dd5c969a0f2171c8
BLAKE2b-256 39f1d424f2256cafeb19dd1ee88fadec52094c87c70da1c418cd5e6a56052f4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page