From c85adc23502638eab5adf5473be1ccd130cf077c Mon Sep 17 00:00:00 2001 From: Daniel Grossmann-Kavanagh Date: Wed, 2 Sep 2020 23:33:09 -0700 Subject: [PATCH 1/2] fix: import Optional when properties are nullable or not required --- openapi_python_client/parser/properties.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openapi_python_client/parser/properties.py b/openapi_python_client/parser/properties.py index cbd722d5b..8c358841f 100644 --- a/openapi_python_client/parser/properties.py +++ b/openapi_python_client/parser/properties.py @@ -63,7 +63,7 @@ def get_imports(self, *, prefix: str) -> Set[str]: Args: prefix: A prefix to put before any relative (local) module names. """ - if not self.required: + if self.nullable or not self.required: return {"from typing import Optional"} return set() From 783aa3f492eb382ca8d9a0f394825d713d9544d4 Mon Sep 17 00:00:00 2001 From: Daniel Grossmann-Kavanagh Date: Thu, 3 Sep 2020 19:55:13 -0700 Subject: [PATCH 2/2] Add nullable example to end-to-end test --- end_to_end_tests/fastapi_app/openapi.json | 3 ++- .../golden-record/my_test_api_client/models/a_model.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/end_to_end_tests/fastapi_app/openapi.json b/end_to_end_tests/fastapi_app/openapi.json index e9682a8d5..22cd8e672 100644 --- a/end_to_end_tests/fastapi_app/openapi.json +++ b/end_to_end_tests/fastapi_app/openapi.json @@ -535,6 +535,7 @@ "some_dict": { "title": "Some Dict", "type": "object", + "nullable": true, "additionalProperties": { "type": "string" } @@ -631,4 +632,4 @@ } } } -} \ No newline at end of file +} diff --git a/end_to_end_tests/golden-record/my_test_api_client/models/a_model.py b/end_to_end_tests/golden-record/my_test_api_client/models/a_model.py index fec9fa034..489f5f83c 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/models/a_model.py +++ b/end_to_end_tests/golden-record/my_test_api_client/models/a_model.py @@ -13,7 +13,7 @@ class AModel: """ A Model for testing all the ways custom objects can be used """ an_enum_value: AnEnum - some_dict: Dict[Any, Any] + some_dict: Optional[Dict[Any, Any]] a_camel_date_time: Union[datetime.datetime, datetime.date] a_date: datetime.date nested_list_of_enums: Optional[List[List[DifferentEnum]]] = None