From 7de1eeb987b9ae04460f78fe86f32a1bd4f01be7 Mon Sep 17 00:00:00 2001 From: Jacobo de Vera Date: Tue, 7 Mar 2017 07:46:38 +0100 Subject: [PATCH] [python] Triple quote strings with new lines in default values (#4941) * Triple quote python strings in defaults When the model contains a string with a default value with new lines in it, simply quoting generates invalid python code. Using triple quotes for all string defaults makes sure the generated code will be a valid python string. Fixes #4862 * Wrap default string in triple quotes when it contains new lines * Add newly generated python sample files --- .../io/swagger/codegen/languages/PythonClientCodegen.java | 6 +++++- .../python/petstore_api/api_client.py | 2 +- .../client/petstore-security-test/python/requirements.txt | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java index 38e4a75491c..5c0aa0a7916 100755 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PythonClientCodegen.java @@ -17,6 +17,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; @@ -519,7 +520,10 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig if (p instanceof StringProperty) { StringProperty dp = (StringProperty) p; if (dp.getDefault() != null) { - return "'" + dp.getDefault() + "'"; + if (Pattern.compile("\r\n|\r|\n").matcher(dp.getDefault()).find()) + return "'''" + dp.getDefault() + "'''"; + else + return "'" + dp.getDefault() + "'"; } } else if (p instanceof BooleanProperty) { BooleanProperty dp = (BooleanProperty) p; diff --git a/samples/client/petstore-security-test/python/petstore_api/api_client.py b/samples/client/petstore-security-test/python/petstore_api/api_client.py index f8b73bc1463..95265e49715 100644 --- a/samples/client/petstore-security-test/python/petstore_api/api_client.py +++ b/samples/client/petstore-security-test/python/petstore_api/api_client.py @@ -116,7 +116,7 @@ class ApiClient(object): collection_formats) for k, v in path_params: resource_path = resource_path.replace( - '{%s}' % k, quote(str(v), safe="")) + '{%s}' % k, quote(str(v), safe='')) # no safe chars, encode everything # query parameters if query_params: diff --git a/samples/client/petstore-security-test/python/requirements.txt b/samples/client/petstore-security-test/python/requirements.txt index f00e08fa339..bafdc07532f 100644 --- a/samples/client/petstore-security-test/python/requirements.txt +++ b/samples/client/petstore-security-test/python/requirements.txt @@ -1,5 +1,5 @@ certifi >= 14.05.14 -six == 1.8.0 +six >= 1.10 python_dateutil >= 2.5.3 setuptools >= 21.0.0 urllib3 >= 1.15.1