Skip to content

Commit 11a561b

Browse files
committed
fix: Template logic for tracking ifs in unions
1 parent 35a54ef commit 11a561b

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

openapi_python_client/templates/property_templates/union_property.py.jinja

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,26 @@ def _parse_{{ property.python_name }}(data: object) -> {{ property.get_type_stri
4040
{% endmacro %}
4141

4242
{% macro transform(property, source, destination, declare_type=True, multipart=False) %}
43+
{% set ns = namespace(contains_properties_without_transform = false, contains_modified_properties = not property.required, has_if = false) %}
4344
{% if not property.required or property.nullable %}
4445
{{ destination }}{% if declare_type %}: {{ property.get_type_string(json=True) }}{% endif %}
4546

4647
{% if not property.required %}
4748
if isinstance({{ source }}, Unset):
4849
{{ destination }} = UNSET
50+
{% set ns.has_if = true %}
4951
{% endif %}
5052
{% endif %}
5153
{% if property.nullable %}
52-
{% if property.required %}
53-
if {{ source }} is None:
54-
{% else %}{# There's an if UNSET statement before this #}
54+
{% if ns.has_if %}
5555
elif {{ source }} is None:
56+
{% else %}
57+
if {{ source }} is None:
58+
{% set ns.has_if = true %}
5659
{% endif %}
5760
{{ destination }} = None
5861
{% endif %}
5962

60-
{% set ns = namespace(contains_properties_without_transform = false, contains_modified_properties = not property.required) %}
6163
{% for inner_property in property.inner_properties %}
6264
{% import "property_templates/" + inner_property.template as inner_template %}
6365
{% if not inner_template.transform %}
@@ -66,12 +68,11 @@ elif {{ source }} is None:
6668
{% else %}
6769
{% set ns.contains_modified_properties = true %}
6870
{% endif %}
69-
{% set has_first_clause = false %}
70-
{% if loop.first and property.required and not property.nullable %}{# No if UNSET or if None statement before this #}
71+
{% if not ns.has_if %}
7172
if isinstance({{ source }}, {{ inner_property.get_instance_type_string() }}):
72-
{% set has_first_clause = true %}
73+
{% set ns.has_if = true %}
7374
{% elif not loop.last or ns.contains_properties_without_transform %}
74-
{% if not has_first_clause %}if{% else %}elif{% endif %} isinstance({{ source }}, {{ inner_property.get_instance_type_string() }}):
75+
elif isinstance({{ source }}, {{ inner_property.get_instance_type_string() }}):
7576
{% set has_first_clause = true %}
7677
{% else %}
7778
else:

0 commit comments

Comments
 (0)