From 75f2d2c25588a33a8937ee9475de39cf6b9e46fd Mon Sep 17 00:00:00 2001 From: Ivan Gomes Date: Wed, 30 Jan 2019 17:30:11 -0800 Subject: [PATCH 1/2] Added support for additionalProperties in Python code generator. Fixes OpenAPITools/openapi-generator#2028. --- .../codegen/languages/PythonClientCodegen.java | 12 ++++++++++++ .../src/main/resources/python/api_client.mustache | 12 +++++++++++- .../src/main/resources/python/model.mustache | 5 ++++- .../org/openapitools/codegen/python/PythonTest.java | 4 ++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 27cde95798ef..1104197c5b57 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -18,6 +18,7 @@ package org.openapitools.codegen.languages; import io.swagger.v3.oas.models.media.ArraySchema; +import io.swagger.v3.oas.models.media.MapSchema; import io.swagger.v3.oas.models.media.Schema; import org.apache.commons.io.FilenameUtils; import org.apache.commons.lang3.StringUtils; @@ -91,6 +92,8 @@ public PythonClientCodegen() { // TODO file and binary is mapped as `file` languageSpecificPrimitives.add("file"); + instantiationTypes.put("map", "dict"); + typeMapping.clear(); typeMapping.put("integer", "int"); typeMapping.put("float", "float"); @@ -412,10 +415,19 @@ public String getTypeDeclaration(Schema p) { Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")"; + } return super.getTypeDeclaration(p); } + @Override + public String toInstantiationType(Schema property) { + if (property instanceof ArraySchema || property instanceof MapSchema || property.getAdditionalProperties() != null) { + return getSchemaType(property); + } + return super.toInstantiationType(property); + } + @Override public String getSchemaType(Schema p) { String openAPIType = super.getSchemaType(p); diff --git a/modules/openapi-generator/src/main/resources/python/api_client.mustache b/modules/openapi-generator/src/main/resources/python/api_client.mustache index b0976ba9f2bb..0948e0039a58 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -216,7 +216,11 @@ class ApiClient(object): return obj.isoformat() if isinstance(obj, dict): - obj_dict = obj + to_dict_attr = getattr(obj, 'to_dict', None) + if to_dict_attr is not None and callable(to_dict_attr): + obj_dict = obj.to_dict() + else: + obj_dict = obj else: # Convert model obj to dict except # attributes `openapi_types`, `attribute_map` @@ -634,6 +638,12 @@ class ApiClient(object): instance = klass(**kwargs) + if (isinstance(instance, dict) and + klass.openapi_types is not None and + isinstance(data, dict)): + for key, value in data.items(): + if key not in klass.openapi_types: + instance[key] = value if hasattr(instance, 'get_real_child_model'): klass_name = instance.get_real_child_model(data) if klass_name: diff --git a/modules/openapi-generator/src/main/resources/python/model.mustache b/modules/openapi-generator/src/main/resources/python/model.mustache index c3ab5cb02093..92603462b427 100644 --- a/modules/openapi-generator/src/main/resources/python/model.mustache +++ b/modules/openapi-generator/src/main/resources/python/model.mustache @@ -10,7 +10,7 @@ import six {{#models}} {{#model}} -class {{classname}}(object): +class {{classname}}({{#parent}}{{{parent}}}{{/parent}}{{^parent}}object{{/parent}}): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -199,6 +199,9 @@ class {{classname}}(object): )) else: result[attr] = value + if issubclass({{classname}}, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java index 5af082497374..d129ed10b0f0 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/python/PythonTest.java @@ -271,7 +271,7 @@ public void arrayModelTest() { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "an array model"); Assert.assertEquals(cm.vars.size(), 0); - Assert.assertEquals(cm.parent, "null"); + Assert.assertEquals(cm.parent, "list"); Assert.assertEquals(cm.imports.size(), 1); Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); } @@ -291,7 +291,7 @@ public void mapModelTest() { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a map model"); Assert.assertEquals(cm.vars.size(), 0); - Assert.assertEquals(cm.parent, "null"); + Assert.assertEquals(cm.parent, "dict"); Assert.assertEquals(cm.imports.size(), 1); Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); } From 84ce7249ae147716c42897f4866912d3febe9a77 Mon Sep 17 00:00:00 2001 From: Ivan Gomes Date: Wed, 30 Jan 2019 17:44:02 -0800 Subject: [PATCH 2/2] Ran Python Petstore sample for OpenAPITools/openapi-generator#2028 --- .../codegen/languages/PythonClientCodegen.java | 1 - .../petstore/python/petstore_api/api_client.py | 12 +++++++++++- .../models/additional_properties_class.py | 3 +++ .../petstore/python/petstore_api/models/animal.py | 3 +++ .../python/petstore_api/models/api_response.py | 3 +++ .../models/array_of_array_of_number_only.py | 3 +++ .../petstore_api/models/array_of_number_only.py | 3 +++ .../python/petstore_api/models/array_test.py | 3 +++ .../python/petstore_api/models/capitalization.py | 3 +++ .../petstore/python/petstore_api/models/cat.py | 5 ++++- .../petstore/python/petstore_api/models/category.py | 3 +++ .../python/petstore_api/models/class_model.py | 3 +++ .../petstore/python/petstore_api/models/client.py | 3 +++ .../petstore/python/petstore_api/models/dog.py | 5 ++++- .../python/petstore_api/models/enum_arrays.py | 3 +++ .../python/petstore_api/models/enum_class.py | 3 +++ .../petstore/python/petstore_api/models/enum_test.py | 3 +++ .../petstore/python/petstore_api/models/file.py | 3 +++ .../petstore_api/models/file_schema_test_class.py | 3 +++ .../python/petstore_api/models/format_test.py | 3 +++ .../python/petstore_api/models/has_only_read_only.py | 3 +++ .../petstore/python/petstore_api/models/list.py | 3 +++ .../petstore/python/petstore_api/models/map_test.py | 3 +++ ...xed_properties_and_additional_properties_class.py | 3 +++ .../python/petstore_api/models/model200_response.py | 3 +++ .../python/petstore_api/models/model_return.py | 3 +++ .../petstore/python/petstore_api/models/name.py | 3 +++ .../python/petstore_api/models/number_only.py | 3 +++ .../petstore/python/petstore_api/models/order.py | 3 +++ .../python/petstore_api/models/outer_composite.py | 3 +++ .../python/petstore_api/models/outer_enum.py | 3 +++ .../petstore/python/petstore_api/models/pet.py | 3 +++ .../python/petstore_api/models/read_only_first.py | 3 +++ .../python/petstore_api/models/special_model_name.py | 3 +++ .../petstore/python/petstore_api/models/tag.py | 3 +++ .../petstore_api/models/type_holder_default.py | 3 +++ .../petstore_api/models/type_holder_example.py | 3 +++ .../petstore/python/petstore_api/models/user.py | 3 +++ .../petstore/python/petstore_api/models/xml_item.py | 3 +++ 39 files changed, 124 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java index 1104197c5b57..4563c19b2a0a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PythonClientCodegen.java @@ -415,7 +415,6 @@ public String getTypeDeclaration(Schema p) { Schema inner = ModelUtils.getAdditionalProperties(p); return getSchemaType(p) + "(str, " + getTypeDeclaration(inner) + ")"; - } return super.getTypeDeclaration(p); } diff --git a/samples/client/petstore/python/petstore_api/api_client.py b/samples/client/petstore/python/petstore_api/api_client.py index a79d7ccf7425..f56d1b2253f7 100644 --- a/samples/client/petstore/python/petstore_api/api_client.py +++ b/samples/client/petstore/python/petstore_api/api_client.py @@ -209,7 +209,11 @@ def sanitize_for_serialization(self, obj): return obj.isoformat() if isinstance(obj, dict): - obj_dict = obj + to_dict_attr = getattr(obj, 'to_dict', None) + if to_dict_attr is not None and callable(to_dict_attr): + obj_dict = obj.to_dict() + else: + obj_dict = obj else: # Convert model obj to dict except # attributes `openapi_types`, `attribute_map` @@ -627,6 +631,12 @@ def __deserialize_model(self, data, klass): instance = klass(**kwargs) + if (isinstance(instance, dict) and + klass.openapi_types is not None and + isinstance(data, dict)): + for key, value in data.items(): + if key not in klass.openapi_types: + instance[key] = value if hasattr(instance, 'get_real_child_model'): klass_name = instance.get_real_child_model(data) if klass_name: diff --git a/samples/client/petstore/python/petstore_api/models/additional_properties_class.py b/samples/client/petstore/python/petstore_api/models/additional_properties_class.py index dc4648ae1c7f..a40c3c8f1fb6 100644 --- a/samples/client/petstore/python/petstore_api/models/additional_properties_class.py +++ b/samples/client/petstore/python/petstore_api/models/additional_properties_class.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(AdditionalPropertiesClass, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/animal.py b/samples/client/petstore/python/petstore_api/models/animal.py index abd6f705e5e8..2d7c2989486f 100644 --- a/samples/client/petstore/python/petstore_api/models/animal.py +++ b/samples/client/petstore/python/petstore_api/models/animal.py @@ -127,6 +127,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Animal, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/api_response.py b/samples/client/petstore/python/petstore_api/models/api_response.py index e62983030491..78898cf5b7de 100644 --- a/samples/client/petstore/python/petstore_api/models/api_response.py +++ b/samples/client/petstore/python/petstore_api/models/api_response.py @@ -141,6 +141,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ApiResponse, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/array_of_array_of_number_only.py b/samples/client/petstore/python/petstore_api/models/array_of_array_of_number_only.py index fde218a4661c..5e9009c8f16d 100644 --- a/samples/client/petstore/python/petstore_api/models/array_of_array_of_number_only.py +++ b/samples/client/petstore/python/petstore_api/models/array_of_array_of_number_only.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ArrayOfArrayOfNumberOnly, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/array_of_number_only.py b/samples/client/petstore/python/petstore_api/models/array_of_number_only.py index 8999e563c4a6..ca5a7c753fbc 100644 --- a/samples/client/petstore/python/petstore_api/models/array_of_number_only.py +++ b/samples/client/petstore/python/petstore_api/models/array_of_number_only.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ArrayOfNumberOnly, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/array_test.py b/samples/client/petstore/python/petstore_api/models/array_test.py index 05cc108139a5..4a67a938da74 100644 --- a/samples/client/petstore/python/petstore_api/models/array_test.py +++ b/samples/client/petstore/python/petstore_api/models/array_test.py @@ -141,6 +141,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ArrayTest, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/capitalization.py b/samples/client/petstore/python/petstore_api/models/capitalization.py index 923f5c4aae86..073b5b246d1e 100644 --- a/samples/client/petstore/python/petstore_api/models/capitalization.py +++ b/samples/client/petstore/python/petstore_api/models/capitalization.py @@ -221,6 +221,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Capitalization, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/cat.py b/samples/client/petstore/python/petstore_api/models/cat.py index c5c87a6b1118..7ed82672ebc8 100644 --- a/samples/client/petstore/python/petstore_api/models/cat.py +++ b/samples/client/petstore/python/petstore_api/models/cat.py @@ -16,7 +16,7 @@ import six -class Cat(object): +class Cat(Animal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Cat, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/category.py b/samples/client/petstore/python/petstore_api/models/category.py index 5b2f79eaec8d..f09a551bfd1a 100644 --- a/samples/client/petstore/python/petstore_api/models/category.py +++ b/samples/client/petstore/python/petstore_api/models/category.py @@ -116,6 +116,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Category, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/class_model.py b/samples/client/petstore/python/petstore_api/models/class_model.py index e207ba41ec92..e0221fca83e5 100644 --- a/samples/client/petstore/python/petstore_api/models/class_model.py +++ b/samples/client/petstore/python/petstore_api/models/class_model.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ClassModel, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/client.py b/samples/client/petstore/python/petstore_api/models/client.py index e742468e7763..5b1d1cc69169 100644 --- a/samples/client/petstore/python/petstore_api/models/client.py +++ b/samples/client/petstore/python/petstore_api/models/client.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Client, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/dog.py b/samples/client/petstore/python/petstore_api/models/dog.py index c2bc8f745d15..777822e94e27 100644 --- a/samples/client/petstore/python/petstore_api/models/dog.py +++ b/samples/client/petstore/python/petstore_api/models/dog.py @@ -16,7 +16,7 @@ import six -class Dog(object): +class Dog(Animal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Dog, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/enum_arrays.py b/samples/client/petstore/python/petstore_api/models/enum_arrays.py index df4363c356c3..e1344d3ec783 100644 --- a/samples/client/petstore/python/petstore_api/models/enum_arrays.py +++ b/samples/client/petstore/python/petstore_api/models/enum_arrays.py @@ -128,6 +128,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(EnumArrays, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/enum_class.py b/samples/client/petstore/python/petstore_api/models/enum_class.py index 182197d8aa6e..be7f6871bbe9 100644 --- a/samples/client/petstore/python/petstore_api/models/enum_class.py +++ b/samples/client/petstore/python/petstore_api/models/enum_class.py @@ -68,6 +68,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(EnumClass, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/enum_test.py b/samples/client/petstore/python/petstore_api/models/enum_test.py index 0fd60c4a351d..17cd8eee19ba 100644 --- a/samples/client/petstore/python/petstore_api/models/enum_test.py +++ b/samples/client/petstore/python/petstore_api/models/enum_test.py @@ -218,6 +218,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(EnumTest, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/file.py b/samples/client/petstore/python/petstore_api/models/file.py index 34d77c3b4cf8..36f8dc553db5 100644 --- a/samples/client/petstore/python/petstore_api/models/file.py +++ b/samples/client/petstore/python/petstore_api/models/file.py @@ -91,6 +91,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(File, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/file_schema_test_class.py b/samples/client/petstore/python/petstore_api/models/file_schema_test_class.py index 026822dee749..4fa6eaa3a893 100644 --- a/samples/client/petstore/python/petstore_api/models/file_schema_test_class.py +++ b/samples/client/petstore/python/petstore_api/models/file_schema_test_class.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(FileSchemaTestClass, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/format_test.py b/samples/client/petstore/python/petstore_api/models/format_test.py index c7703d166071..389e319a76e4 100644 --- a/samples/client/petstore/python/petstore_api/models/format_test.py +++ b/samples/client/petstore/python/petstore_api/models/format_test.py @@ -433,6 +433,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(FormatTest, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/has_only_read_only.py b/samples/client/petstore/python/petstore_api/models/has_only_read_only.py index 41db3ff71958..aa28e253384a 100644 --- a/samples/client/petstore/python/petstore_api/models/has_only_read_only.py +++ b/samples/client/petstore/python/petstore_api/models/has_only_read_only.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(HasOnlyReadOnly, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/list.py b/samples/client/petstore/python/petstore_api/models/list.py index 08e12ad53104..3faddb6abe0c 100644 --- a/samples/client/petstore/python/petstore_api/models/list.py +++ b/samples/client/petstore/python/petstore_api/models/list.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(List, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/map_test.py b/samples/client/petstore/python/petstore_api/models/map_test.py index f04bd2cc1421..f992d067e550 100644 --- a/samples/client/petstore/python/petstore_api/models/map_test.py +++ b/samples/client/petstore/python/petstore_api/models/map_test.py @@ -174,6 +174,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(MapTest, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/mixed_properties_and_additional_properties_class.py b/samples/client/petstore/python/petstore_api/models/mixed_properties_and_additional_properties_class.py index ecf67acc5e95..014d47bde94c 100644 --- a/samples/client/petstore/python/petstore_api/models/mixed_properties_and_additional_properties_class.py +++ b/samples/client/petstore/python/petstore_api/models/mixed_properties_and_additional_properties_class.py @@ -141,6 +141,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(MixedPropertiesAndAdditionalPropertiesClass, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/model200_response.py b/samples/client/petstore/python/petstore_api/models/model200_response.py index ec778cdcb74b..114f8e008e0e 100644 --- a/samples/client/petstore/python/petstore_api/models/model200_response.py +++ b/samples/client/petstore/python/petstore_api/models/model200_response.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Model200Response, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/model_return.py b/samples/client/petstore/python/petstore_api/models/model_return.py index 3862245ef71d..e4fb3882810e 100644 --- a/samples/client/petstore/python/petstore_api/models/model_return.py +++ b/samples/client/petstore/python/petstore_api/models/model_return.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ModelReturn, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/name.py b/samples/client/petstore/python/petstore_api/models/name.py index b2e97e596a4d..0e89dde1e89d 100644 --- a/samples/client/petstore/python/petstore_api/models/name.py +++ b/samples/client/petstore/python/petstore_api/models/name.py @@ -168,6 +168,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Name, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/number_only.py b/samples/client/petstore/python/petstore_api/models/number_only.py index ab39ee8195d4..9a4f8d1440b7 100644 --- a/samples/client/petstore/python/petstore_api/models/number_only.py +++ b/samples/client/petstore/python/petstore_api/models/number_only.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(NumberOnly, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/order.py b/samples/client/petstore/python/petstore_api/models/order.py index 697d84447cdc..d6342c25ec79 100644 --- a/samples/client/petstore/python/petstore_api/models/order.py +++ b/samples/client/petstore/python/petstore_api/models/order.py @@ -227,6 +227,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Order, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/outer_composite.py b/samples/client/petstore/python/petstore_api/models/outer_composite.py index b22b16c6fdcd..cb6750182cf0 100644 --- a/samples/client/petstore/python/petstore_api/models/outer_composite.py +++ b/samples/client/petstore/python/petstore_api/models/outer_composite.py @@ -141,6 +141,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(OuterComposite, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/outer_enum.py b/samples/client/petstore/python/petstore_api/models/outer_enum.py index 10d6be19a4c9..08c3bc096f23 100644 --- a/samples/client/petstore/python/petstore_api/models/outer_enum.py +++ b/samples/client/petstore/python/petstore_api/models/outer_enum.py @@ -68,6 +68,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(OuterEnum, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/pet.py b/samples/client/petstore/python/petstore_api/models/pet.py index 3183f60c7971..e17942da1ae7 100644 --- a/samples/client/petstore/python/petstore_api/models/pet.py +++ b/samples/client/petstore/python/petstore_api/models/pet.py @@ -229,6 +229,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Pet, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/read_only_first.py b/samples/client/petstore/python/petstore_api/models/read_only_first.py index 2b257be18de4..6a790fe0cff2 100644 --- a/samples/client/petstore/python/petstore_api/models/read_only_first.py +++ b/samples/client/petstore/python/petstore_api/models/read_only_first.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(ReadOnlyFirst, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/special_model_name.py b/samples/client/petstore/python/petstore_api/models/special_model_name.py index fa59b887471b..1f698246c43a 100644 --- a/samples/client/petstore/python/petstore_api/models/special_model_name.py +++ b/samples/client/petstore/python/petstore_api/models/special_model_name.py @@ -89,6 +89,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(SpecialModelName, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/tag.py b/samples/client/petstore/python/petstore_api/models/tag.py index 8fcc8a848660..7df41fcb48ea 100644 --- a/samples/client/petstore/python/petstore_api/models/tag.py +++ b/samples/client/petstore/python/petstore_api/models/tag.py @@ -115,6 +115,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(Tag, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/type_holder_default.py b/samples/client/petstore/python/petstore_api/models/type_holder_default.py index a0566f5d5fe6..4854f3f67b1b 100644 --- a/samples/client/petstore/python/petstore_api/models/type_holder_default.py +++ b/samples/client/petstore/python/petstore_api/models/type_holder_default.py @@ -198,6 +198,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(TypeHolderDefault, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/type_holder_example.py b/samples/client/petstore/python/petstore_api/models/type_holder_example.py index 573354ab4d6e..77e6453b7ad7 100644 --- a/samples/client/petstore/python/petstore_api/models/type_holder_example.py +++ b/samples/client/petstore/python/petstore_api/models/type_holder_example.py @@ -198,6 +198,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(TypeHolderExample, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/user.py b/samples/client/petstore/python/petstore_api/models/user.py index 9736c47c1f87..014f6e2e029f 100644 --- a/samples/client/petstore/python/petstore_api/models/user.py +++ b/samples/client/petstore/python/petstore_api/models/user.py @@ -273,6 +273,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(User, dict): + for key, value in self.items(): + result[key] = value return result diff --git a/samples/client/petstore/python/petstore_api/models/xml_item.py b/samples/client/petstore/python/petstore_api/models/xml_item.py index 28e6ff376770..123e5ca6a37e 100644 --- a/samples/client/petstore/python/petstore_api/models/xml_item.py +++ b/samples/client/petstore/python/petstore_api/models/xml_item.py @@ -817,6 +817,9 @@ def to_dict(self): )) else: result[attr] = value + if issubclass(XmlItem, dict): + for key, value in self.items(): + result[key] = value return result