@@ -40,24 +40,26 @@ def _parse_{{ property.python_name }}(data: object) -> {{ property.get_type_stri
40
40
{% endmacro %}
41
41
42
42
{% 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 ) %}
43
44
{% if not property .required or property .nullable %}
44
45
{{ destination }}{% if declare_type %} : {{ property.get_type_string(json=True) }}{% endif %}
45
46
46
47
{% if not property .required %}
47
48
if isinstance({{ source }}, Unset):
48
49
{{ destination }} = UNSET
50
+ {% set ns .has_if = true %}
49
51
{% endif %}
50
52
{% endif %}
51
53
{% 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 %}
55
55
elif {{ source }} is None:
56
+ {% else %}
57
+ if {{ source }} is None:
58
+ {% set ns .has_if = true %}
56
59
{% endif %}
57
60
{{ destination }} = None
58
61
{% endif %}
59
62
60
- {% set ns = namespace (contains_properties_without_transform = false , contains_modified_properties = not property .required ) %}
61
63
{% for inner_property in property .inner_properties %}
62
64
{% import "property_templates/" + inner_property .template as inner_template %}
63
65
{% if not inner_template .transform %}
@@ -66,12 +68,11 @@ elif {{ source }} is None:
66
68
{% else %}
67
69
{% set ns .contains_modified_properties = true %}
68
70
{% 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 %}
71
72
if isinstance({{ source }}, {{ inner_property.get_instance_type_string() }}):
72
- {% set has_first_clause = true %}
73
+ {% set ns . has_if = true %}
73
74
{% 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() }}):
75
76
{% set has_first_clause = true %}
76
77
{% else %}
77
78
else:
0 commit comments