Skip to content

Commit 39b9db2

Browse files
sfowldbanty
andauthored
fix: Indent of generated code for non-required lists. Thanks @sfowl! (#1050)
The `_transform` macro is called at three different places in this file, but one location was not similarly indented as the other two. This caused errors in the ruff post_hook like: ``` error: Failed to parse foo/models/foo_request.py:125:9: Expected an indented block after `if` statement ``` The generated code without the indent fix looks like: ``` if not isinstance(self.foo, Unset): _temp_foo = [] # <-- incorrect indent for foo_item_data in self.foo: foo_item: Union[None, int] foo_item = foo_item_data _temp_foo.append(foo_item) foo = (None, json.dumps(_temp_foo).encode(), 'application/json') ``` --------- Co-authored-by: Dylan Anthony <[email protected]>
1 parent 9e6b8c6 commit 39b9db2

File tree

4 files changed

+53
-1
lines changed

4 files changed

+53
-1
lines changed

Diff for: end_to_end_tests/baseline_openapi_3.0.json

+8
Original file line numberDiff line numberDiff line change
@@ -1910,6 +1910,14 @@
19101910
"title": "Some Required Number",
19111911
"type": "number"
19121912
},
1913+
"some_int_array": {
1914+
"title": "Some Integer Array",
1915+
"type": "array",
1916+
"items": {
1917+
"type": "integer",
1918+
"nullable": true
1919+
}
1920+
},
19131921
"some_array": {
19141922
"title": "Some Array",
19151923
"nullable": true,

Diff for: end_to_end_tests/baseline_openapi_3.1.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -1919,6 +1919,13 @@ info:
19191919
"title": "Some Number",
19201920
"type": "number"
19211921
},
1922+
"some_int_array": {
1923+
"title": "Some Integer Array",
1924+
"type": "array",
1925+
"items": {
1926+
"type": ["integer", "null"]
1927+
}
1928+
},
19221929
"some_array": {
19231930
"title": "Some Array",
19241931
"type": [ "array", "null" ],

Diff for: end_to_end_tests/golden-record/my_test_api_client/models/body_upload_file_tests_upload_post.py

+37
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class BodyUploadFileTestsUploadPost:
4141
a_date (Union[Unset, datetime.date]):
4242
some_number (Union[Unset, float]):
4343
some_nullable_number (Union[None, Unset, float]):
44+
some_int_array (Union[Unset, List[Union[None, int]]]):
4445
some_array (Union[List['AFormData'], None, Unset]):
4546
some_optional_object (Union[Unset, BodyUploadFileTestsUploadPostSomeOptionalObject]):
4647
some_enum (Union[Unset, DifferentEnum]): An enumeration.
@@ -56,6 +57,7 @@ class BodyUploadFileTestsUploadPost:
5657
a_date: Union[Unset, datetime.date] = UNSET
5758
some_number: Union[Unset, float] = UNSET
5859
some_nullable_number: Union[None, Unset, float] = UNSET
60+
some_int_array: Union[Unset, List[Union[None, int]]] = UNSET
5961
some_array: Union[List["AFormData"], None, Unset] = UNSET
6062
some_optional_object: Union[Unset, "BodyUploadFileTestsUploadPostSomeOptionalObject"] = UNSET
6163
some_enum: Union[Unset, DifferentEnum] = UNSET
@@ -102,6 +104,14 @@ def to_dict(self) -> Dict[str, Any]:
102104
else:
103105
some_nullable_number = self.some_nullable_number
104106

107+
some_int_array: Union[Unset, List[Union[None, int]]] = UNSET
108+
if not isinstance(self.some_int_array, Unset):
109+
some_int_array = []
110+
for some_int_array_item_data in self.some_int_array:
111+
some_int_array_item: Union[None, int]
112+
some_int_array_item = some_int_array_item_data
113+
some_int_array.append(some_int_array_item)
114+
105115
some_array: Union[List[Dict[str, Any]], None, Unset]
106116
if isinstance(self.some_array, Unset):
107117
some_array = UNSET
@@ -145,6 +155,8 @@ def to_dict(self) -> Dict[str, Any]:
145155
field_dict["some_number"] = some_number
146156
if some_nullable_number is not UNSET:
147157
field_dict["some_nullable_number"] = some_nullable_number
158+
if some_int_array is not UNSET:
159+
field_dict["some_int_array"] = some_int_array
148160
if some_array is not UNSET:
149161
field_dict["some_array"] = some_array
150162
if some_optional_object is not UNSET:
@@ -201,6 +213,15 @@ def to_multipart(self) -> Dict[str, Any]:
201213
else:
202214
some_nullable_number = (None, str(self.some_nullable_number).encode(), "text/plain")
203215

216+
some_int_array: Union[Unset, Tuple[None, bytes, str]] = UNSET
217+
if not isinstance(self.some_int_array, Unset):
218+
_temp_some_int_array = []
219+
for some_int_array_item_data in self.some_int_array:
220+
some_int_array_item: Union[None, int]
221+
some_int_array_item = some_int_array_item_data
222+
_temp_some_int_array.append(some_int_array_item)
223+
some_int_array = (None, json.dumps(_temp_some_int_array).encode(), "application/json")
224+
204225
some_array: Union[Tuple[None, bytes, str], Unset]
205226

206227
if isinstance(self.some_array, Unset):
@@ -245,6 +266,8 @@ def to_multipart(self) -> Dict[str, Any]:
245266
field_dict["some_number"] = some_number
246267
if some_nullable_number is not UNSET:
247268
field_dict["some_nullable_number"] = some_nullable_number
269+
if some_int_array is not UNSET:
270+
field_dict["some_int_array"] = some_int_array
248271
if some_array is not UNSET:
249272
field_dict["some_array"] = some_array
250273
if some_optional_object is not UNSET:
@@ -324,6 +347,19 @@ def _parse_some_nullable_number(data: object) -> Union[None, Unset, float]:
324347

325348
some_nullable_number = _parse_some_nullable_number(d.pop("some_nullable_number", UNSET))
326349

350+
some_int_array = []
351+
_some_int_array = d.pop("some_int_array", UNSET)
352+
for some_int_array_item_data in _some_int_array or []:
353+
354+
def _parse_some_int_array_item(data: object) -> Union[None, int]:
355+
if data is None:
356+
return data
357+
return cast(Union[None, int], data)
358+
359+
some_int_array_item = _parse_some_int_array_item(some_int_array_item_data)
360+
361+
some_int_array.append(some_int_array_item)
362+
327363
def _parse_some_array(data: object) -> Union[List["AFormData"], None, Unset]:
328364
if data is None:
329365
return data
@@ -371,6 +407,7 @@ def _parse_some_array(data: object) -> Union[List["AFormData"], None, Unset]:
371407
a_date=a_date,
372408
some_number=some_number,
373409
some_nullable_number=some_nullable_number,
410+
some_int_array=some_int_array,
374411
some_array=some_array,
375412
some_optional_object=some_optional_object,
376413
some_enum=some_enum,

Diff for: openapi_python_client/templates/property_templates/list_property.py.jinja

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ if not isinstance({{ source }}, Unset):
6060
{% else %}
6161
{{ destination }}: {{ type_string }} = UNSET
6262
if not isinstance({{ source }}, Unset):
63-
{{ _transform(property, source, destination, True, "to_dict") | indent(4)}}
63+
{{ _transform(property, source, destination, True, "to_dict") | indent(4)}}
6464
{% endif %}
6565
{% endmacro %}
6666

0 commit comments

Comments
 (0)