From b6efb9af5e149af951b5b7cf69a45505ae669bb0 Mon Sep 17 00:00:00 2001 From: Viktor Danyliuk <viktor.danyliuk@arachnys.com> Date: Tue, 27 Nov 2018 19:27:01 +0200 Subject: [PATCH 1/4] surround response content decoding with try-except --- .../src/main/resources/python/asyncio/rest.mustache | 8 +++++++- .../src/main/resources/python/rest.mustache | 7 +++++-- .../src/main/resources/python/tornado/rest.mustache | 6 +++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache index 9c1a0cc81db..ac896c308fc 100644 --- a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache @@ -160,7 +160,13 @@ class RESTClientObject(object): r = await self.pool_manager.request(**args) if _preload_content: - data = await r.text() + data = await r.read() + try + # binary -> string + data = data.decode('utf-8') + except UnicodeDecodeError: + # probably data is a binary content itself + pass r = RESTResponse(r, data) # log response body diff --git a/modules/openapi-generator/src/main/resources/python/rest.mustache b/modules/openapi-generator/src/main/resources/python/rest.mustache index 8418ec2a0fd..3221e63c405 100644 --- a/modules/openapi-generator/src/main/resources/python/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/rest.mustache @@ -210,8 +210,11 @@ class RESTClientObject(object): # In the python 3, the response.data is bytes. # we need to decode it to string. if six.PY3: - r.data = r.data.decode('utf8') - + try + r.data = r.data.decode('utf-8') + except UnicodeDecodeError: + # probably data is a binary content itself + pass # log response body logger.debug("response body: %s", r.data) diff --git a/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache b/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache index bc74fbc295b..853beff8bdc 100644 --- a/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache @@ -28,7 +28,11 @@ class RESTResponse(io.IOBase): if resp.body: # In Python 3, the response body is utf-8 encoded bytes. if six.PY3: - self.data = resp.body.decode('utf-8') + try + self.data = resp.body.decode('utf-8') + except UnicodeDecodeError: + # probably data is a binary content itself + self.data = resp.body else: self.data = resp.body else: -- GitLab From 3d0be6ef59f3871e193c698af4b65009752b2e04 Mon Sep 17 00:00:00 2001 From: Viktor Danyliuk <viktor.danyliuk@arachnys.com> Date: Fri, 7 Dec 2018 14:30:01 +0200 Subject: [PATCH 2/4] Keep response body in bytes until we really want it to be a string. --- .../src/main/resources/python/api_client.mustache | 10 ++++++++-- .../main/resources/python/asyncio/rest.mustache | 6 ------ .../src/main/resources/python/rest.mustache | 8 -------- .../main/resources/python/tornado/rest.mustache | 14 +------------- 4 files changed, 9 insertions(+), 29 deletions(-) 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 b89911d51d2..9040dce9fee 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -244,11 +244,17 @@ class ApiClient(object): if response_type == "file": return self.__deserialize_file(response) + try + data = response.data.decode('utf-8') + except UnicodeDecodeError: + # probably data is a binary content itself + data = response.data + # fetch data from response object try: - data = json.loads(response.data) + data = json.loads(data) except ValueError: - data = response.data + pass return self.__deserialize(data, response_type) diff --git a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache index ac896c308fc..a18de9712fe 100644 --- a/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/asyncio/rest.mustache @@ -161,12 +161,6 @@ class RESTClientObject(object): if _preload_content: data = await r.read() - try - # binary -> string - data = data.decode('utf-8') - except UnicodeDecodeError: - # probably data is a binary content itself - pass r = RESTResponse(r, data) # log response body diff --git a/modules/openapi-generator/src/main/resources/python/rest.mustache b/modules/openapi-generator/src/main/resources/python/rest.mustache index 3221e63c405..100cc0f27a3 100644 --- a/modules/openapi-generator/src/main/resources/python/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/rest.mustache @@ -207,14 +207,6 @@ class RESTClientObject(object): if _preload_content: r = RESTResponse(r) - # In the python 3, the response.data is bytes. - # we need to decode it to string. - if six.PY3: - try - r.data = r.data.decode('utf-8') - except UnicodeDecodeError: - # probably data is a binary content itself - pass # log response body logger.debug("response body: %s", r.data) diff --git a/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache b/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache index 853beff8bdc..e6e77b53295 100644 --- a/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache +++ b/modules/openapi-generator/src/main/resources/python/tornado/rest.mustache @@ -24,19 +24,7 @@ class RESTResponse(io.IOBase): self.tornado_response = resp self.status = resp.code self.reason = resp.reason - - if resp.body: - # In Python 3, the response body is utf-8 encoded bytes. - if six.PY3: - try - self.data = resp.body.decode('utf-8') - except UnicodeDecodeError: - # probably data is a binary content itself - self.data = resp.body - else: - self.data = resp.body - else: - self.data = None + self.data = resp.body def getheaders(self): """Returns a CIMultiDictProxy of the response headers.""" -- GitLab From f1814966831957aafac7bab6ac1b1bb41ba50180 Mon Sep 17 00:00:00 2001 From: Viktor Danyliuk <viktor.danyliuk@arachnys.com> Date: Fri, 7 Dec 2018 14:34:41 +0200 Subject: [PATCH 3/4] Merge try-except statements. --- .../src/main/resources/python/api_client.mustache | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) 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 9040dce9fee..68a3b5568ad 100644 --- a/modules/openapi-generator/src/main/resources/python/api_client.mustache +++ b/modules/openapi-generator/src/main/resources/python/api_client.mustache @@ -246,14 +246,13 @@ class ApiClient(object): try data = response.data.decode('utf-8') + # fetch data from response object + data = json.loads(data) except UnicodeDecodeError: # probably data is a binary content itself data = response.data - - # fetch data from response object - try: - data = json.loads(data) except ValueError: + # failed to fetch data from response object pass return self.__deserialize(data, response_type) -- GitLab From d9105bb552521b9353d344e06cde22c6315c03ab Mon Sep 17 00:00:00 2001 From: William Cheng <wing328hk@gmail.com> Date: Mon, 25 Mar 2019 21:36:50 +0800 Subject: [PATCH 4/4] update python samples --- .../python-asyncio/.openapi-generator/VERSION | 2 +- .../client/petstore/python-asyncio/README.md | 2 - .../petstore/python-asyncio/docs/FakeApi.md | 10 ++++- .../python-asyncio/petstore_api/__init__.py | 2 - .../petstore_api/api/fake_api.py | 38 +++++++++++++++---- .../python-asyncio/petstore_api/api_client.py | 13 +++++-- .../petstore_api/models/__init__.py | 2 - .../python-asyncio/petstore_api/rest.py | 2 +- .../python-tornado/.openapi-generator/VERSION | 2 +- .../client/petstore/python-tornado/README.md | 2 - .../petstore/python-tornado/docs/FakeApi.md | 10 ++++- .../python-tornado/petstore_api/__init__.py | 2 - .../petstore_api/api/fake_api.py | 38 +++++++++++++++---- .../python-tornado/petstore_api/api_client.py | 13 +++++-- .../petstore_api/models/__init__.py | 2 - .../python-tornado/petstore_api/rest.py | 10 +---- .../python/.openapi-generator/VERSION | 2 +- samples/client/petstore/python/README.md | 2 - .../client/petstore/python/docs/FakeApi.md | 10 ++++- .../petstore/python/petstore_api/__init__.py | 2 - .../python/petstore_api/api/fake_api.py | 38 +++++++++++++++---- .../python/petstore_api/api_client.py | 13 +++++-- .../python/petstore_api/models/__init__.py | 2 - .../petstore/python/petstore_api/rest.py | 5 --- 24 files changed, 149 insertions(+), 75 deletions(-) diff --git a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION index e24c1f857e0..d077ffb477a 100644 --- a/samples/client/petstore/python-asyncio/.openapi-generator/VERSION +++ b/samples/client/petstore/python-asyncio/.openapi-generator/VERSION @@ -1 +1 @@ -3.3.3-SNAPSHOT \ No newline at end of file +3.3.4-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-asyncio/README.md b/samples/client/petstore/python-asyncio/README.md index 486a96573d6..05c64828c81 100644 --- a/samples/client/petstore/python-asyncio/README.md +++ b/samples/client/petstore/python-asyncio/README.md @@ -111,7 +111,6 @@ Class | Method | HTTP request | Description - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) - [Animal](docs/Animal.md) - - [AnimalFarm](docs/AnimalFarm.md) - [ApiResponse](docs/ApiResponse.md) - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) @@ -142,7 +141,6 @@ Class | Method | HTTP request | Description - [Pet](docs/Pet.md) - [ReadOnlyFirst](docs/ReadOnlyFirst.md) - [SpecialModelName](docs/SpecialModelName.md) - - [StringBooleanMap](docs/StringBooleanMap.md) - [Tag](docs/Tag.md) - [User](docs/User.md) diff --git a/samples/client/petstore/python-asyncio/docs/FakeApi.md b/samples/client/petstore/python-asyncio/docs/FakeApi.md index 3d24cab0d3f..97dc3c892e0 100644 --- a/samples/client/petstore/python-asyncio/docs/FakeApi.md +++ b/samples/client/petstore/python-asyncio/docs/FakeApi.md @@ -488,7 +488,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **test_group_parameters** -> test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) +> test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) Fake endpoint to test group parameters (optional) @@ -504,13 +504,16 @@ from pprint import pprint # create an instance of the API class api_instance = petstore_api.FakeApi() +required_string_group = 56 # int | Required String in group parameters +required_boolean_group = True # bool | Required Boolean in group parameters +required_int64_group = 56 # int | Required Integer in group parameters string_group = 56 # int | String in group parameters (optional) boolean_group = True # bool | Boolean in group parameters (optional) int64_group = 56 # int | Integer in group parameters (optional) try: # Fake endpoint to test group parameters (optional) - api_instance.test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) + api_instance.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) except ApiException as e: print("Exception when calling FakeApi->test_group_parameters: %s\n" % e) ``` @@ -519,6 +522,9 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- + **required_string_group** | **int**| Required String in group parameters | + **required_boolean_group** | **bool**| Required Boolean in group parameters | + **required_int64_group** | **int**| Required Integer in group parameters | **string_group** | **int**| String in group parameters | [optional] **boolean_group** | **bool**| Boolean in group parameters | [optional] **int64_group** | **int**| Integer in group parameters | [optional] diff --git a/samples/client/petstore/python-asyncio/petstore_api/__init__.py b/samples/client/petstore/python-asyncio/petstore_api/__init__.py index f54256a687c..88ac77881e3 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/__init__.py +++ b/samples/client/petstore/python-asyncio/petstore_api/__init__.py @@ -30,7 +30,6 @@ from petstore_api.configuration import Configuration # import models into sdk package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -61,6 +60,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python-asyncio/petstore_api/api/fake_api.py b/samples/client/petstore/python-asyncio/petstore_api/api/fake_api.py index 7d40ece7a24..1647628c407 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/api/fake_api.py +++ b/samples/client/petstore/python-asyncio/petstore_api/api/fake_api.py @@ -1009,16 +1009,19 @@ class FakeApi(object): _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats) - def test_group_parameters(self, **kwargs): # noqa: E501 + def test_group_parameters(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters(async_req=True) + >>> thread = api.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1028,21 +1031,24 @@ class FakeApi(object): """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + return self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 else: - (data) = self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + (data) = self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 return data - def test_group_parameters_with_http_info(self, **kwargs): # noqa: E501 + def test_group_parameters_with_http_info(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters_with_http_info(async_req=True) + >>> thread = api.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1053,7 +1059,7 @@ class FakeApi(object): local_var_params = locals() - all_params = ['string_group', 'boolean_group', 'int64_group'] # noqa: E501 + all_params = ['required_string_group', 'required_boolean_group', 'required_int64_group', 'string_group', 'boolean_group', 'int64_group'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -1067,18 +1073,36 @@ class FakeApi(object): ) local_var_params[key] = val del local_var_params['kwargs'] + # verify the required parameter 'required_string_group' is set + if ('required_string_group' not in local_var_params or + local_var_params['required_string_group'] is None): + raise ValueError("Missing the required parameter `required_string_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_boolean_group' is set + if ('required_boolean_group' not in local_var_params or + local_var_params['required_boolean_group'] is None): + raise ValueError("Missing the required parameter `required_boolean_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_int64_group' is set + if ('required_int64_group' not in local_var_params or + local_var_params['required_int64_group'] is None): + raise ValueError("Missing the required parameter `required_int64_group` when calling `test_group_parameters`") # noqa: E501 collection_formats = {} path_params = {} query_params = [] + if 'required_string_group' in local_var_params: + query_params.append(('required_string_group', local_var_params['required_string_group'])) # noqa: E501 + if 'required_int64_group' in local_var_params: + query_params.append(('required_int64_group', local_var_params['required_int64_group'])) # noqa: E501 if 'string_group' in local_var_params: query_params.append(('string_group', local_var_params['string_group'])) # noqa: E501 if 'int64_group' in local_var_params: query_params.append(('int64_group', local_var_params['int64_group'])) # noqa: E501 header_params = {} + if 'required_boolean_group' in local_var_params: + header_params['required_boolean_group'] = local_var_params['required_boolean_group'] # noqa: E501 if 'boolean_group' in local_var_params: header_params['boolean_group'] = local_var_params['boolean_group'] # noqa: E501 diff --git a/samples/client/petstore/python-asyncio/petstore_api/api_client.py b/samples/client/petstore/python-asyncio/petstore_api/api_client.py index 132179b9b9c..2ae3369f9ed 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/api_client.py +++ b/samples/client/petstore/python-asyncio/petstore_api/api_client.py @@ -237,11 +237,16 @@ class ApiClient(object): if response_type == "file": return self.__deserialize_file(response) - # fetch data from response object - try: - data = json.loads(response.data) - except ValueError: + try + data = response.data.decode('utf-8') + # fetch data from response object + data = json.loads(data) + except UnicodeDecodeError: + # probably data is a binary content itself data = response.data + except ValueError: + # failed to fetch data from response object + pass return self.__deserialize(data, response_type) diff --git a/samples/client/petstore/python-asyncio/petstore_api/models/__init__.py b/samples/client/petstore/python-asyncio/petstore_api/models/__init__.py index 2450cb334f7..393dec06333 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/models/__init__.py +++ b/samples/client/petstore/python-asyncio/petstore_api/models/__init__.py @@ -16,7 +16,6 @@ from __future__ import absolute_import # import models into model package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -47,6 +46,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python-asyncio/petstore_api/rest.py b/samples/client/petstore/python-asyncio/petstore_api/rest.py index 471ea8417e5..7183b97c384 100644 --- a/samples/client/petstore/python-asyncio/petstore_api/rest.py +++ b/samples/client/petstore/python-asyncio/petstore_api/rest.py @@ -168,7 +168,7 @@ class RESTClientObject(object): r = await self.pool_manager.request(**args) if _preload_content: - data = await r.text() + data = await r.read() r = RESTResponse(r, data) # log response body diff --git a/samples/client/petstore/python-tornado/.openapi-generator/VERSION b/samples/client/petstore/python-tornado/.openapi-generator/VERSION index e24c1f857e0..d077ffb477a 100644 --- a/samples/client/petstore/python-tornado/.openapi-generator/VERSION +++ b/samples/client/petstore/python-tornado/.openapi-generator/VERSION @@ -1 +1 @@ -3.3.3-SNAPSHOT \ No newline at end of file +3.3.4-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python-tornado/README.md b/samples/client/petstore/python-tornado/README.md index 486a96573d6..05c64828c81 100644 --- a/samples/client/petstore/python-tornado/README.md +++ b/samples/client/petstore/python-tornado/README.md @@ -111,7 +111,6 @@ Class | Method | HTTP request | Description - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) - [Animal](docs/Animal.md) - - [AnimalFarm](docs/AnimalFarm.md) - [ApiResponse](docs/ApiResponse.md) - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) @@ -142,7 +141,6 @@ Class | Method | HTTP request | Description - [Pet](docs/Pet.md) - [ReadOnlyFirst](docs/ReadOnlyFirst.md) - [SpecialModelName](docs/SpecialModelName.md) - - [StringBooleanMap](docs/StringBooleanMap.md) - [Tag](docs/Tag.md) - [User](docs/User.md) diff --git a/samples/client/petstore/python-tornado/docs/FakeApi.md b/samples/client/petstore/python-tornado/docs/FakeApi.md index 3d24cab0d3f..97dc3c892e0 100644 --- a/samples/client/petstore/python-tornado/docs/FakeApi.md +++ b/samples/client/petstore/python-tornado/docs/FakeApi.md @@ -488,7 +488,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **test_group_parameters** -> test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) +> test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) Fake endpoint to test group parameters (optional) @@ -504,13 +504,16 @@ from pprint import pprint # create an instance of the API class api_instance = petstore_api.FakeApi() +required_string_group = 56 # int | Required String in group parameters +required_boolean_group = True # bool | Required Boolean in group parameters +required_int64_group = 56 # int | Required Integer in group parameters string_group = 56 # int | String in group parameters (optional) boolean_group = True # bool | Boolean in group parameters (optional) int64_group = 56 # int | Integer in group parameters (optional) try: # Fake endpoint to test group parameters (optional) - api_instance.test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) + api_instance.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) except ApiException as e: print("Exception when calling FakeApi->test_group_parameters: %s\n" % e) ``` @@ -519,6 +522,9 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- + **required_string_group** | **int**| Required String in group parameters | + **required_boolean_group** | **bool**| Required Boolean in group parameters | + **required_int64_group** | **int**| Required Integer in group parameters | **string_group** | **int**| String in group parameters | [optional] **boolean_group** | **bool**| Boolean in group parameters | [optional] **int64_group** | **int**| Integer in group parameters | [optional] diff --git a/samples/client/petstore/python-tornado/petstore_api/__init__.py b/samples/client/petstore/python-tornado/petstore_api/__init__.py index f54256a687c..88ac77881e3 100644 --- a/samples/client/petstore/python-tornado/petstore_api/__init__.py +++ b/samples/client/petstore/python-tornado/petstore_api/__init__.py @@ -30,7 +30,6 @@ from petstore_api.configuration import Configuration # import models into sdk package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -61,6 +60,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python-tornado/petstore_api/api/fake_api.py b/samples/client/petstore/python-tornado/petstore_api/api/fake_api.py index 7d40ece7a24..1647628c407 100644 --- a/samples/client/petstore/python-tornado/petstore_api/api/fake_api.py +++ b/samples/client/petstore/python-tornado/petstore_api/api/fake_api.py @@ -1009,16 +1009,19 @@ class FakeApi(object): _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats) - def test_group_parameters(self, **kwargs): # noqa: E501 + def test_group_parameters(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters(async_req=True) + >>> thread = api.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1028,21 +1031,24 @@ class FakeApi(object): """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + return self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 else: - (data) = self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + (data) = self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 return data - def test_group_parameters_with_http_info(self, **kwargs): # noqa: E501 + def test_group_parameters_with_http_info(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters_with_http_info(async_req=True) + >>> thread = api.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1053,7 +1059,7 @@ class FakeApi(object): local_var_params = locals() - all_params = ['string_group', 'boolean_group', 'int64_group'] # noqa: E501 + all_params = ['required_string_group', 'required_boolean_group', 'required_int64_group', 'string_group', 'boolean_group', 'int64_group'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -1067,18 +1073,36 @@ class FakeApi(object): ) local_var_params[key] = val del local_var_params['kwargs'] + # verify the required parameter 'required_string_group' is set + if ('required_string_group' not in local_var_params or + local_var_params['required_string_group'] is None): + raise ValueError("Missing the required parameter `required_string_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_boolean_group' is set + if ('required_boolean_group' not in local_var_params or + local_var_params['required_boolean_group'] is None): + raise ValueError("Missing the required parameter `required_boolean_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_int64_group' is set + if ('required_int64_group' not in local_var_params or + local_var_params['required_int64_group'] is None): + raise ValueError("Missing the required parameter `required_int64_group` when calling `test_group_parameters`") # noqa: E501 collection_formats = {} path_params = {} query_params = [] + if 'required_string_group' in local_var_params: + query_params.append(('required_string_group', local_var_params['required_string_group'])) # noqa: E501 + if 'required_int64_group' in local_var_params: + query_params.append(('required_int64_group', local_var_params['required_int64_group'])) # noqa: E501 if 'string_group' in local_var_params: query_params.append(('string_group', local_var_params['string_group'])) # noqa: E501 if 'int64_group' in local_var_params: query_params.append(('int64_group', local_var_params['int64_group'])) # noqa: E501 header_params = {} + if 'required_boolean_group' in local_var_params: + header_params['required_boolean_group'] = local_var_params['required_boolean_group'] # noqa: E501 if 'boolean_group' in local_var_params: header_params['boolean_group'] = local_var_params['boolean_group'] # noqa: E501 diff --git a/samples/client/petstore/python-tornado/petstore_api/api_client.py b/samples/client/petstore/python-tornado/petstore_api/api_client.py index fe0c3948a4d..ffbec16b2aa 100644 --- a/samples/client/petstore/python-tornado/petstore_api/api_client.py +++ b/samples/client/petstore/python-tornado/petstore_api/api_client.py @@ -239,11 +239,16 @@ class ApiClient(object): if response_type == "file": return self.__deserialize_file(response) - # fetch data from response object - try: - data = json.loads(response.data) - except ValueError: + try + data = response.data.decode('utf-8') + # fetch data from response object + data = json.loads(data) + except UnicodeDecodeError: + # probably data is a binary content itself data = response.data + except ValueError: + # failed to fetch data from response object + pass return self.__deserialize(data, response_type) diff --git a/samples/client/petstore/python-tornado/petstore_api/models/__init__.py b/samples/client/petstore/python-tornado/petstore_api/models/__init__.py index 2450cb334f7..393dec06333 100644 --- a/samples/client/petstore/python-tornado/petstore_api/models/__init__.py +++ b/samples/client/petstore/python-tornado/petstore_api/models/__init__.py @@ -16,7 +16,6 @@ from __future__ import absolute_import # import models into model package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -47,6 +46,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python-tornado/petstore_api/rest.py b/samples/client/petstore/python-tornado/petstore_api/rest.py index e65cc9975e3..afd7af278b7 100644 --- a/samples/client/petstore/python-tornado/petstore_api/rest.py +++ b/samples/client/petstore/python-tornado/petstore_api/rest.py @@ -32,15 +32,7 @@ class RESTResponse(io.IOBase): self.tornado_response = resp self.status = resp.code self.reason = resp.reason - - if resp.body: - # In Python 3, the response body is utf-8 encoded bytes. - if six.PY3: - self.data = resp.body.decode('utf-8') - else: - self.data = resp.body - else: - self.data = None + self.data = resp.body def getheaders(self): """Returns a CIMultiDictProxy of the response headers.""" diff --git a/samples/client/petstore/python/.openapi-generator/VERSION b/samples/client/petstore/python/.openapi-generator/VERSION index e24c1f857e0..d077ffb477a 100644 --- a/samples/client/petstore/python/.openapi-generator/VERSION +++ b/samples/client/petstore/python/.openapi-generator/VERSION @@ -1 +1 @@ -3.3.3-SNAPSHOT \ No newline at end of file +3.3.4-SNAPSHOT \ No newline at end of file diff --git a/samples/client/petstore/python/README.md b/samples/client/petstore/python/README.md index 486a96573d6..05c64828c81 100644 --- a/samples/client/petstore/python/README.md +++ b/samples/client/petstore/python/README.md @@ -111,7 +111,6 @@ Class | Method | HTTP request | Description - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md) - [Animal](docs/Animal.md) - - [AnimalFarm](docs/AnimalFarm.md) - [ApiResponse](docs/ApiResponse.md) - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md) - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md) @@ -142,7 +141,6 @@ Class | Method | HTTP request | Description - [Pet](docs/Pet.md) - [ReadOnlyFirst](docs/ReadOnlyFirst.md) - [SpecialModelName](docs/SpecialModelName.md) - - [StringBooleanMap](docs/StringBooleanMap.md) - [Tag](docs/Tag.md) - [User](docs/User.md) diff --git a/samples/client/petstore/python/docs/FakeApi.md b/samples/client/petstore/python/docs/FakeApi.md index 3d24cab0d3f..97dc3c892e0 100644 --- a/samples/client/petstore/python/docs/FakeApi.md +++ b/samples/client/petstore/python/docs/FakeApi.md @@ -488,7 +488,7 @@ No authorization required [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **test_group_parameters** -> test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) +> test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) Fake endpoint to test group parameters (optional) @@ -504,13 +504,16 @@ from pprint import pprint # create an instance of the API class api_instance = petstore_api.FakeApi() +required_string_group = 56 # int | Required String in group parameters +required_boolean_group = True # bool | Required Boolean in group parameters +required_int64_group = 56 # int | Required Integer in group parameters string_group = 56 # int | String in group parameters (optional) boolean_group = True # bool | Boolean in group parameters (optional) int64_group = 56 # int | Integer in group parameters (optional) try: # Fake endpoint to test group parameters (optional) - api_instance.test_group_parameters(string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) + api_instance.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, string_group=string_group, boolean_group=boolean_group, int64_group=int64_group) except ApiException as e: print("Exception when calling FakeApi->test_group_parameters: %s\n" % e) ``` @@ -519,6 +522,9 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- + **required_string_group** | **int**| Required String in group parameters | + **required_boolean_group** | **bool**| Required Boolean in group parameters | + **required_int64_group** | **int**| Required Integer in group parameters | **string_group** | **int**| String in group parameters | [optional] **boolean_group** | **bool**| Boolean in group parameters | [optional] **int64_group** | **int**| Integer in group parameters | [optional] diff --git a/samples/client/petstore/python/petstore_api/__init__.py b/samples/client/petstore/python/petstore_api/__init__.py index f54256a687c..88ac77881e3 100644 --- a/samples/client/petstore/python/petstore_api/__init__.py +++ b/samples/client/petstore/python/petstore_api/__init__.py @@ -30,7 +30,6 @@ from petstore_api.configuration import Configuration # import models into sdk package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -61,6 +60,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python/petstore_api/api/fake_api.py b/samples/client/petstore/python/petstore_api/api/fake_api.py index 7d40ece7a24..1647628c407 100644 --- a/samples/client/petstore/python/petstore_api/api/fake_api.py +++ b/samples/client/petstore/python/petstore_api/api/fake_api.py @@ -1009,16 +1009,19 @@ class FakeApi(object): _request_timeout=local_var_params.get('_request_timeout'), collection_formats=collection_formats) - def test_group_parameters(self, **kwargs): # noqa: E501 + def test_group_parameters(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters(async_req=True) + >>> thread = api.test_group_parameters(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1028,21 +1031,24 @@ class FakeApi(object): """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + return self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 else: - (data) = self.test_group_parameters_with_http_info(**kwargs) # noqa: E501 + (data) = self.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, **kwargs) # noqa: E501 return data - def test_group_parameters_with_http_info(self, **kwargs): # noqa: E501 + def test_group_parameters_with_http_info(self, required_string_group, required_boolean_group, required_int64_group, **kwargs): # noqa: E501 """Fake endpoint to test group parameters (optional) # noqa: E501 Fake endpoint to test group parameters (optional) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.test_group_parameters_with_http_info(async_req=True) + >>> thread = api.test_group_parameters_with_http_info(required_string_group, required_boolean_group, required_int64_group, async_req=True) >>> result = thread.get() :param async_req bool + :param int required_string_group: Required String in group parameters (required) + :param bool required_boolean_group: Required Boolean in group parameters (required) + :param int required_int64_group: Required Integer in group parameters (required) :param int string_group: String in group parameters :param bool boolean_group: Boolean in group parameters :param int int64_group: Integer in group parameters @@ -1053,7 +1059,7 @@ class FakeApi(object): local_var_params = locals() - all_params = ['string_group', 'boolean_group', 'int64_group'] # noqa: E501 + all_params = ['required_string_group', 'required_boolean_group', 'required_int64_group', 'string_group', 'boolean_group', 'int64_group'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -1067,18 +1073,36 @@ class FakeApi(object): ) local_var_params[key] = val del local_var_params['kwargs'] + # verify the required parameter 'required_string_group' is set + if ('required_string_group' not in local_var_params or + local_var_params['required_string_group'] is None): + raise ValueError("Missing the required parameter `required_string_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_boolean_group' is set + if ('required_boolean_group' not in local_var_params or + local_var_params['required_boolean_group'] is None): + raise ValueError("Missing the required parameter `required_boolean_group` when calling `test_group_parameters`") # noqa: E501 + # verify the required parameter 'required_int64_group' is set + if ('required_int64_group' not in local_var_params or + local_var_params['required_int64_group'] is None): + raise ValueError("Missing the required parameter `required_int64_group` when calling `test_group_parameters`") # noqa: E501 collection_formats = {} path_params = {} query_params = [] + if 'required_string_group' in local_var_params: + query_params.append(('required_string_group', local_var_params['required_string_group'])) # noqa: E501 + if 'required_int64_group' in local_var_params: + query_params.append(('required_int64_group', local_var_params['required_int64_group'])) # noqa: E501 if 'string_group' in local_var_params: query_params.append(('string_group', local_var_params['string_group'])) # noqa: E501 if 'int64_group' in local_var_params: query_params.append(('int64_group', local_var_params['int64_group'])) # noqa: E501 header_params = {} + if 'required_boolean_group' in local_var_params: + header_params['required_boolean_group'] = local_var_params['required_boolean_group'] # noqa: E501 if 'boolean_group' in local_var_params: header_params['boolean_group'] = local_var_params['boolean_group'] # noqa: E501 diff --git a/samples/client/petstore/python/petstore_api/api_client.py b/samples/client/petstore/python/petstore_api/api_client.py index a8acb32cf22..558fa997cb6 100644 --- a/samples/client/petstore/python/petstore_api/api_client.py +++ b/samples/client/petstore/python/petstore_api/api_client.py @@ -237,11 +237,16 @@ class ApiClient(object): if response_type == "file": return self.__deserialize_file(response) - # fetch data from response object - try: - data = json.loads(response.data) - except ValueError: + try + data = response.data.decode('utf-8') + # fetch data from response object + data = json.loads(data) + except UnicodeDecodeError: + # probably data is a binary content itself data = response.data + except ValueError: + # failed to fetch data from response object + pass return self.__deserialize(data, response_type) diff --git a/samples/client/petstore/python/petstore_api/models/__init__.py b/samples/client/petstore/python/petstore_api/models/__init__.py index 2450cb334f7..393dec06333 100644 --- a/samples/client/petstore/python/petstore_api/models/__init__.py +++ b/samples/client/petstore/python/petstore_api/models/__init__.py @@ -16,7 +16,6 @@ from __future__ import absolute_import # import models into model package from petstore_api.models.additional_properties_class import AdditionalPropertiesClass from petstore_api.models.animal import Animal -from petstore_api.models.animal_farm import AnimalFarm from petstore_api.models.api_response import ApiResponse from petstore_api.models.array_of_array_of_number_only import ArrayOfArrayOfNumberOnly from petstore_api.models.array_of_number_only import ArrayOfNumberOnly @@ -47,6 +46,5 @@ from petstore_api.models.outer_enum import OuterEnum from petstore_api.models.pet import Pet from petstore_api.models.read_only_first import ReadOnlyFirst from petstore_api.models.special_model_name import SpecialModelName -from petstore_api.models.string_boolean_map import StringBooleanMap from petstore_api.models.tag import Tag from petstore_api.models.user import User diff --git a/samples/client/petstore/python/petstore_api/rest.py b/samples/client/petstore/python/petstore_api/rest.py index 30ba5fb8d3f..47030ebbc7e 100644 --- a/samples/client/petstore/python/petstore_api/rest.py +++ b/samples/client/petstore/python/petstore_api/rest.py @@ -215,11 +215,6 @@ class RESTClientObject(object): if _preload_content: r = RESTResponse(r) - # In the python 3, the response.data is bytes. - # we need to decode it to string. - if six.PY3: - r.data = r.data.decode('utf8') - # log response body logger.debug("response body: %s", r.data) -- GitLab