From bb96d21991d5d2741bd389e459378e6df806745f Mon Sep 17 00:00:00 2001 From: Jesse Myers Date: Sat, 16 Sep 2023 08:44:30 -0700 Subject: [PATCH 1/4] Convert null to None, not Any --- .../language_converters/python/model_generator.py | 2 +- tests/test_model_generator.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openapi_python_generator/language_converters/python/model_generator.py b/src/openapi_python_generator/language_converters/python/model_generator.py index 3e96946..a27fdbc 100644 --- a/src/openapi_python_generator/language_converters/python/model_generator.py +++ b/src/openapi_python_generator/language_converters/python/model_generator.py @@ -164,7 +164,7 @@ def type_converter( # noqa: C901 elif schema.type == "object": converted_type = pre_type + "Dict[str, Any]" + post_type elif schema.type is None or schema.type == "null": - converted_type = pre_type + "Any" + post_type + converted_type = pre_type + "None" + post_type else: raise TypeError(f"Unknown type: {schema.type}") diff --git a/tests/test_model_generator.py b/tests/test_model_generator.py index b5343e7..3326903 100644 --- a/tests/test_model_generator.py +++ b/tests/test_model_generator.py @@ -66,7 +66,7 @@ ), ( Schema(type="null"), - TypeConversion(original_type="null", converted_type="Any"), + TypeConversion(original_type="null", converted_type="None"), ), ( Schema(type="string", schema_format="uuid"), @@ -160,7 +160,7 @@ def test_type_converter_simple(test_openapi_types, expected_python_types): ), ( Schema(type="null"), - TypeConversion(original_type="null", converted_type="Any"), + TypeConversion(original_type="null", converted_type="None"), ), ( Schema(type="string", schema_format="uuid"), From b1c04aaa1d2acb703c1d0f6ba2c55f090494acd0 Mon Sep 17 00:00:00 2001 From: Jesse Myers Date: Tue, 5 Sep 2023 14:40:45 -0700 Subject: [PATCH 2/4] Use pydantic2 syntax. --- .../language_converters/python/service_generator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openapi_python_generator/language_converters/python/service_generator.py b/src/openapi_python_generator/language_converters/python/service_generator.py index f0dfe50..eb28e0a 100644 --- a/src/openapi_python_generator/language_converters/python/service_generator.py +++ b/src/openapi_python_generator/language_converters/python/service_generator.py @@ -36,7 +36,7 @@ def generate_body_param(operation: Operation) -> Union[str, None]: return None else: if isinstance(operation.requestBody, Reference): - return "data.dict()" + return "data.model_dump()" if operation.requestBody.content is None: return None # pragma: no cover @@ -50,7 +50,7 @@ def generate_body_param(operation: Operation) -> Union[str, None]: return None # pragma: no cover if isinstance(media_type.media_type_schema, Reference): - return "data.dict()" + return "data.model_dump()" elif isinstance(media_type.media_type_schema, Schema): schema = media_type.media_type_schema if schema.type == "array": From 4ee1384b923be060c6ad0d4ae4072b7ee5faa008 Mon Sep 17 00:00:00 2001 From: Jesse Myers Date: Tue, 5 Dec 2023 08:31:59 -0800 Subject: [PATCH 3/4] Avoid using hyphens in enum keys. --- .../language_converters/python/templates/enum.jinja2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openapi_python_generator/language_converters/python/templates/enum.jinja2 b/src/openapi_python_generator/language_converters/python/templates/enum.jinja2 index f88bdd6..bde758e 100644 --- a/src/openapi_python_generator/language_converters/python/templates/enum.jinja2 +++ b/src/openapi_python_generator/language_converters/python/templates/enum.jinja2 @@ -4,6 +4,6 @@ class {{ name }}(str, Enum): {% for enumItem in enum %} {% if enumItem is string %} - {{ enumItem.upper() }} = '{{ enumItem }}'{% else %} + {{ enumItem.upper().replace('-', '_') }} = '{{ enumItem }}'{% else %} value_{{ enumItem }} = {{ enumItem }}{% endif %} {% endfor %} From a51c29c658d99d9e5df8871c06509aa6b3232bb3 Mon Sep 17 00:00:00 2001 From: Jesse Myers Date: Wed, 25 Jun 2025 14:39:41 -0700 Subject: [PATCH 4/4] Reroute HTTP generation through our requests wrapper. - Disable switching between HTTP implementations. - Add relative import to local requests wrapper. --- .../language_converters/python/templates/requests.jinja2 | 2 +- .../language_converters/python/templates/service.jinja2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openapi_python_generator/language_converters/python/templates/requests.jinja2 b/src/openapi_python_generator/language_converters/python/templates/requests.jinja2 index 3aaa5de..63781cb 100644 --- a/src/openapi_python_generator/language_converters/python/templates/requests.jinja2 +++ b/src/openapi_python_generator/language_converters/python/templates/requests.jinja2 @@ -17,7 +17,7 @@ def {{ operation_id }}({{ params }} api_config_override : Optional[APIConfig] = query_params = {key:value for (key,value) in query_params.items() if value is not None} - response = requests.request( + response = request( '{{ method }}', f'{base_path}{path}', headers=headers, diff --git a/src/openapi_python_generator/language_converters/python/templates/service.jinja2 b/src/openapi_python_generator/language_converters/python/templates/service.jinja2 index dab7263..6ee2eda 100644 --- a/src/openapi_python_generator/language_converters/python/templates/service.jinja2 +++ b/src/openapi_python_generator/language_converters/python/templates/service.jinja2 @@ -1,11 +1,11 @@ from typing import * -import {{ library_import }} import json {% if use_orjson %} import orjson {% endif %} from ..models import * +from ..requests import request from ..api_config import APIConfig, HTTPException {{ content | safe}}