Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/openapi_python_generator/generate_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,10 @@ def write_data(
# Write the api_config.py file.
write_code(Path(output) / "api_config.py", data.api_config.content, formatter)

# Write static files (if any).
for static_file in data.static_files:
write_code(Path(output) / f"{static_file.file_name}.py", static_file.content, formatter)

# Write the __init__.py file.
write_code(
Path(output) / "__init__.py",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
from openapi_python_generator.language_converters.python.service_generator import (
generate_services,
)
from openapi_python_generator.language_converters.python.static_file_generator import (
generate_static_files,
)
from openapi_python_generator.models import ConversionResult, LibraryConfig

# Type alias for both OpenAPI versions
Expand Down Expand Up @@ -46,9 +49,11 @@ def generator(
services = []

api_config = generate_api_config(data, env_token_name, pydantic_version)
static_files = generate_static_files()

return ConversionResult(
models=models,
services=services,
api_config=api_config,
static_files=static_files,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
"""Generator for static files that are copied to the generated client."""
from typing import List

from ...models import StaticFile


def generate_static_files() -> List[StaticFile]:
"""
Generate static files that will be copied to the generated client.

Returns:
List of StaticFile objects containing file names and content.
"""
return []
6 changes: 6 additions & 0 deletions src/openapi_python_generator/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,13 @@ class APIConfig(BaseModel):
content: str


class StaticFile(BaseModel):
file_name: str
content: str


class ConversionResult(BaseModel):
models: List[Model]
services: List[Service]
api_config: APIConfig
static_files: List[StaticFile] = []
72 changes: 72 additions & 0 deletions tests/test_static_files.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
"""Test static file generation and inclusion."""
import tempfile
from pathlib import Path

from openapi_python_generator.common import Formatter
from openapi_python_generator.generate_data import write_data
from openapi_python_generator.models import ConversionResult, APIConfig, StaticFile


def test_static_files_are_written():
"""Test that static files are written to the output directory."""
# Create a minimal ConversionResult with static files
result = ConversionResult(
models=[],
services=[],
api_config=APIConfig(
file_name="api_config",
base_url="https://api.example.com",
content='class APIConfig:\n pass\n',
),
static_files=[
StaticFile(
file_name="errors",
content='"""Error types."""\nclass APIError(Exception):\n pass\n',
),
StaticFile(
file_name="response",
content='"""Response wrapper."""\nclass DetailedResponse:\n pass\n',
),
],
)

# Write to temp directory
with tempfile.TemporaryDirectory() as tmpdir:
output_path = Path(tmpdir) / "generated"
write_data(result, output_path, Formatter.NONE)

# Verify static files were created
assert (output_path / "errors.py").exists()
assert (output_path / "response.py").exists()

# Verify content
errors_content = (output_path / "errors.py").read_text()
assert "class APIError" in errors_content

response_content = (output_path / "response.py").read_text()
assert "class DetailedResponse" in response_content


def test_empty_static_files():
"""Test that empty static files list doesn't cause issues."""
result = ConversionResult(
models=[],
services=[],
api_config=APIConfig(
file_name="api_config",
base_url="https://api.example.com",
content='class APIConfig:\n pass\n',
),
static_files=[], # Empty list
)

# Write to temp directory
with tempfile.TemporaryDirectory() as tmpdir:
output_path = Path(tmpdir) / "generated"
write_data(result, output_path, Formatter.NONE)

# Verify basic structure still created
assert (output_path / "api_config.py").exists()
assert (output_path / "__init__.py").exists()
assert (output_path / "models").is_dir()
assert (output_path / "services").is_dir()
Loading