From e8484c71606e193bc1d767e4636e1ad77389936c Mon Sep 17 00:00:00 2001 From: John Sorial Date: Mon, 20 Dec 2021 13:59:23 +0100 Subject: [PATCH 1/4] fix: _get_kwargs bool headers are now converted to strings --- openapi_python_client/__init__.py | 11 +++++++++-- .../templates/endpoint_macros.py.jinja | 6 +++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/openapi_python_client/__init__.py b/openapi_python_client/__init__.py index 608af8dce..5f11e3dc3 100644 --- a/openapi_python_client/__init__.py +++ b/openapi_python_client/__init__.py @@ -267,7 +267,9 @@ def _build_api(self) -> None: encoding=self.file_encoding, ) - endpoint_template = self.env.get_template("endpoint_module.py.jinja") + endpoint_template = self.env.get_template( + "endpoint_module.py.jinja", globals={"isbool": lambda obj: obj.get_base_type_string() == "bool"} + ) for tag, collection in endpoint_collections_by_tag.items(): tag_dir = api_dir / tag tag_dir.mkdir() @@ -281,7 +283,12 @@ def _build_api(self) -> None: for endpoint in collection.endpoints: module_path = tag_dir / f"{utils.PythonIdentifier(endpoint.name, self.config.field_prefix)}.py" - module_path.write_text(endpoint_template.render(endpoint=endpoint), encoding=self.file_encoding) + module_path.write_text( + endpoint_template.render( + endpoint=endpoint, + ), + encoding=self.file_encoding, + ) def _get_project_for_url_or_path( # pylint: disable=too-many-arguments diff --git a/openapi_python_client/templates/endpoint_macros.py.jinja b/openapi_python_client/templates/endpoint_macros.py.jinja index 36c65d7e2..bf294b1c0 100644 --- a/openapi_python_client/templates/endpoint_macros.py.jinja +++ b/openapi_python_client/templates/endpoint_macros.py.jinja @@ -5,7 +5,11 @@ headers["{{ parameter.name | kebabcase}}"] = {{ parameter.python_name }} {% else %} if {{ parameter.python_name }} is not UNSET: - headers["{{ parameter.name | kebabcase}}"] = {{ parameter.python_name }} + headers["{{ parameter.name | kebabcase}}"] = {% if isbool(parameter) %} + str({{ parameter.python_name }}) + {% else %} + {{ parameter.python_name}} + {% endif %} {% endif %} {% endfor %} {% endif %} From 9d47d0180856b667ce987a268fa15adcb903d06a Mon Sep 17 00:00:00 2001 From: John Sorial Date: Tue, 4 Jan 2022 21:04:07 +0100 Subject: [PATCH 2/4] Fixed for required boolean header --- openapi_python_client/templates/endpoint_macros.py.jinja | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openapi_python_client/templates/endpoint_macros.py.jinja b/openapi_python_client/templates/endpoint_macros.py.jinja index bf294b1c0..d7af8bf02 100644 --- a/openapi_python_client/templates/endpoint_macros.py.jinja +++ b/openapi_python_client/templates/endpoint_macros.py.jinja @@ -2,7 +2,11 @@ {% if endpoint.header_parameters %} {% for parameter in endpoint.header_parameters.values() %} {% if parameter.required %} -headers["{{ parameter.name | kebabcase}}"] = {{ parameter.python_name }} +headers["{{ parameter.name | kebabcase}}"] = {% if isbool(parameter) %} + str({{ parameter.python_name }}) + {% else %} + {{ parameter.python_name}} + {% endif %} {% else %} if {{ parameter.python_name }} is not UNSET: headers["{{ parameter.name | kebabcase}}"] = {% if isbool(parameter) %} From 24a1af28e1562c4fcd8a57fdc1b603829d7aafad Mon Sep 17 00:00:00 2001 From: John Sorial Date: Tue, 4 Jan 2022 21:10:26 +0100 Subject: [PATCH 3/4] Fixed GoldenRecord to accept the new str(bool) header --- .../api/tests/upload_file_tests_upload_post.py | 2 +- .../api/tests/upload_multiple_files_tests_upload_post.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py index a3f4d03c7..128a30145 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py +++ b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py @@ -20,7 +20,7 @@ def _get_kwargs( cookies: Dict[str, Any] = client.get_cookies() if keep_alive is not UNSET: - headers["keep-alive"] = keep_alive + headers["keep-alive"] = str(keep_alive) multipart_multipart_data = multipart_data.to_multipart() diff --git a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py index 553bc619a..724bc0bce 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py +++ b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py @@ -19,7 +19,7 @@ def _get_kwargs( cookies: Dict[str, Any] = client.get_cookies() if keep_alive is not UNSET: - headers["keep-alive"] = keep_alive + headers["keep-alive"] = str(keep_alive) multipart_multipart_data = [] for multipart_data_item_data in multipart_data: From bb3fc395566e80558692890b2fd7559d5cb9dce4 Mon Sep 17 00:00:00 2001 From: John Sorial Date: Tue, 11 Jan 2022 21:16:35 +0100 Subject: [PATCH 4/4] Boolean Headers are now lowercase --- .../api/tests/upload_file_tests_upload_post.py | 2 +- .../api/tests/upload_multiple_files_tests_upload_post.py | 2 +- openapi_python_client/templates/endpoint_macros.py.jinja | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py index 128a30145..1f3e26273 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py +++ b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py @@ -20,7 +20,7 @@ def _get_kwargs( cookies: Dict[str, Any] = client.get_cookies() if keep_alive is not UNSET: - headers["keep-alive"] = str(keep_alive) + headers["keep-alive"] = str(keep_alive).lower() multipart_multipart_data = multipart_data.to_multipart() diff --git a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py index 724bc0bce..4f87a4b5d 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py +++ b/end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py @@ -19,7 +19,7 @@ def _get_kwargs( cookies: Dict[str, Any] = client.get_cookies() if keep_alive is not UNSET: - headers["keep-alive"] = str(keep_alive) + headers["keep-alive"] = str(keep_alive).lower() multipart_multipart_data = [] for multipart_data_item_data in multipart_data: diff --git a/openapi_python_client/templates/endpoint_macros.py.jinja b/openapi_python_client/templates/endpoint_macros.py.jinja index d7af8bf02..451ed1a51 100644 --- a/openapi_python_client/templates/endpoint_macros.py.jinja +++ b/openapi_python_client/templates/endpoint_macros.py.jinja @@ -3,14 +3,14 @@ {% for parameter in endpoint.header_parameters.values() %} {% if parameter.required %} headers["{{ parameter.name | kebabcase}}"] = {% if isbool(parameter) %} - str({{ parameter.python_name }}) + str({{ parameter.python_name }}).lower() {% else %} {{ parameter.python_name}} {% endif %} {% else %} if {{ parameter.python_name }} is not UNSET: headers["{{ parameter.name | kebabcase}}"] = {% if isbool(parameter) %} - str({{ parameter.python_name }}) + str({{ parameter.python_name }}).lower() {% else %} {{ parameter.python_name}} {% endif %}