diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/PythonClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/PythonClientCodegen.java index 679b3174c7c..7f9a77d3132 100755 --- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/PythonClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/PythonClientCodegen.java @@ -71,7 +71,6 @@ public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig supportingFiles.add(new SupportingFile("setup.mustache", eggPackage, "setup.py")); supportingFiles.add(new SupportingFile("api_client.mustache", invokerPackage, "api_client.py")); supportingFiles.add(new SupportingFile("rest.mustache", invokerPackage, "rest.py")); - supportingFiles.add(new SupportingFile("util.mustache", invokerPackage, "util.py")); supportingFiles.add(new SupportingFile("configuration.mustache", invokerPackage, "configuration.py")); supportingFiles.add(new SupportingFile("__init__package.mustache", invokerPackage, "__init__.py")); supportingFiles.add(new SupportingFile("__init__model.mustache", modelPackage, "__init__.py")); diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index 69c90491b95..a91797d71b6 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -27,8 +27,6 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from ..util import remove_none - from ..api_client import ApiClient {{#operations}} @@ -66,13 +64,32 @@ class {{classname}}(object): resource_path = '{{path}}'.replace('{format}', 'json') method = '{{httpMethod}}' - path_params = remove_none(dict({{#pathParams}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/pathParams}})) - query_params = remove_none(dict({{#queryParams}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/queryParams}})) - header_params = remove_none(dict({{#headerParams}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/headerParams}})) - form_params = remove_none(dict({{#formParams}}{{^isFile}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/isFile}}{{/formParams}})) - files = remove_none(dict({{#formParams}}{{#isFile}}{{baseName}}=params.get('{{paramName}}'){{#hasMore}}, {{/hasMore}}{{/isFile}}{{/formParams}})) - body_params = {{#bodyParam}}params.get('{{paramName}}'){{/bodyParam}}{{^bodyParam}}None{{/bodyParam}} - + path_params = {} + {{#pathParams}} + if '{{paramName}}' in params: + path_params['{{baseName}}'] = params['{{paramName}}'] + {{/pathParams}} + query_params = {} + {{#queryParams}} + if '{{paramName}}' in params: + query_params['{{baseName}}'] = params['{{paramName}}'] + {{/queryParams}} + header_params = {} + {{#headerParams}} + if '{{paramName}}' in params: + header_params['{{baseName}}'] = params['{{paramName}}'] + {{/headerParams}} + form_params = {} + files = {} + {{#formParams}} + 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: + 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']: 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 4ba445e2fa6..75c6e336a07 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -248,11 +248,12 @@ class ApiClient(object): if files: for k, v in iteritems(files): - 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 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 diff --git a/modules/swagger-codegen/src/main/resources/python/util.mustache b/modules/swagger-codegen/src/main/resources/python/util.mustache deleted file mode 100644 index 92df1e37e3a..00000000000 --- a/modules/swagger-codegen/src/main/resources/python/util.mustache +++ /dev/null @@ -1,16 +0,0 @@ -# coding: utf-8 - -from six import iteritems - -def remove_none(obj): - """ - Remove None from `list`, `tuple`, `set`. - Remove None value from `dict`. - """ - if isinstance(obj, (list, tuple, set)): - return type(obj)(remove_none(x) for x in obj if x is not None) - elif isinstance(obj, dict): - return type(obj)((remove_none(k), remove_none(v)) - for k, v in iteritems(obj) if k is not None and v is not None) - else: - return obj diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/api_client.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/api_client.py index 4ba445e2fa6..75c6e336a07 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/api_client.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/api_client.py @@ -248,11 +248,12 @@ class ApiClient(object): if files: for k, v in iteritems(files): - 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 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 diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py index 1a738e4c317..ec0a8c0f5fd 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/pet_api.py @@ -27,8 +27,6 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from ..util import remove_none - from ..api_client import ApiClient class PetApi(object): @@ -61,13 +59,20 @@ class PetApi(object): resource_path = '/pet'.replace('{format}', 'json') method = 'PUT' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -105,13 +110,20 @@ class PetApi(object): resource_path = '/pet'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -149,13 +161,20 @@ class PetApi(object): resource_path = '/pet/findByStatus'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict()) - query_params = remove_none(dict(status=params.get('status'))) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + query_params = {} + + if 'status' in params: + query_params['status'] = params['status'] + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -195,13 +214,20 @@ class PetApi(object): resource_path = '/pet/findByTags'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict()) - query_params = remove_none(dict(tags=params.get('tags'))) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + query_params = {} + + if 'tags' in params: + query_params['tags'] = params['tags'] + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -245,13 +271,20 @@ class PetApi(object): resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict(petId=params.get('pet_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'pet_id' in params: + path_params['petId'] = params['pet_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -297,13 +330,26 @@ class PetApi(object): resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict(petId=params.get('pet_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict(name=params.get('name'), status=params.get('status'))) - files = remove_none(dict()) + path_params = {} + + if 'pet_id' in params: + path_params['petId'] = params['pet_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + if 'name' in params: + form_params['name'] = params['name'] + + if 'status' in params: + form_params['status'] = params['status'] + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -346,13 +392,23 @@ class PetApi(object): resource_path = '/pet/{petId}'.replace('{format}', 'json') method = 'DELETE' - path_params = remove_none(dict(petId=params.get('pet_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict(api_key=params.get('api_key'))) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'pet_id' in params: + path_params['petId'] = params['pet_id'] + + query_params = {} + + header_params = {} + + if 'api_key' in params: + header_params['api_key'] = params['api_key'] + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -396,13 +452,26 @@ class PetApi(object): resource_path = '/pet/{petId}/uploadImage'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict(petId=params.get('pet_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict(additionalMetadata=params.get('additional_metadata'), )) - files = remove_none(dict(file=params.get('file'))) + path_params = {} + + if 'pet_id' in params: + path_params['petId'] = params['pet_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + if 'additional_metadata' in params: + form_params['additionalMetadata'] = params['additional_metadata'] + + if 'file' in params: + files['file'] = params['file'] + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -427,3 +496,6 @@ class PetApi(object): + + + diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py index aab7d0f11b6..03f0b2ec170 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/store_api.py @@ -27,8 +27,6 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from ..util import remove_none - from ..api_client import ApiClient class StoreApi(object): @@ -60,13 +58,17 @@ class StoreApi(object): resource_path = '/store/inventory'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -106,13 +108,20 @@ class StoreApi(object): resource_path = '/store/order'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -156,13 +165,20 @@ class StoreApi(object): resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict(orderId=params.get('order_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'order_id' in params: + path_params['orderId'] = params['order_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -206,13 +222,20 @@ class StoreApi(object): resource_path = '/store/order/{orderId}'.replace('{format}', 'json') method = 'DELETE' - path_params = remove_none(dict(orderId=params.get('order_id'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'order_id' in params: + path_params['orderId'] = params['order_id'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py index 66cb235c3d7..223566b8684 100644 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py +++ b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/apis/user_api.py @@ -27,8 +27,6 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from ..util import remove_none - from ..api_client import ApiClient class UserApi(object): @@ -61,13 +59,20 @@ class UserApi(object): resource_path = '/user'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -105,13 +110,20 @@ class UserApi(object): resource_path = '/user/createWithArray'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -149,13 +161,20 @@ class UserApi(object): resource_path = '/user/createWithList'.replace('{format}', 'json') method = 'POST' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -194,13 +213,23 @@ class UserApi(object): resource_path = '/user/login'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict()) - query_params = remove_none(dict(username=params.get('username'), password=params.get('password'))) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + query_params = {} + + if 'username' in params: + query_params['username'] = params['username'] + + if 'password' in params: + query_params['password'] = params['password'] + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -239,13 +268,17 @@ class UserApi(object): resource_path = '/user/logout'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict()) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -287,13 +320,20 @@ class UserApi(object): resource_path = '/user/{username}'.replace('{format}', 'json') method = 'GET' - path_params = remove_none(dict(username=params.get('username'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'username' in params: + path_params['username'] = params['username'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -338,13 +378,23 @@ class UserApi(object): resource_path = '/user/{username}'.replace('{format}', 'json') method = 'PUT' - path_params = remove_none(dict(username=params.get('username'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) - body_params = params.get('body') - + path_params = {} + + if 'username' in params: + path_params['username'] = params['username'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + + body_params = None + + if 'body' in params: + body_params = params['body'] + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: @@ -386,13 +436,20 @@ class UserApi(object): resource_path = '/user/{username}'.replace('{format}', 'json') method = 'DELETE' - path_params = remove_none(dict(username=params.get('username'))) - query_params = remove_none(dict()) - header_params = remove_none(dict()) - form_params = remove_none(dict()) - files = remove_none(dict()) + path_params = {} + + if 'username' in params: + path_params['username'] = params['username'] + + query_params = {} + + header_params = {} + + form_params = {} + files = {} + body_params = None - + # HTTP header `Accept` header_params['Accept'] = self.api_client.select_header_accept(['application/json', 'application/xml']) if not header_params['Accept']: diff --git a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/util.py b/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/util.py deleted file mode 100644 index 92df1e37e3a..00000000000 --- a/samples/client/petstore/python/SwaggerPetstore-python/SwaggerPetstore/util.py +++ /dev/null @@ -1,16 +0,0 @@ -# coding: utf-8 - -from six import iteritems - -def remove_none(obj): - """ - Remove None from `list`, `tuple`, `set`. - Remove None value from `dict`. - """ - if isinstance(obj, (list, tuple, set)): - return type(obj)(remove_none(x) for x in obj if x is not None) - elif isinstance(obj, dict): - return type(obj)((remove_none(k), remove_none(v)) - for k, v in iteritems(obj) if k is not None and v is not None) - else: - return obj