54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
"""
|
|
# Summary
|
|
|
|
Core logic for generating Python source code from OpenAPI specifications.
|
|
|
|
This module provides reusable utilities for code generation, specifically
|
|
generating Pydantic models and route handler stubs from OpenAPI 3.x schema
|
|
definitions.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
from datamodel_code_generator import (
|
|
InputFileType,
|
|
PythonVersion,
|
|
generate,
|
|
)
|
|
|
|
from .codegen_routes import generate_routes
|
|
|
|
|
|
def generate_models(
|
|
spec_path: Path,
|
|
output_path: Path,
|
|
pydantic_version: int = 2,
|
|
) -> None:
|
|
"""
|
|
Generate Pydantic models from an OpenAPI specification.
|
|
|
|
Args:
|
|
spec_path (Path):
|
|
Path to the OpenAPI specification file (YAML or JSON).
|
|
output_path (Path):
|
|
Path where the generated Python code should be written.
|
|
pydantic_version (int, optional):
|
|
The Pydantic version to target (1 or 2). Defaults to 2.
|
|
|
|
Notes:
|
|
**Reusability:**
|
|
This function is designed to be used by the CLI and can be
|
|
exposed as an MCP tool without modification.
|
|
"""
|
|
generate(
|
|
input_=spec_path,
|
|
input_file_type=InputFileType.OpenAPI,
|
|
output=output_path,
|
|
target_python_version=PythonVersion.PY_310,
|
|
use_schema_description=True,
|
|
use_standard_collections=True,
|
|
use_union_operator=True,
|
|
)
|
|
|
|
|
|
__all__ = ["generate_models", "generate_routes"]
|