From 08285ffa1d1c7aa36e491fa8d458358e4beab07e Mon Sep 17 00:00:00 2001 From: harabat Date: Tue, 5 Mar 2024 17:54:45 +0100 Subject: [PATCH 1/2] add response content to UnexpectedStatus exception --- openapi_python_client/templates/errors.py.jinja | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openapi_python_client/templates/errors.py.jinja b/openapi_python_client/templates/errors.py.jinja index 4042ff730..9a2a10443 100644 --- a/openapi_python_client/templates/errors.py.jinja +++ b/openapi_python_client/templates/errors.py.jinja @@ -7,6 +7,9 @@ class UnexpectedStatus(Exception): self.status_code = status_code self.content = content - super().__init__(f"Unexpected status code: {status_code}") + super().__init__( + f"Unexpected status code: {status_code}\n\n" + f"Response content:\n{content}" + ) __all__ = ["UnexpectedStatus"] From 863739d4d312937977420d7ea7d87a21d1166793 Mon Sep 17 00:00:00 2001 From: Dylan Anthony Date: Tue, 5 Mar 2024 19:28:21 -0700 Subject: [PATCH 2/2] Fix type error, regen snapshots, document with changeset --- ...add_response_content_to_unexpectedstatus_exception.md | 9 +++++++++ .../golden-record/my_test_api_client/errors.py | 4 +++- .../test_3_1_features_client/errors.py | 4 +++- integration-tests/integration_tests/errors.py | 4 +++- openapi_python_client/templates/errors.py.jinja | 3 +-- 5 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 .changeset/add_response_content_to_unexpectedstatus_exception.md diff --git a/.changeset/add_response_content_to_unexpectedstatus_exception.md b/.changeset/add_response_content_to_unexpectedstatus_exception.md new file mode 100644 index 000000000..3cb59af6e --- /dev/null +++ b/.changeset/add_response_content_to_unexpectedstatus_exception.md @@ -0,0 +1,9 @@ +--- +default: minor +--- + +# Add response content to `UnexpectedStatus` exception + +The error message for `UnexpectedStatus` exceptions will now include the UTF-8 decoded (ignoring errors) body of the response. + +PR #989 implements #840. Thanks @harabat! diff --git a/end_to_end_tests/golden-record/my_test_api_client/errors.py b/end_to_end_tests/golden-record/my_test_api_client/errors.py index be532ad00..5f92e76ac 100644 --- a/end_to_end_tests/golden-record/my_test_api_client/errors.py +++ b/end_to_end_tests/golden-record/my_test_api_client/errors.py @@ -8,7 +8,9 @@ def __init__(self, status_code: int, content: bytes): self.status_code = status_code self.content = content - super().__init__(f"Unexpected status code: {status_code}") + super().__init__( + f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" + ) __all__ = ["UnexpectedStatus"] diff --git a/end_to_end_tests/test-3-1-golden-record/test_3_1_features_client/errors.py b/end_to_end_tests/test-3-1-golden-record/test_3_1_features_client/errors.py index be532ad00..5f92e76ac 100644 --- a/end_to_end_tests/test-3-1-golden-record/test_3_1_features_client/errors.py +++ b/end_to_end_tests/test-3-1-golden-record/test_3_1_features_client/errors.py @@ -8,7 +8,9 @@ def __init__(self, status_code: int, content: bytes): self.status_code = status_code self.content = content - super().__init__(f"Unexpected status code: {status_code}") + super().__init__( + f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" + ) __all__ = ["UnexpectedStatus"] diff --git a/integration-tests/integration_tests/errors.py b/integration-tests/integration_tests/errors.py index be532ad00..5f92e76ac 100644 --- a/integration-tests/integration_tests/errors.py +++ b/integration-tests/integration_tests/errors.py @@ -8,7 +8,9 @@ def __init__(self, status_code: int, content: bytes): self.status_code = status_code self.content = content - super().__init__(f"Unexpected status code: {status_code}") + super().__init__( + f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" + ) __all__ = ["UnexpectedStatus"] diff --git a/openapi_python_client/templates/errors.py.jinja b/openapi_python_client/templates/errors.py.jinja index 9a2a10443..b912123d0 100644 --- a/openapi_python_client/templates/errors.py.jinja +++ b/openapi_python_client/templates/errors.py.jinja @@ -8,8 +8,7 @@ class UnexpectedStatus(Exception): self.content = content super().__init__( - f"Unexpected status code: {status_code}\n\n" - f"Response content:\n{content}" + f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" ) __all__ = ["UnexpectedStatus"]