diff --git a/templates/python/base/params.twig b/templates/python/base/params.twig index 8a574ec96..0609239f0 100644 --- a/templates/python/base/params.twig +++ b/templates/python/base/params.twig @@ -1,10 +1,16 @@ api_params = {} + nullable_params = [] + {% if method.parameters.all | length %} {% for parameter in method.parameters.all %} {% if parameter.required and not parameter.nullable %} if {{ parameter.name | escapeKeyword | caseSnake }} is None: raise {{spec.title | caseUcfirst}}Exception('Missing required parameter: "{{ parameter.name | escapeKeyword | caseSnake }}"') +{% endif %} +{% if parameter.nullable %} + nullable_params.append('{{ parameter.name }}') + {% endif %} {% endfor %} {% for parameter in method.parameters.path %} diff --git a/templates/python/base/requests/api.twig b/templates/python/base/requests/api.twig index 82ef6299f..84ec4ffc9 100644 --- a/templates/python/base/requests/api.twig +++ b/templates/python/base/requests/api.twig @@ -5,4 +5,4 @@ {% for key, header in method.headers %} '{{ key }}': '{{ header }}', {% endfor %} - }, api_params{% if method.type == 'webAuth' %}, response_type='location'{% endif %}) \ No newline at end of file + }, api_params, nullable_params{% if method.type == 'webAuth' %}, response_type='location'{% endif %}) \ No newline at end of file diff --git a/templates/python/package/client.py.twig b/templates/python/package/client.py.twig index f9d4b90f1..db2ad5f7b 100644 --- a/templates/python/package/client.py.twig +++ b/templates/python/package/client.py.twig @@ -49,14 +49,18 @@ class Client: return self {% endfor %} - def call(self, method, path='', headers=None, params=None, response_type='json'): + def call(self, method, path='', headers=None, params=None, nullable_params=None, response_type='json'): if headers is None: headers = {} if params is None: params = {} - params = {k: v for k, v in params.items() if v is not None} # Remove None values from params dictionary + if nullable_params is None: + nullable_params = [] + + # Only filter out None values for non-nullable params + params = {k: v for k, v in params.items() if v is not None or k in nullable_params} data = {} files = {}