Skip to content

Commit 630ffe9

Browse files
author
Doug Borg
committed
chore(templates): unify 204 handling and body variable naming across aiohttp/httpx/requests
1 parent 880704b commit 630ffe9

File tree

3 files changed

+17
-21
lines changed

3 files changed

+17
-21
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ async def {{ operation_id }}(api_config_override : Optional[APIConfig] = None{%
3434
if initial_response.status != {{ return_type.status_code }}:
3535
raise HTTPException(initial_response.status, f'{{ operation_id }} failed with status code: {initial_response.status}')
3636
# Only parse JSON when a body is expected (avoid errors on 204 No Content)
37-
response = None if {{ return_type.status_code }} == 204 else await initial_response.json()
37+
body = None if {{ return_type.status_code }} == 204 else await initial_response.json()
3838

3939
{% if return_type.type is none or return_type.type.converted_type is none %}
40-
return None
40+
return None
4141
{% elif return_type.complex_type %}
4242
{%- if return_type.list_type is none %}
43-
return {{ return_type.type.converted_type }}(**response) if response is not None else {{ return_type.type.converted_type }}()
43+
return {{ return_type.type.converted_type }}(**body) if body is not None else {{ return_type.type.converted_type }}()
4444
{%- else %}
45-
return [{{ return_type.list_type }}(**item) for item in response]
45+
return [{{ return_type.list_type }}(**item) for item in body]
4646
{%- endif %}
4747
{% else %}
48-
return response
48+
return body
4949
{% endif %}

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,18 @@ with httpx.Client(base_url=base_path, verify=api_config.verify) as client:
3939

4040
if response.status_code != {{ return_type.status_code }}:
4141
raise HTTPException(response.status_code, f'{{ operation_id }} failed with status code: {response.status_code}')
42-
43-
{% if return_type.status_code == 204 %}
44-
# 204 No Content: return early without attempting to parse body
45-
return None
46-
{% endif %}
42+
else:
43+
{# Conditional body parsing: avoid calling .json() for 204 #}
44+
body = None if {{ return_type.status_code }} == 204 else response.json()
4745

4846
{% if return_type.type is none or return_type.type.converted_type is none %}
4947
return None
5048
{% elif return_type.complex_type %}
5149
{%- if return_type.list_type is none %}
52-
return {{ return_type.type.converted_type }}(**response.json()) if response.json() is not None else {{ return_type.type.converted_type }}()
50+
return {{ return_type.type.converted_type }}(**body) if body is not None else {{ return_type.type.converted_type }}()
5351
{%- else %}
54-
return [{{ return_type.list_type }}(**item) for item in response.json()]
52+
return [{{ return_type.list_type }}(**item) for item in body]
5553
{%- endif %}
5654
{% else %}
57-
return response.json()
55+
return body
5856
{% endif %}

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,18 @@ def {{ operation_id }}(api_config_override : Optional[APIConfig] = None{% if par
3333
)
3434
if response.status_code != {{ return_type.status_code }}:
3535
raise HTTPException(response.status_code, f'{{ operation_id }} failed with status code: {response.status_code}')
36-
37-
{% if return_type.status_code == 204 %}
38-
# 204 No Content: return early without attempting to parse body
39-
return None
40-
{% endif %}
36+
else:
37+
{# Conditional body parsing: avoid calling .json() for 204 #}
38+
body = None if {{ return_type.status_code }} == 204 else response.json()
4139

4240
{% if return_type.type is none or return_type.type.converted_type is none %}
4341
return None
4442
{% elif return_type.complex_type %}
4543
{%- if return_type.list_type is none %}
46-
return {{ return_type.type.converted_type }}(**response.json()) if response.json() is not None else {{ return_type.type.converted_type }}()
44+
return {{ return_type.type.converted_type }}(**body) if body is not None else {{ return_type.type.converted_type }}()
4745
{%- else %}
48-
return [{{ return_type.list_type }}(**item) for item in response.json()]
46+
return [{{ return_type.list_type }}(**item) for item in body]
4947
{%- endif %}
5048
{% else %}
51-
return response.json()
49+
return body
5250
{% endif %}

0 commit comments

Comments
 (0)