Closed
Description
Describe the bug
When an array is marked as nullable (in OpenAPI 3.0 or 3.1) the generated code fails type checking with the message:
error: Incompatible types in assignment (expression has type "tuple[None, bytes, str]", variable has type "list[float] | Unset | None") [assignment]
From the end-to-end test suite, making some_array
nullable (part of Body_upload_file_tests_upload_post
) results in this change:
@@ -165,10 +172,17 @@ class BodyUploadFileTestsUploadPost:
else (None, str(self.some_number).encode(), "text/plain")
)
- some_array: Union[Unset, Tuple[None, bytes, str]] = UNSET
- if not isinstance(self.some_array, Unset):
- _temp_some_array = self.some_array
- some_array = (None, json.dumps(_temp_some_array).encode(), "application/json")
+ some_array: Union[List[float], None, Unset]
+ if isinstance(self.some_array, Unset):
+ some_array = UNSET
+ elif isinstance(self.some_array, list):
+ some_array = UNSET
+ if not isinstance(self.some_array, Unset):
+ _temp_some_array = self.some_array
+ some_array = (None, json.dumps(_temp_some_array).encode(), "application/json")
+
+ else:
+ some_array = self.some_array
some_optional_object: Union[Unset, Tuple[None, bytes, str]] = UNSET
OpenAPI Spec File
The following patch applied the end-to-end test suite reproduces the problem:
diff --git a/end_to_end_tests/baseline_openapi_3.0.json b/end_to_end_tests/baseline_openapi_3.0.json
index d21d1d5..25adeaa 100644
--- a/end_to_end_tests/baseline_openapi_3.0.json
+++ b/end_to_end_tests/baseline_openapi_3.0.json
@@ -1778,6 +1778,7 @@
},
"some_array": {
"title": "Some Array",
+ "nullable": true,
"type": "array",
"items": {
"type": "number"
diff --git a/end_to_end_tests/baseline_openapi_3.1.yaml b/end_to_end_tests/baseline_openapi_3.1.yaml
index 03270af..4e33e68 100644
--- a/end_to_end_tests/baseline_openapi_3.1.yaml
+++ b/end_to_end_tests/baseline_openapi_3.1.yaml
@@ -1794,7 +1794,7 @@ info:
},
"some_array": {
"title": "Some Array",
- "type": "array",
+ "type": [ "array", "null" ],
"items": {
"type": "number"
}
Desktop (please complete the following information):
- openapi-python-client version 0.17.0
Metadata
Metadata
Assignees
Labels
No labels