Skip to main content

Test

openapi-specgen

Openapi-Specgen helps you generate OpenApi specification from your python code.

Includes support for automatically generating OpenApi schemas for Dataclasses and Marshamllow Schemas.

Installation

Install using pip

pip install openapi-specgen

Quick Start

Define your objects using dataclasses or marshmallow schemas. Import the required OpenApi classes and define your Api with it`s paths, params and responses.

from typing import List
from dataclasses import dataclass

@dataclass
class DataclassObject():
    str_field: str
    int_field: int
    float_field: float
    boolean_field: bool
    list_field: List[str]

from openapi_specgen import OpenApi, OpenApiParam, OpenApiPath, OpenApiResponse

sample_response = OpenApiResponse('Response description', data_type=DataclassObject)
sample_param = OpenApiParam('param_name', 'query', data_type=str)
sample_path = OpenApiPath('/api_path', 'get', [sample_response], [sample_param])

sample_api = OpenApi('Sample Api', [sample_path, marshmallow_path])

sample_api.as_dict()

Adding custom type resolvers

The following code snippet expands on the quick start example to show you how to add custom resolvers for any other types.

# Create a func with the following signature:
def custom_resolver(openapi_schema_resolver, data_type):
    # Resolver must return None if it cannot resolve the data_type
    if data_type is not CustomType:
        return

    # For simple types the schema can be returned now, e.g
    # return {"type": "string", "format": "byte"}

    # Optionally for objects we can use a reference using the following syntax

    # Register the actual component
    component_name = "CustomType"
    openapi_schema_resolver.add_component(
        component_name,
        {
            "title": component_name,
            "type": "object",
            "required": ["foo"],
            "properties": {
                # use openapi_schema_resolver.get_schema
                # to recursively resolve other schemas
                "foo": openapi_schema_resolver.get_schema(int)
            }
        }
    )

    # Return the reference
    return {'$ref': openapi_schema_resolver.get_component_ref(component_name)}

# Register your func on your OpenApi instance
test_api.add_resolver(custom_resolver)

License

This project is licensed under the MIT License - see the LICENSE file for details

Metadata

Release files for openapi-specgen 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openapi-specgen 1.0.0
File Size Uploaded Provenance Actions
openapi-specgen-1.0.0.tar.gz 8.4 kB Without provenance Details for openapi-specgen-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for openapi-specgen 1.0.0
File Interpreter ABI Platform Actions
openapi_specgen-1.0.0-py3-none-any.whl Python 3 none any Details for openapi_specgen-1.0.0-py3-none-any.whl

Total release size: 18.1 kB

Release files / openapi-specgen-1.0.0.tar.gz

Download URL openapi-specgen-1.0.0.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c5e2ee5ad33b729cc185fae029b7d372d3db24a197ef664f17bea754da02f669
BLAKE2b-256 checksum
How to use checksums
94d8b814e708093602848c0e22193b39a1760dedae47f67624cc8ab78b8e711e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / openapi_specgen-1.0.0-py3-none-any.whl

Download URL openapi_specgen-1.0.0-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
964cc56882fc3dfc0f3c7d417ae3e9e78409506bd0b8656d3e08050f378793c8
BLAKE2b-256 checksum
How to use checksums
2c0af292e27fb8ebc77d264ca17e0d8ec2865973f3d0b4ff6b4bdac83711c37c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Security for openapi-specgen 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page