Skip to content

Commit e42e694

Browse files
committed
If an API endpoint returns None, don't emit a return statement
In particular, for server responses such as 204 No Content, json() must not be called because it would fail.
1 parent 45462da commit e42e694

File tree

3 files changed

+6
-0
lines changed

3 files changed

+6
-0
lines changed

src/openapi_python_generator/language_converters/python/templates/aiohttp.jinja2

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ async def {{ operation_id }}({{ params }}) -> {% if return_type.type is none or
2424
raise HTTPException(inital_response.status, f'{{ operationId }} failed with status code: {inital_response.status}')
2525
response = await inital_response.json()
2626

27+
{% if return_type.type is not none and return_type.type.converted_type is not none %}
2728
{% if return_type.complex_type %}
2829
{% if return_type.list_type is none %}
2930
return {{ return_type.type.converted_type }}(**response.json()) if response.json() is not None else {{ return_type.type.converted_type }}()
@@ -33,3 +34,4 @@ async def {{ operation_id }}({{ params }}) -> {% if return_type.type is none or
3334
{% else %}
3435
return response.json()
3536
{% endif %}
37+
{% endif %}

src/openapi_python_generator/language_converters/python/templates/httpx.jinja2

+2
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ with httpx.Client(base_url=base_path, verify=APIConfig.verify) as client:
3636

3737
if response.status_code != {{ return_type.status_code }}:
3838
raise HTTPException(response.status_code, f'{{ operationId }} failed with status code: {response.status_code}')
39+
{% if return_type.type is not none and return_type.type.converted_type is not none %}
3940
{% if return_type.complex_type %}
4041
{% if return_type.list_type is none %}
4142
return {{ return_type.type.converted_type }}(**response.json()) if response.json() is not None else {{ return_type.type.converted_type }}()
@@ -45,3 +46,4 @@ with httpx.Client(base_url=base_path, verify=APIConfig.verify) as client:
4546
{% else %}
4647
return response.json()
4748
{% endif %}
49+
{% endif %}

src/openapi_python_generator/language_converters/python/templates/requests.jinja2

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def {{ operation_id }}({{ params }}) -> {% if return_type.type is none or return
3030
)
3131
if response.status_code != {{ return_type.status_code }}:
3232
raise HTTPException(response.status_code, f'{{ operationId }} failed with status code: {response.status_code}')
33+
{% if return_type.type is not none and return_type.type.converted_type is not none %}
3334
{% if return_type.complex_type %}
3435
{% if return_type.list_type is none %}
3536
return {{ return_type.type.converted_type }}(**response.json()) if response.json() is not None else {{ return_type.type.converted_type }}()
@@ -39,3 +40,4 @@ def {{ operation_id }}({{ params }}) -> {% if return_type.type is none or return
3940
{% else %}
4041
return response.json()
4142
{% endif %}
43+
{% endif %}

0 commit comments

Comments
 (0)