Skip to main content

alt-stack-openapi-pydantic

Generate Python 3.11+ Pydantic 2 models, statically typed Request/Response route maps, and an asyncio HttpxApiClient from OpenAPI JSON. This is the Python counterpart of @alt-stack/zod-openapi; the generated client runs on alt-stack-http-client-httpx.

Install

python -m pip install alt-stack-openapi-pydantic

Consumers of a generated SDK install the runtime package instead:

python -m pip install alt-stack-http-client-httpx

Generate

alt-stack-openapi-pydantic ./openapi.json --output ./generated_types.py

input may be a local JSON path or HTTP(S) URL. Use --registry to execute custom type mappings and --include to insert imports/definitions into output.

from generated_types import User

user = User.model_validate({"id": "u_1", "name": "Ada"})

The CLI enables route generation and emits Request/Response dictionaries whose leaves are Pydantic model classes. The dictionaries carry generated TypedDict annotations, so type checkers resolve literal lookups to the exact model and reject unknown paths, methods, request parts, and status codes:

from generated_types import Request, Response

Request["/users"]["POST"]["body"]          # type[CreateUserBody]
Response["/users/{id}"]["GET"]["200"]      # type[User]
Response["/users/{id}"]["GET"]["999"]      # static error: unknown status

Generated modules also include an asyncio HttpxApiClient with one typed method per route, built on alt_stack_http_client_httpx:

from alt_stack_http_client_httpx import ApiSuccess

from generated_types import GetUsersIdParams, HttpxApiClient, Request, Response

async with HttpxApiClient(
    "https://api.example.com", request_map=Request, response_map=Response
) as client:
    result = await client.get("/users/{id}", params=GetUsersIdParams(id="u_1"))

if isinstance(result, ApiSuccess):
    result.body  # User; unknown paths, missing params, and wrong models are static errors

Generated modules that use non-object intersections inline a small all_of validator, so they depend only on pydantic and alt-stack-http-client-httpx at runtime.

Development

uv run --project packages/python-pydantic-openapi --extra dev pytest packages/python-pydantic-openapi/tests
uv run --project packages/python-pydantic-openapi --extra dev ruff check packages/python-pydantic-openapi
uv run --project packages/python-pydantic-openapi --extra dev ty check packages/python-pydantic-openapi

Documentation

Metadata

Release files for alt-stack-openapi-pydantic 1.6.4

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

Source distribution (sdist)

Source distribution for alt-stack-openapi-pydantic 1.6.4
File Size Uploaded
alt_stack_openapi_pydantic-1.6.4.tar.gz 36.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for alt-stack-openapi-pydantic 1.6.4
File Interpreter ABI Platform
alt_stack_openapi_pydantic-1.6.4-py3-none-any.whl Python 3 none any Details

Total release size: 64.2 kB

Release files / alt_stack_openapi_pydantic-1.6.4.tar.gz

Download URL alt_stack_openapi_pydantic-1.6.4.tar.gz
Size 36.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0b5f18c0dffc3a45061d72f38c3bcddc245cfb5de625c240528699d767f0becf
BLAKE2b-256 checksum
How to use checksums
3668c166ee1f40e664787e48bd34ea28d11cd111011fd4bc35a196dedcd602d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release files / alt_stack_openapi_pydantic-1.6.4-py3-none-any.whl

Download URL alt_stack_openapi_pydantic-1.6.4-py3-none-any.whl
Size 27.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f44788c58522031006a0bd58d3ddf5e5002777a8f3b8032c8aca97dce3be3da
BLAKE2b-256 checksum
How to use checksums
ada0cab1584bcdf7883f6145c0ef6410db2b0fcc2fc27eb4e0e580f022400c6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.

Transparency log

Release history Release notifications | RSS feed

1.7.1

2 release files

1.7.0

2 release files

This release

1.6.4 This release

2 release files

1.6.3

2 release files

1.6.2

2 release files

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