diff --git a/modules/openapi-generator/src/main/resources/python-fastapi/model_anyof.mustache b/modules/openapi-generator/src/main/resources/python-fastapi/model_anyof.mustache index 0d575011b26..b145f73ad13 100644 --- a/modules/openapi-generator/src/main/resources/python-fastapi/model_anyof.mustache +++ b/modules/openapi-generator/src/main/resources/python-fastapi/model_anyof.mustache @@ -176,7 +176,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}} if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_anyof.mustache b/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_anyof.mustache index adec7c41868..e76bd81c46d 100644 --- a/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_anyof.mustache +++ b/modules/openapi-generator/src/main/resources/python-pydantic-v1/model_anyof.mustache @@ -166,7 +166,8 @@ class {{classname}}({{#parent}}{{{.}}}{{/parent}}{{^parent}}BaseModel{{/parent}} if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_color.py b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_color.py index 60dbbe6dd7e..d1ed38dc9b1 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_color.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_color.py @@ -146,7 +146,8 @@ class AnyOfColor(BaseModel): if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_pig.py b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_pig.py index 1254f6789a8..018d892467b 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_pig.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1-aiohttp/petstore_api/models/any_of_pig.py @@ -125,7 +125,8 @@ class AnyOfPig(BaseModel): if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_color.py b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_color.py index 60dbbe6dd7e..d1ed38dc9b1 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_color.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_color.py @@ -146,7 +146,8 @@ class AnyOfColor(BaseModel): if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_pig.py b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_pig.py index 1254f6789a8..018d892467b 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_pig.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1/petstore_api/models/any_of_pig.py @@ -125,7 +125,8 @@ class AnyOfPig(BaseModel): if callable(to_json): return self.actual_instance.to_dict() else: - return json.dumps(self.actual_instance) + # primitive type + return self.actual_instance def to_str(self) -> str: """Returns the string representation of the actual instance""" diff --git a/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_model.py b/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_model.py index b66a414f913..ce84e0b035f 100644 --- a/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_model.py +++ b/samples/openapi3/client/petstore/python-pydantic-v1/tests/test_model.py @@ -177,7 +177,7 @@ class ModelTests(unittest.TestCase): except ValueError as e: self.assertTrue("ensure this value is less than or equal to 255" in str(e)) - # test from_josn + # test from_json json_str = '[12,34,56]' p = petstore_api.AnyOfColor.from_json(json_str) self.assertEqual(p.actual_instance, [12, 34,56]) @@ -187,6 +187,28 @@ class ModelTests(unittest.TestCase): except ValueError as e: self.assertTrue("ensure this value is less than or equal to 255" in str(e)) + # test from_json, schema 3 + json_str = '"#123456"' + p = petstore_api.AnyOfColor.from_json(json_str) + self.assertIsInstance(p.actual_instance, str) + self.assertEqual(p.actual_instance, '#123456') + + # test to_json, schema 3 + p = petstore_api.AnyOfColor(actual_instance='#123456') + self.assertEqual(p.to_json(), '"#123456"') + + # test from_dict, schema 3 + obj = '#123456' + p = petstore_api.AnyOfColor.from_dict(obj) + self.assertIsInstance(p.actual_instance, str) + self.assertEqual(p.actual_instance, '#123456') + + # test to_dict, schema 3 + p = petstore_api.AnyOfColor(actual_instance='#123456') + self.assertEqual(p.to_dict(), '#123456') + p = petstore_api.AnyOfColor.from_dict(p.to_dict()) + self.assertEqual(p.actual_instance, '#123456') + def test_oneOf(self): # test new Pig bp = petstore_api.BasquePig.from_dict({"className": "BasquePig", "color": "red"}) @@ -300,6 +322,9 @@ class ModelTests(unittest.TestCase): " DanishPig expected dict not int (type=type_error)") self.assertEqual(str(e), error_message) + # test to_dict + self.assertEqual(p.to_dict(), {'className': 'BasquePig', 'color': 'red'}) + # test to_json self.assertEqual(p.to_json(), '{"className": "BasquePig", "color": "red"}')