diff --git a/modules/swagger-codegen/src/main/resources/python/README.mustache b/modules/swagger-codegen/src/main/resources/python/README.mustache index f4e99c9fbc9..9c590a9a508 100644 --- a/modules/swagger-codegen/src/main/resources/python/README.mustache +++ b/modules/swagger-codegen/src/main/resources/python/README.mustache @@ -67,8 +67,8 @@ If you want to run the tests in all the python platforms: ```sh $ make test-all [... tox creates a virtualenv for every platform and runs tests inside of each] -py27: commands succeeded -py34: commands succeeded -congratulations :) + py27: commands succeeded + py34: commands succeeded + congratulations :) ``` diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index fa5e539a280..867014d5e12 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -5,17 +5,17 @@ {{classname}}.py Copyright 2015 SmartBear Software -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. """ @@ -31,18 +31,18 @@ from .. import configuration from ..api_client import ApiClient {{#operations}} - class {{classname}}(object): +class {{classname}}(object): def __init__(self, api_client=None): - if api_client: - self.api_client = api_client - else: - if not configuration.api_client: - configuration.api_client = ApiClient('{{basePath}}') - self.api_client = configuration.api_client - + if api_client: + self.api_client = api_client + else: + if not configuration.api_client: + configuration.api_client = ApiClient('{{basePath}}') + self.api_client = configuration.api_client + {{#operation}} - def {{nickname}}(self, {{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}**kwargs): + def {{nickname}}(self, {{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}**kwargs): """ {{{summary}}} {{{notes}}} @@ -52,17 +52,17 @@ from ..api_client import ApiClient :return: {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}None{{/returnType}} """ {{#allParams}}{{#required}} - # verify the required parameter '{{paramName}}' is set - if {{paramName}} is None: + # verify the required parameter '{{paramName}}' is set + if {{paramName}} is None: raise ValueError("Missing the required parameter `{{paramName}}` when calling `{{nickname}}`") {{/required}}{{/allParams}} all_params = [{{#allParams}}'{{paramName}}'{{#hasMore}}, {{/hasMore}}{{/allParams}}] params = locals() for key, val in iteritems(params['kwargs']): - if key not in all_params: - raise TypeError("Got an unexpected keyword argument '%s' to method {{nickname}}" % key) - params[key] = val + if key not in all_params: + raise TypeError("Got an unexpected keyword argument '%s' to method {{nickname}}" % key) + params[key] = val del params['kwargs'] resource_path = '{{path}}'.replace('{format}', 'json') @@ -70,34 +70,34 @@ from ..api_client import ApiClient path_params = {} {{#pathParams}} - if '{{paramName}}' in params: - path_params['{{baseName}}'] = params['{{paramName}}'] + if '{{paramName}}' in params: + path_params['{{baseName}}'] = params['{{paramName}}'] {{/pathParams}} query_params = {} {{#queryParams}} - if '{{paramName}}' in params: + if '{{paramName}}' in params: query_params['{{baseName}}'] = params['{{paramName}}'] {{/queryParams}} header_params = {} {{#headerParams}} - if '{{paramName}}' in params: + if '{{paramName}}' in params: header_params['{{baseName}}'] = params['{{paramName}}'] {{/headerParams}} form_params = {} files = {} {{#formParams}} - if '{{paramName}}' in params: + if '{{paramName}}' in params: {{#notFile}}form_params['{{baseName}}'] = params['{{paramName}}']{{/notFile}}{{#isFile}}files['{{baseName}}'] = params['{{paramName}}']{{/isFile}} {{/formParams}} body_params = None {{#bodyParam}} - if '{{paramName}}' in params: + if '{{paramName}}' in params: body_params = params['{{paramName}}'] {{/bodyParam}} # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept([{{#produces}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/produces}}]) if not header_params['Accept']: - del header_params['Accept'] + del header_params['Accept'] # HTTP header `Content-Type` header_params['Content-Type'] = self.api_client.select_header_content_type([{{#consumes}}'{{mediaType}}'{{#hasMore}}, {{/hasMore}}{{/consumes}}]) @@ -106,10 +106,10 @@ from ..api_client import ApiClient auth_settings = [{{#authMethods}}'{{name}}'{{#hasMore}}, {{/hasMore}}{{/authMethods}}] response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, - body=body_params, post_params=form_params, files=files, - response={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings) + body=body_params, post_params=form_params, files=files, + response={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings) {{#returnType}} - return response + return response {{/returnType}}{{/operation}} {{/operations}} diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index fc0e7c60549..b8cc4cc2a84 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -22,282 +22,282 @@ import random from six import iteritems try: -# for python3 -from urllib.parse import quote + # for python3 + from urllib.parse import quote except ImportError: -# for python2 -from urllib import quote + # for python2 + from urllib import quote from . import configuration class ApiClient(object): -""" -Generic API client for Swagger client library builds + """ + Generic API client for Swagger client library builds -:param host: The base path for the server to call -:param header_name: a header to pass when making calls to the API -:param header_value: a header value to pass when making calls to the API -""" -def __init__(self, host=configuration.host, header_name=None, header_value=None): -self.default_headers = {} -if header_name is not None: -self.default_headers[header_name] = header_value -self.host = host -self.cookie = None -# Set default User-Agent. -self.user_agent = 'Python-Swagger' + :param host: The base path for the server to call + :param header_name: a header to pass when making calls to the API + :param header_value: a header value to pass when making calls to the API + """ + def __init__(self, host=configuration.host, header_name=None, header_value=None): + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.host = host + self.cookie = None + # Set default User-Agent. + self.user_agent = 'Python-Swagger' -@property -def user_agent(self): -return self.default_headers['User-Agent'] + @property + def user_agent(self): + return self.default_headers['User-Agent'] -@user_agent.setter -def user_agent(self, value): -self.default_headers['User-Agent'] = value + @user_agent.setter + def user_agent(self, value): + self.default_headers['User-Agent'] = value -def set_default_header(self, header_name, header_value): -self.default_headers[header_name] = header_value + def set_default_header(self, header_name, header_value): + self.default_headers[header_name] = header_value -def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, -body=None, post_params=None, files=None, response=None, auth_settings=None): + def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, response=None, auth_settings=None): -# headers parameters -header_params = header_params or {} -header_params.update(self.default_headers) -if self.cookie: -header_params['Cookie'] = self.cookie -if header_params: -header_params = self.sanitize_for_serialization(header_params) + # headers parameters + header_params = header_params or {} + header_params.update(self.default_headers) + if self.cookie: + header_params['Cookie'] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) -# path parameters -if path_params: -path_params = self.sanitize_for_serialization(path_params) -for k, v in iteritems(path_params): -replacement = quote(str(self.to_path_value(v))) -resource_path = resource_path.replace('{' + k + '}', replacement) + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + for k, v in iteritems(path_params): + replacement = quote(str(self.to_path_value(v))) + resource_path = resource_path.replace('{' + k + '}', replacement) -# query parameters -if query_params: -query_params = self.sanitize_for_serialization(query_params) -query_params = {k: self.to_path_value(v) for k, v in iteritems(query_params)} + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + query_params = {k: self.to_path_value(v) for k, v in iteritems(query_params)} -# post parameters -if post_params: -post_params = self.prepare_post_parameters(post_params, files) -post_params = self.sanitize_for_serialization(post_params) + # post parameters + if post_params: + post_params = self.prepare_post_parameters(post_params, files) + post_params = self.sanitize_for_serialization(post_params) -# auth setting -self.update_params_for_auth(header_params, query_params, auth_settings) + # auth setting + self.update_params_for_auth(header_params, query_params, auth_settings) -# body -if body: -body = self.sanitize_for_serialization(body) + # body + if body: + body = self.sanitize_for_serialization(body) -# request url -url = self.host + resource_path + # request url + url = self.host + resource_path -# perform request and return response -response_data = self.request(method, url, query_params=query_params, headers=header_params, -post_params=post_params, body=body) + # perform request and return response + response_data = self.request(method, url, query_params=query_params, headers=header_params, + post_params=post_params, body=body) -# deserialize response data -if response: -return self.deserialize(response_data, response) -else: -return None + # deserialize response data + if response: + return self.deserialize(response_data, response) + else: + return None -def to_path_value(self, obj): -""" -Convert a string or object to a path-friendly value + def to_path_value(self, obj): + """ + Convert a string or object to a path-friendly value -:param obj: object or string value + :param obj: object or string value -:return string: quoted value -""" -if type(obj) == list: -return ','.join(obj) -else: -return str(obj) + :return string: quoted value + """ + if type(obj) == list: + return ','.join(obj) + else: + return str(obj) -def sanitize_for_serialization(self, obj): -""" -Sanitize an object for Request. + def sanitize_for_serialization(self, obj): + """ + Sanitize an object for Request. -If obj is None, return None. -If obj is str, int, float, bool, return directly. -If obj is datetime.datetime, datetime.date convert to string in iso8601 format. -If obj is list, santize each element in the list. -If obj is dict, return the dict. -If obj is swagger model, return the properties dict. -""" -if isinstance(obj, type(None)): -return None -elif isinstance(obj, (str, int, float, bool, tuple)): -return obj -elif isinstance(obj, list): -return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj] -elif isinstance(obj, (datetime.datetime, datetime.date)): -return obj.isoformat() -else: -if isinstance(obj, dict): -obj_dict = obj -else: -# Convert model obj to dict except attributes `swagger_types`, `attribute_map` -# and attributes which value is not None. -# Convert attribute name to json key in model definition for request. -obj_dict = {obj.attribute_map[key]: val -for key, val in iteritems(obj.__dict__) -if key != 'swagger_types' and key != 'attribute_map' and val is not None} -return {key: self.sanitize_for_serialization(val) -for key, val in iteritems(obj_dict)} + If obj is None, return None. + If obj is str, int, float, bool, return directly. + If obj is datetime.datetime, datetime.date convert to string in iso8601 format. + If obj is list, santize each element in the list. + If obj is dict, return the dict. + If obj is swagger model, return the properties dict. + """ + if isinstance(obj, type(None)): + return None + elif isinstance(obj, (str, int, float, bool, tuple)): + return obj + elif isinstance(obj, list): + return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj] + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + else: + if isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except attributes `swagger_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in model definition for request. + obj_dict = {obj.attribute_map[key]: val + for key, val in iteritems(obj.__dict__) + if key != 'swagger_types' and key != 'attribute_map' and val is not None} + return {key: self.sanitize_for_serialization(val) + for key, val in iteritems(obj_dict)} -def deserialize(self, obj, obj_class): -""" -Derialize a JSON string into an object. + def deserialize(self, obj, obj_class): + """ + Derialize a JSON string into an object. -:param obj: string or object to be deserialized -:param obj_class: class literal for deserialzied object, or string of class name + :param obj: string or object to be deserialized + :param obj_class: class literal for deserialzied object, or string of class name -:return object: deserialized object -""" -# Have to accept obj_class as string or actual type. Type could be a -# native Python type, or one of the model classes. -if type(obj_class) == str: -if 'list[' in obj_class: -match = re.match('list\[(.*)\]', obj_class) -sub_class = match.group(1) -return [self.deserialize(sub_obj, sub_class) for sub_obj in obj] + :return object: deserialized object + """ + # Have to accept obj_class as string or actual type. Type could be a + # native Python type, or one of the model classes. + if type(obj_class) == str: + if 'list[' in obj_class: + match = re.match('list\[(.*)\]', obj_class) + sub_class = match.group(1) + return [self.deserialize(sub_obj, sub_class) for sub_obj in obj] -if obj_class in ['int', 'float', 'dict', 'list', 'str', 'bool', 'datetime']: -obj_class = eval(obj_class) -else: # not a native type, must be model class -obj_class = eval('models.' + obj_class) + if obj_class in ['int', 'float', 'dict', 'list', 'str', 'bool', 'datetime']: + obj_class = eval(obj_class) + else: # not a native type, must be model class + obj_class = eval('models.' + obj_class) -if obj_class in [int, float, dict, list, str, bool]: -return obj_class(obj) -elif obj_class == datetime: -return self.__parse_string_to_datetime(obj) + if obj_class in [int, float, dict, list, str, bool]: + return obj_class(obj) + elif obj_class == datetime: + return self.__parse_string_to_datetime(obj) -instance = obj_class() + instance = obj_class() -for attr, attr_type in iteritems(instance.swagger_types): -if obj is not None and instance.attribute_map[attr] in obj and type(obj) in [list, dict]: -value = obj[instance.attribute_map[attr]] -if attr_type in ['str', 'int', 'float', 'bool']: -attr_type = eval(attr_type) -try: -value = attr_type(value) -except UnicodeEncodeError: -value = unicode(value) -except TypeError: -value = value -setattr(instance, attr, value) -elif attr_type == 'datetime': -setattr(instance, attr, self.__parse_string_to_datetime(value)) -elif 'list[' in attr_type: -match = re.match('list\[(.*)\]', attr_type) -sub_class = match.group(1) -sub_values = [] -if not value: -setattr(instance, attr, None) -else: -for sub_value in value: -sub_values.append(self.deserialize(sub_value, sub_class)) -setattr(instance, attr, sub_values) -else: -setattr(instance, attr, self.deserialize(value, attr_type)) + for attr, attr_type in iteritems(instance.swagger_types): + if obj is not None and instance.attribute_map[attr] in obj and type(obj) in [list, dict]: + value = obj[instance.attribute_map[attr]] + if attr_type in ['str', 'int', 'float', 'bool']: + attr_type = eval(attr_type) + try: + value = attr_type(value) + except UnicodeEncodeError: + value = unicode(value) + except TypeError: + value = value + setattr(instance, attr, value) + elif attr_type == 'datetime': + setattr(instance, attr, self.__parse_string_to_datetime(value)) + elif 'list[' in attr_type: + match = re.match('list\[(.*)\]', attr_type) + sub_class = match.group(1) + sub_values = [] + if not value: + setattr(instance, attr, None) + else: + for sub_value in value: + sub_values.append(self.deserialize(sub_value, sub_class)) + setattr(instance, attr, sub_values) + else: + setattr(instance, attr, self.deserialize(value, attr_type)) -return instance + return instance -def __parse_string_to_datetime(self, string): -""" -Parse datetime in string to datetime. + def __parse_string_to_datetime(self, string): + """ + Parse datetime in string to datetime. -The string should be in iso8601 datetime format. -""" -try: -from dateutil.parser import parse -return parse(string) -except ImportError: -return string + The string should be in iso8601 datetime format. + """ + try: + from dateutil.parser import parse + return parse(string) + except ImportError: + return string -def request(self, method, url, query_params=None, headers=None, post_params=None, body=None): -""" -Perform http request using RESTClient. -""" -if method == "GET": -return RESTClient.GET(url, query_params=query_params, headers=headers) -elif method == "HEAD": -return RESTClient.HEAD(url, query_params=query_params, headers=headers) -elif method == "POST": -return RESTClient.POST(url, headers=headers, post_params=post_params, body=body) -elif method == "PUT": -return RESTClient.PUT(url, headers=headers, post_params=post_params, body=body) -elif method == "PATCH": -return RESTClient.PATCH(url, headers=headers, post_params=post_params, body=body) -elif method == "DELETE": -return RESTClient.DELETE(url, query_params=query_params, headers=headers) -else: -raise ValueError("http method must be `GET`, `HEAD`, `POST`, `PATCH`, `PUT` or `DELETE`") + def request(self, method, url, query_params=None, headers=None, post_params=None, body=None): + """ + Perform http request using RESTClient. + """ + if method == "GET": + return RESTClient.GET(url, query_params=query_params, headers=headers) + elif method == "HEAD": + return RESTClient.HEAD(url, query_params=query_params, headers=headers) + elif method == "POST": + return RESTClient.POST(url, headers=headers, post_params=post_params, body=body) + elif method == "PUT": + return RESTClient.PUT(url, headers=headers, post_params=post_params, body=body) + elif method == "PATCH": + return RESTClient.PATCH(url, headers=headers, post_params=post_params, body=body) + elif method == "DELETE": + return RESTClient.DELETE(url, query_params=query_params, headers=headers) + else: + raise ValueError("http method must be `GET`, `HEAD`, `POST`, `PATCH`, `PUT` or `DELETE`") -def prepare_post_parameters(self, post_params=None, files=None): -params = {} + def prepare_post_parameters(self, post_params=None, files=None): + params = {} -if post_params: -params.update(post_params) + if post_params: + params.update(post_params) -if files: -for k, v in iteritems(files): -if v: -with open(v, 'rb') as f: -filename = os.path.basename(f.name) -filedata = f.read() -mimetype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' -params[k] = tuple([filename, filedata, mimetype]) + if files: + for k, v in iteritems(files): + if v: + with open(v, 'rb') as f: + filename = os.path.basename(f.name) + filedata = f.read() + mimetype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' + params[k] = tuple([filename, filedata, mimetype]) -return params + return params -def select_header_accept(self, accepts): -""" -Return `Accept` based on an array of accepts provided -""" -if not accepts: -return + def select_header_accept(self, accepts): + """ + Return `Accept` based on an array of accepts provided + """ + if not accepts: + return -accepts = list(map(lambda x: x.lower(), accepts)) + accepts = list(map(lambda x: x.lower(), accepts)) -if 'application/json' in accepts: -return 'application/json' -else: -return ', '.join(accepts) + if 'application/json' in accepts: + return 'application/json' + else: + return ', '.join(accepts) -def select_header_content_type(self, content_types): -""" -Return `Content-Type` baseed on an array of content_types provided -""" -if not content_types: -return 'application/json' + def select_header_content_type(self, content_types): + """ + Return `Content-Type` baseed on an array of content_types provided + """ + if not content_types: + return 'application/json' -content_types = list(map(lambda x: x.lower(), content_types)) + content_types = list(map(lambda x: x.lower(), content_types)) -if 'application/json' in content_types: -return 'application/json' -else: -return content_types[0] + if 'application/json' in content_types: + return 'application/json' + else: + return content_types[0] -def update_params_for_auth(self, headers, querys, auth_settings): -""" -Update header and query params based on authentication setting -""" -if not auth_settings: -return - -for auth in auth_settings: -auth_setting = configuration.auth_settings().get(auth) -if auth_setting: -if auth_setting['in'] == 'header': -headers[auth_setting['key']] = auth_setting['value'] -elif auth_setting['in'] == 'query': -querys[auth_setting['key']] = auth_setting['value'] -else: -raise ValueError('Authentication token must be in `query` or `header`') + def update_params_for_auth(self, headers, querys, auth_settings): + """ + Update header and query params based on authentication setting + """ + if not auth_settings: + return + + for auth in auth_settings: + auth_setting = configuration.auth_settings().get(auth) + if auth_setting: + if auth_setting['in'] == 'header': + headers[auth_setting['key']] = auth_setting['value'] + elif auth_setting['in'] == 'query': + querys[auth_setting['key']] = auth_setting['value'] + else: + raise ValueError('Authentication token must be in `query` or `header`') diff --git a/modules/swagger-codegen/src/main/resources/python/configuration.mustache b/modules/swagger-codegen/src/main/resources/python/configuration.mustache index 967fabccd99..d3a7093a02a 100644 --- a/modules/swagger-codegen/src/main/resources/python/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/python/configuration.mustache @@ -3,44 +3,44 @@ import base64 import urllib3 def get_api_key_with_prefix(key): -global api_key -global api_key_prefix + global api_key + global api_key_prefix -if api_key.get(key) and api_key_prefix.get(key): -return api_key_prefix[key] + ' ' + api_key[key] -elif api_key.get(key): -return api_key[key] + if api_key.get(key) and api_key_prefix.get(key): + return api_key_prefix[key] + ' ' + api_key[key] + elif api_key.get(key): + return api_key[key] def get_basic_auth_token(): -global username -global password + global username + global password -return urllib3.util.make_headers(basic_auth=username + ':' + password).get('authorization') + return urllib3.util.make_headers(basic_auth=username + ':' + password).get('authorization') def auth_settings(): -return { {{#authMethods}}{{#isApiKey}} - '{{name}}': { - 'type': 'api_key', - 'in': {{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}, - 'key': '{{keyParamName}}', - 'value': get_api_key_with_prefix('{{keyParamName}}') - }, -{{/isApiKey}}{{#isBasic}} - '{{name}}': { - 'type': 'basic', - 'in': 'header', - 'key': 'Authorization', - 'value': get_basic_auth_token() - }, -{{/isBasic}}{{/authMethods}} -} + return { {{#authMethods}}{{#isApiKey}} + '{{name}}': { + 'type': 'api_key', + 'in': {{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}, + 'key': '{{keyParamName}}', + 'value': get_api_key_with_prefix('{{keyParamName}}') + }, + {{/isApiKey}}{{#isBasic}} + '{{name}}': { + 'type': 'basic', + 'in': 'header', + 'key': 'Authorization', + 'value': get_basic_auth_token() + }, + {{/isBasic}}{{/authMethods}} + } # Default Base url host = "{{basePath}}" # Default api client api_client = None - + # Authentication settings api_key = {} diff --git a/modules/swagger-codegen/src/main/resources/python/model.mustache b/modules/swagger-codegen/src/main/resources/python/model.mustache index 629bc0342d3..429eac33ec5 100644 --- a/modules/swagger-codegen/src/main/resources/python/model.mustache +++ b/modules/swagger-codegen/src/main/resources/python/model.mustache @@ -4,28 +4,28 @@ """ Copyright 2015 SmartBear Software -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at -http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. """ {{#models}} - {{#model}} +{{#model}} - class {{classname}}(object): - """ - NOTE: This class is auto generated by the swagger code generator program. - Do not edit the class manually. - """ +class {{classname}}(object): + """ + NOTE: This class is auto generated by the swagger code generator program. + Do not edit the class manually. + """ - def __init__(self): + def __init__(self): """ Swagger model @@ -33,27 +33,27 @@ limitations under the License. :param dict attributeMap: The key is attribute name and the value is json key in definition. """ self.swagger_types = { - {{#vars}}'{{name}}': '{{{datatype}}}'{{#hasMore}}, - {{/hasMore}}{{/vars}} + {{#vars}}'{{name}}': '{{{datatype}}}'{{#hasMore}}, + {{/hasMore}}{{/vars}} } self.attribute_map = { - {{#vars}}'{{name}}': '{{baseName}}'{{#hasMore}}, - {{/hasMore}}{{/vars}} + {{#vars}}'{{name}}': '{{baseName}}'{{#hasMore}}, + {{/hasMore}}{{/vars}} } {{#vars}} - {{#description}}# {{description}}{{/description}} - self.{{name}} = None # {{{datatype}}} + {{#description}}# {{description}}{{/description}} + self.{{name}} = None # {{{datatype}}} {{/vars}} - def __repr__(self): + def __repr__(self): properties = [] for p in self.__dict__: - if p != 'swaggerTypes' and p != 'attributeMap': - properties.append('{prop}={val!r}'.format(prop=p, val=self.__dict__[p])) + if p != 'swaggerTypes' and p != 'attributeMap': + properties.append('{prop}={val!r}'.format(prop=p, val=self.__dict__[p])) return '<{name} {props}>'.format(name=__name__, props=' '.join(properties)) - {{/model}} +{{/model}} {{/models}} diff --git a/modules/swagger-codegen/src/main/resources/python/rest.mustache b/modules/swagger-codegen/src/main/resources/python/rest.mustache index d5c79d8395a..508f3d6693a 100644 --- a/modules/swagger-codegen/src/main/resources/python/rest.mustache +++ b/modules/swagger-codegen/src/main/resources/python/rest.mustache @@ -15,239 +15,239 @@ import certifi from six import iteritems try: -import urllib3 + import urllib3 except ImportError: -raise ImportError('Swagger python client requires urllib3.') + raise ImportError('Swagger python client requires urllib3.') try: -# for python3 -from urllib.parse import urlencode + # for python3 + from urllib.parse import urlencode except ImportError: -# for python2 -from urllib import urlencode + # for python2 + from urllib import urlencode class RESTResponse(io.IOBase): -def __init__(self, resp): -self.urllib3_response = resp -self.status = resp.status -self.reason = resp.reason -self.data = resp.data + def __init__(self, resp): + self.urllib3_response = resp + self.status = resp.status + self.reason = resp.reason + self.data = resp.data -def getheaders(self): -""" -Returns a dictionary of the response headers. -""" -return self.urllib3_response.getheaders() + def getheaders(self): + """ + Returns a dictionary of the response headers. + """ + return self.urllib3_response.getheaders() -def getheader(self, name, default=None): -""" -Returns a given response header. -""" -return self.urllib3_response.getheader(name, default) + def getheader(self, name, default=None): + """ + Returns a given response header. + """ + return self.urllib3_response.getheader(name, default) class RESTClientObject(object): -def __init__(self, pools_size=4): -# http pool manager -self.pool_manager = urllib3.PoolManager( -num_pools=pools_size -) + def __init__(self, pools_size=4): + # http pool manager + self.pool_manager = urllib3.PoolManager( + num_pools=pools_size + ) -# https pool manager -# certificates validated using Mozilla’s root certificates -self.ssl_pool_manager = urllib3.PoolManager( -num_pools=pools_size, -cert_reqs=ssl.CERT_REQUIRED, -ca_certs=certifi.where() -) + # https pool manager + # certificates validated using Mozilla’s root certificates + self.ssl_pool_manager = urllib3.PoolManager( + num_pools=pools_size, + cert_reqs=ssl.CERT_REQUIRED, + ca_certs=certifi.where() + ) -def agent(self, url): -""" -Return proper pool manager for the http\https schemes. -""" -url = urllib3.util.url.parse_url(url) -scheme = url.scheme -if scheme == 'https': -return self.ssl_pool_manager -else: -return self.pool_manager + def agent(self, url): + """ + Return proper pool manager for the http\https schemes. + """ + url = urllib3.util.url.parse_url(url) + scheme = url.scheme + if scheme == 'https': + return self.ssl_pool_manager + else: + return self.pool_manager -def request(self, method, url, query_params=None, headers=None, -body=None, post_params=None): -""" -:param method: http request method -:param url: http request url -:param query_params: query parameters in the url -:param headers: http request headers -:param body: request json body, for `application/json` -:param post_params: request post parameters, `application/x-www-form-urlencode` -and `multipart/form-data` -""" -method = method.upper() -assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', 'PATCH'] + def request(self, method, url, query_params=None, headers=None, + body=None, post_params=None): + """ + :param method: http request method + :param url: http request url + :param query_params: query parameters in the url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, `application/x-www-form-urlencode` + and `multipart/form-data` + """ + method = method.upper() + assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT', 'PATCH'] -if post_params and body: -raise ValueError("body parameter cannot be used with post_params parameter.") + if post_params and body: + raise ValueError("body parameter cannot be used with post_params parameter.") -post_params = post_params or {} -headers = headers or {} + post_params = post_params or {} + headers = headers or {} -if 'Content-Type' not in headers: -headers['Content-Type'] = 'application/json' + if 'Content-Type' not in headers: + headers['Content-Type'] = 'application/json' -# For `POST`, `PUT`, `PATCH` -if method in ['POST', 'PUT', 'PATCH']: -if query_params: -url += '?' + urlencode(query_params) -if headers['Content-Type'] == 'application/json': -r = self.agent(url).request(method, url, -body=json.dumps(body), -headers=headers) -if headers['Content-Type'] == 'application/x-www-form-urlencoded': -r = self.agent(url).request(method, url, -fields=post_params, -encode_multipart=False, -headers=headers) -if headers['Content-Type'] == 'multipart/form-data': -# must del headers['Content-Type'], or the correct Content-Type -# which generated by urllib3 will be overwritten. -del headers['Content-Type'] -r = self.agent(url).request(method, url, -fields=post_params, -encode_multipart=True, -headers=headers) -# For `GET`, `HEAD`, `DELETE` -else: -r = self.agent(url).request(method, url, -fields=query_params, -headers=headers) -r = RESTResponse(r) + # For `POST`, `PUT`, `PATCH` + if method in ['POST', 'PUT', 'PATCH']: + if query_params: + url += '?' + urlencode(query_params) + if headers['Content-Type'] == 'application/json': + r = self.agent(url).request(method, url, + body=json.dumps(body), + headers=headers) + if headers['Content-Type'] == 'application/x-www-form-urlencoded': + r = self.agent(url).request(method, url, + fields=post_params, + encode_multipart=False, + headers=headers) + if headers['Content-Type'] == 'multipart/form-data': + # must del headers['Content-Type'], or the correct Content-Type + # which generated by urllib3 will be overwritten. + del headers['Content-Type'] + r = self.agent(url).request(method, url, + fields=post_params, + encode_multipart=True, + headers=headers) + # For `GET`, `HEAD`, `DELETE` + else: + r = self.agent(url).request(method, url, + fields=query_params, + headers=headers) + r = RESTResponse(r) -if r.status not in range(200, 206): -raise ApiException(r) + if r.status not in range(200, 206): + raise ApiException(r) -return self.process_response(r) + return self.process_response(r) -def process_response(self, response): -# In the python 3, the response.data is bytes. -# we need to decode it to string. -if sys.version_info > (3,): -data = response.data.decode('utf8') -else: -data = response.data -try: -resp = json.loads(data) -except ValueError: -resp = data + def process_response(self, response): + # In the python 3, the response.data is bytes. + # we need to decode it to string. + if sys.version_info > (3,): + data = response.data.decode('utf8') + else: + data = response.data + try: + resp = json.loads(data) + except ValueError: + resp = data -return resp + return resp -def GET(self, url, headers=None, query_params=None): -return self.request("GET", url, headers=headers, query_params=query_params) + def GET(self, url, headers=None, query_params=None): + return self.request("GET", url, headers=headers, query_params=query_params) -def HEAD(self, url, headers=None, query_params=None): -return self.request("HEAD", url, headers=headers, query_params=query_params) + def HEAD(self, url, headers=None, query_params=None): + return self.request("HEAD", url, headers=headers, query_params=query_params) -def DELETE(self, url, headers=None, query_params=None): -return self.request("DELETE", url, headers=headers, query_params=query_params) + def DELETE(self, url, headers=None, query_params=None): + return self.request("DELETE", url, headers=headers, query_params=query_params) -def POST(self, url, headers=None, post_params=None, body=None): -return self.request("POST", url, headers=headers, post_params=post_params, body=body) + def POST(self, url, headers=None, post_params=None, body=None): + return self.request("POST", url, headers=headers, post_params=post_params, body=body) -def PUT(self, url, headers=None, post_params=None, body=None): -return self.request("PUT", url, headers=headers, post_params=post_params, body=body) + def PUT(self, url, headers=None, post_params=None, body=None): + return self.request("PUT", url, headers=headers, post_params=post_params, body=body) -def PATCH(self, url, headers=None, post_params=None, body=None): -return self.request("PATCH", url, headers=headers, post_params=post_params, body=body) + def PATCH(self, url, headers=None, post_params=None, body=None): + return self.request("PATCH", url, headers=headers, post_params=post_params, body=body) class ApiException(Exception): -""" -Non-2xx HTTP response -""" + """ + Non-2xx HTTP response + """ -def __init__(self, http_resp): -self.status = http_resp.status -self.reason = http_resp.reason -self.body = http_resp.data -self.headers = http_resp.getheaders() + def __init__(self, http_resp): + self.status = http_resp.status + self.reason = http_resp.reason + self.body = http_resp.data + self.headers = http_resp.getheaders() -# In the python 3, the self.body is bytes. -# we need to decode it to string. -if sys.version_info > (3,): -data = self.body.decode('utf8') -else: -data = self.body + # In the python 3, the self.body is bytes. + # we need to decode it to string. + if sys.version_info > (3,): + data = self.body.decode('utf8') + else: + data = self.body + + try: + self.body = json.loads(data) + except ValueError: + self.body = data -try: -self.body = json.loads(data) -except ValueError: -self.body = data - -def __str__(self): -""" -Custom error response messages -""" -return "({0})\n"\ -"Reason: {1}\n"\ -"HTTP response headers: {2}\n"\ -"HTTP response body: {3}\n".\ -format(self.status, self.reason, self.headers, self.body) + def __str__(self): + """ + Custom error response messages + """ + return "({0})\n"\ + "Reason: {1}\n"\ + "HTTP response headers: {2}\n"\ + "HTTP response body: {3}\n".\ + format(self.status, self.reason, self.headers, self.body) class RESTClient(object): -""" -A class with all class methods to perform JSON requests. -""" + """ + A class with all class methods to perform JSON requests. + """ -IMPL = RESTClientObject() + IMPL = RESTClientObject() -@classmethod -def request(cls, *n, **kw): -""" -Perform a REST request and parse the response. -""" -return cls.IMPL.request(*n, **kw) + @classmethod + def request(cls, *n, **kw): + """ + Perform a REST request and parse the response. + """ + return cls.IMPL.request(*n, **kw) -@classmethod -def GET(cls, *n, **kw): -""" -Perform a GET request using `RESTClient.request()`. -""" -return cls.IMPL.GET(*n, **kw) + @classmethod + def GET(cls, *n, **kw): + """ + Perform a GET request using `RESTClient.request()`. + """ + return cls.IMPL.GET(*n, **kw) -@classmethod -def HEAD(cls, *n, **kw): -""" -Perform a HEAD request using `RESTClient.request()`. -""" -return cls.IMPL.GET(*n, **kw) + @classmethod + def HEAD(cls, *n, **kw): + """ + Perform a HEAD request using `RESTClient.request()`. + """ + return cls.IMPL.GET(*n, **kw) -@classmethod -def POST(cls, *n, **kw): -""" -Perform a POST request using `RESTClient.request()` -""" -return cls.IMPL.POST(*n, **kw) + @classmethod + def POST(cls, *n, **kw): + """ + Perform a POST request using `RESTClient.request()` + """ + return cls.IMPL.POST(*n, **kw) -@classmethod -def PUT(cls, *n, **kw): -""" -Perform a PUT request using `RESTClient.request()` -""" -return cls.IMPL.PUT(*n, **kw) + @classmethod + def PUT(cls, *n, **kw): + """ + Perform a PUT request using `RESTClient.request()` + """ + return cls.IMPL.PUT(*n, **kw) -@classmethod -def PATCH(cls, *n, **kw): -""" -Perform a PATCH request using `RESTClient.request()` -""" -return cls.IMPL.PATCH(*n, **kw) + @classmethod + def PATCH(cls, *n, **kw): + """ + Perform a PATCH request using `RESTClient.request()` + """ + return cls.IMPL.PATCH(*n, **kw) -@classmethod -def DELETE(cls, *n, **kw): -""" -Perform a DELETE request using `RESTClient.request()` -""" -return cls.IMPL.DELETE(*n, **kw) + @classmethod + def DELETE(cls, *n, **kw): + """ + Perform a DELETE request using `RESTClient.request()` + """ + return cls.IMPL.DELETE(*n, **kw) diff --git a/modules/swagger-codegen/src/main/resources/python/setup.mustache b/modules/swagger-codegen/src/main/resources/python/setup.mustache index 59c8f7f428a..f1ba52d2930 100644 --- a/modules/swagger-codegen/src/main/resources/python/setup.mustache +++ b/modules/swagger-codegen/src/main/resources/python/setup.mustache @@ -3,18 +3,18 @@ from setuptools import setup, find_packages {{#apiInfo}}{{#apis}}{{^hasMore}} - # To install the library, open a Terminal shell, then run this - # file by typing: - # - # python setup.py install - # - # You need to have the setuptools module installed. - # Try reading the setuptools documentation: - # http://pypi.python.org/pypi/setuptools +# To install the library, open a Terminal shell, then run this +# file by typing: +# +# python setup.py install +# +# You need to have the setuptools module installed. +# Try reading the setuptools documentation: +# http://pypi.python.org/pypi/setuptools - REQUIRES = ["urllib3 >= 1.10", "six >= 1.9", "certifi"] +REQUIRES = ["urllib3 >= 1.10", "six >= 1.9", "certifi"] - setup( +setup( name="{{module}}", version="{{version}}", description="{{appName}}", @@ -27,7 +27,7 @@ from setuptools import setup, find_packages long_description="""\ {{appDescription}} """ - ) +) {{/hasMore}}{{/apis}}{{/apiInfo}}