Skip to content

Commit 48a2ac6

Browse files
committed
Bug fix for nullable date/datetime properties
1 parent 9203aff commit 48a2ac6

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

end_to_end_tests/golden-record-custom/custom_e2e/models/a_model.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class AModel:
1717
a_camel_date_time: Union[datetime.datetime, datetime.date]
1818
a_date: datetime.date
1919
required_not_nullable: str
20+
a_nullable_date: Optional[datetime.date]
2021
required_nullable: Optional[str]
2122
nested_list_of_enums: Union[Unset, List[List[DifferentEnum]]] = UNSET
2223
attr_1_leading_digit: Union[Unset, str] = UNSET
@@ -47,6 +48,8 @@ def to_dict(self) -> Dict[str, Any]:
4748

4849
nested_list_of_enums.append(nested_list_of_enums_item)
4950

51+
a_nullable_date = self.a_nullable_date.isoformat() if self.a_nullable_date else None
52+
5053
attr_1_leading_digit = self.attr_1_leading_digit
5154
required_nullable = self.required_nullable
5255
not_required_nullable = self.not_required_nullable
@@ -59,6 +62,7 @@ def to_dict(self) -> Dict[str, Any]:
5962
"aCamelDateTime": a_camel_date_time,
6063
"a_date": a_date,
6164
"required_not_nullable": required_not_nullable,
65+
"a_nullable_date": a_nullable_date,
6266
"required_nullable": required_nullable,
6367
}
6468
)
@@ -109,6 +113,9 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
109113

110114
nested_list_of_enums.append(nested_list_of_enums_item)
111115

116+
a_nullable_date = d.pop("a_nullable_date")
117+
a_nullable_date = isoparse(a_nullable_date).date() if a_nullable_date else None
118+
112119
attr_1_leading_digit = d.pop("1_leading_digit", UNSET)
113120

114121
required_nullable = d.pop("required_nullable")
@@ -123,6 +130,7 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
123130
a_date=a_date,
124131
required_not_nullable=required_not_nullable,
125132
nested_list_of_enums=nested_list_of_enums,
133+
a_nullable_date=a_nullable_date,
126134
attr_1_leading_digit=attr_1_leading_digit,
127135
required_nullable=required_nullable,
128136
not_required_nullable=not_required_nullable,

end_to_end_tests/golden-record/my_test_api_client/models/a_model.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class AModel:
1717
a_camel_date_time: Union[datetime.datetime, datetime.date]
1818
a_date: datetime.date
1919
required_not_nullable: str
20+
a_nullable_date: Optional[datetime.date]
2021
required_nullable: Optional[str]
2122
nested_list_of_enums: Union[Unset, List[List[DifferentEnum]]] = UNSET
2223
attr_1_leading_digit: Union[Unset, str] = UNSET
@@ -47,6 +48,8 @@ def to_dict(self) -> Dict[str, Any]:
4748

4849
nested_list_of_enums.append(nested_list_of_enums_item)
4950

51+
a_nullable_date = self.a_nullable_date.isoformat() if self.a_nullable_date else None
52+
5053
attr_1_leading_digit = self.attr_1_leading_digit
5154
required_nullable = self.required_nullable
5255
not_required_nullable = self.not_required_nullable
@@ -59,6 +62,7 @@ def to_dict(self) -> Dict[str, Any]:
5962
"aCamelDateTime": a_camel_date_time,
6063
"a_date": a_date,
6164
"required_not_nullable": required_not_nullable,
65+
"a_nullable_date": a_nullable_date,
6266
"required_nullable": required_nullable,
6367
}
6468
)
@@ -109,6 +113,9 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
109113

110114
nested_list_of_enums.append(nested_list_of_enums_item)
111115

116+
a_nullable_date = d.pop("a_nullable_date")
117+
a_nullable_date = isoparse(a_nullable_date).date() if a_nullable_date else None
118+
112119
attr_1_leading_digit = d.pop("1_leading_digit", UNSET)
113120

114121
required_nullable = d.pop("required_nullable")
@@ -123,6 +130,7 @@ def _parse_a_camel_date_time(data: Any) -> Union[datetime.datetime, datetime.dat
123130
a_date=a_date,
124131
required_not_nullable=required_not_nullable,
125132
nested_list_of_enums=nested_list_of_enums,
133+
a_nullable_date=a_nullable_date,
126134
attr_1_leading_digit=attr_1_leading_digit,
127135
required_nullable=required_nullable,
128136
not_required_nullable=not_required_nullable,

openapi_python_client/templates/property_templates/date_property.pyi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{% macro construct(property, source, initial_value="None") %}
22
{% if property.required %}
3+
{% if property.nullable %}
4+
{{ property.python_name }} = {{ source }}
5+
{{ property.python_name }} = isoparse({{ property.python_name }}).date() if {{ property.python_name }} else None
6+
{% else %}
37
{{ property.python_name }} = isoparse({{ source }}).date()
8+
{% endif %}
49
{% else %}
510
{{ property.python_name }} = {{ initial_value }}
611
_{{ property.python_name }} = {{ source }}

openapi_python_client/templates/property_templates/datetime_property.pyi

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
{% macro construct(property, source, initial_value="None") %}
22
{% if property.required %}
3+
{% if property.nullable %}
4+
{{ property.python_name }} = {{ source }}
5+
{{ property.python_name }} = isoparse({{ property.python_name }}) if {{ property.python_name }} else None
6+
{% else %}
37
{{ property.python_name }} = isoparse({{ source }})
8+
{% endif %}
49
{% else %}
510
{{ property.python_name }} = {{ initial_value }}
611
_{{ property.python_name }} = {{ source }}

0 commit comments

Comments
 (0)