Skip to content

Commit 47cfdec

Browse files
authored
feat: Extend the UnexpectedStatus exception to include the response's content (#729)
1 parent cf8eafc commit 47cfdec

38 files changed

+51
-39
lines changed

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/default/get_common_parameters.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3838
if response.status_code == HTTPStatus.OK:
3939
return None
4040
if client.raise_on_unexpected_status:
41-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
41+
raise errors.UnexpectedStatus(response.status_code, response.content)
4242
else:
4343
return None
4444

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/default/post_common_parameters.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3838
if response.status_code == HTTPStatus.OK:
3939
return None
4040
if client.raise_on_unexpected_status:
41-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
41+
raise errors.UnexpectedStatus(response.status_code, response.content)
4242
else:
4343
return None
4444

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/location/get_location_header_types.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
5757
if response.status_code == HTTPStatus.OK:
5858
return None
5959
if client.raise_on_unexpected_status:
60-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
60+
raise errors.UnexpectedStatus(response.status_code, response.content)
6161
else:
6262
return None
6363

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/location/get_location_query_optionality.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
6262
if response.status_code == HTTPStatus.OK:
6363
return None
6464
if client.raise_on_unexpected_status:
65-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
65+
raise errors.UnexpectedStatus(response.status_code, response.content)
6666
else:
6767
return None
6868

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/parameter_references/get_parameter_references_path_param.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
5050
if response.status_code == HTTPStatus.OK:
5151
return None
5252
if client.raise_on_unexpected_status:
53-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
53+
raise errors.UnexpectedStatus(response.status_code, response.content)
5454
else:
5555
return None
5656

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/parameters/delete_common_parameters_overriding_param.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3939
if response.status_code == HTTPStatus.OK:
4040
return None
4141
if client.raise_on_unexpected_status:
42-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
42+
raise errors.UnexpectedStatus(response.status_code, response.content)
4343
else:
4444
return None
4545

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/parameters/get_common_parameters_overriding_param.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3939
if response.status_code == HTTPStatus.OK:
4040
return None
4141
if client.raise_on_unexpected_status:
42-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
42+
raise errors.UnexpectedStatus(response.status_code, response.content)
4343
else:
4444
return None
4545

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/parameters/get_same_name_multiple_locations_param.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
4747
if response.status_code == HTTPStatus.OK:
4848
return None
4949
if client.raise_on_unexpected_status:
50-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
50+
raise errors.UnexpectedStatus(response.status_code, response.content)
5151
else:
5252
return None
5353

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/parameters/multiple_path_parameters.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3737
if response.status_code == HTTPStatus.OK:
3838
return None
3939
if client.raise_on_unexpected_status:
40-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
40+
raise errors.UnexpectedStatus(response.status_code, response.content)
4141
else:
4242
return None
4343

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/responses/post_responses_unions_simple_before_complex.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def _parse_response(
3838

3939
return response_200
4040
if client.raise_on_unexpected_status:
41-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
41+
raise errors.UnexpectedStatus(response.status_code, response.content)
4242
else:
4343
return None
4444

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tag1/get_tag_with_number.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3131
if response.status_code == HTTPStatus.OK:
3232
return None
3333
if client.raise_on_unexpected_status:
34-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
34+
raise errors.UnexpectedStatus(response.status_code, response.content)
3535
else:
3636
return None
3737

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/callback_test.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4242

4343
return response_422
4444
if client.raise_on_unexpected_status:
45-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
45+
raise errors.UnexpectedStatus(response.status_code, response.content)
4646
else:
4747
return None
4848

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/defaults_tests_defaults_post.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
109109

110110
return response_422
111111
if client.raise_on_unexpected_status:
112-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
112+
raise errors.UnexpectedStatus(response.status_code, response.content)
113113
else:
114114
return None
115115

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/description_with_backslash.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3131
if response.status_code == HTTPStatus.OK:
3232
return None
3333
if client.raise_on_unexpected_status:
34-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
34+
raise errors.UnexpectedStatus(response.status_code, response.content)
3535
else:
3636
return None
3737

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_booleans.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Lis
3333

3434
return response_200
3535
if client.raise_on_unexpected_status:
36-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
36+
raise errors.UnexpectedStatus(response.status_code, response.content)
3737
else:
3838
return None
3939

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_floats.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Lis
3333

3434
return response_200
3535
if client.raise_on_unexpected_status:
36-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
36+
raise errors.UnexpectedStatus(response.status_code, response.content)
3737
else:
3838
return None
3939

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_integers.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Lis
3333

3434
return response_200
3535
if client.raise_on_unexpected_status:
36-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
36+
raise errors.UnexpectedStatus(response.status_code, response.content)
3737
else:
3838
return None
3939

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/get_basic_list_of_strings.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Lis
3333

3434
return response_200
3535
if client.raise_on_unexpected_status:
36-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
36+
raise errors.UnexpectedStatus(response.status_code, response.content)
3737
else:
3838
return None
3939

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/get_user_list.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def _parse_response(
9292

9393
return response_423
9494
if client.raise_on_unexpected_status:
95-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
95+
raise errors.UnexpectedStatus(response.status_code, response.content)
9696
else:
9797
return None
9898

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/int_enum_tests_int_enum_post.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4747

4848
return response_422
4949
if client.raise_on_unexpected_status:
50-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
50+
raise errors.UnexpectedStatus(response.status_code, response.content)
5151
else:
5252
return None
5353

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/json_body_tests_json_body_post.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4242

4343
return response_422
4444
if client.raise_on_unexpected_status:
45-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
45+
raise errors.UnexpectedStatus(response.status_code, response.content)
4646
else:
4747
return None
4848

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/no_response_tests_no_response_get.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3131
if response.status_code == HTTPStatus.OK:
3232
return None
3333
if client.raise_on_unexpected_status:
34-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
34+
raise errors.UnexpectedStatus(response.status_code, response.content)
3535
else:
3636
return None
3737

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/octet_stream_tests_octet_stream_get.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Fil
3434

3535
return response_200
3636
if client.raise_on_unexpected_status:
37-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
37+
raise errors.UnexpectedStatus(response.status_code, response.content)
3838
else:
3939
return None
4040

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/post_form_data.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3434
if response.status_code == HTTPStatus.OK:
3535
return None
3636
if client.raise_on_unexpected_status:
37-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
37+
raise errors.UnexpectedStatus(response.status_code, response.content)
3838
else:
3939
return None
4040

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/post_form_data_inline.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3434
if response.status_code == HTTPStatus.OK:
3535
return None
3636
if client.raise_on_unexpected_status:
37-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
37+
raise errors.UnexpectedStatus(response.status_code, response.content)
3838
else:
3939
return None
4040

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/post_tests_json_body_string.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4141

4242
return response_422
4343
if client.raise_on_unexpected_status:
44-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
44+
raise errors.UnexpectedStatus(response.status_code, response.content)
4545
else:
4646
return None
4747

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/test_inline_objects.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Tes
3939

4040
return response_200
4141
if client.raise_on_unexpected_status:
42-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
42+
raise errors.UnexpectedStatus(response.status_code, response.content)
4343
else:
4444
return None
4545

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/token_with_cookie_auth_token_with_cookie_get.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3636
if response.status_code == HTTPStatus.UNAUTHORIZED:
3737
return None
3838
if client.raise_on_unexpected_status:
39-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
39+
raise errors.UnexpectedStatus(response.status_code, response.content)
4040
else:
4141
return None
4242

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/unsupported_content_tests_unsupported_content_get.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3131
if response.status_code == HTTPStatus.OK:
3232
return None
3333
if client.raise_on_unexpected_status:
34-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
34+
raise errors.UnexpectedStatus(response.status_code, response.content)
3535
else:
3636
return None
3737

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_file_tests_upload_post.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4242

4343
return response_422
4444
if client.raise_on_unexpected_status:
45-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
45+
raise errors.UnexpectedStatus(response.status_code, response.content)
4646
else:
4747
return None
4848

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/tests/upload_multiple_files_tests_upload_post.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Uni
4545

4646
return response_422
4747
if client.raise_on_unexpected_status:
48-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
48+
raise errors.UnexpectedStatus(response.status_code, response.content)
4949
else:
5050
return None
5151

Diff for: end_to_end_tests/golden-record/my_test_api_client/api/true_/false_.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any
3838
if response.status_code == HTTPStatus.OK:
3939
return None
4040
if client.raise_on_unexpected_status:
41-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
41+
raise errors.UnexpectedStatus(response.status_code, response.content)
4242
else:
4343
return None
4444

Diff for: end_to_end_tests/golden-record/my_test_api_client/errors.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
class UnexpectedStatus(Exception):
55
"""Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
66

7-
...
7+
def __init__(self, status_code: int, content: bytes):
8+
self.status_code = status_code
9+
self.content = content
10+
11+
super().__init__(f"Unexpected status code: {status_code}")
812

913

1014
__all__ = ["UnexpectedStatus"]

Diff for: integration-tests/integration_tests/api/body/post_body_multipart.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def _parse_response(
4646

4747
return response_400
4848
if client.raise_on_unexpected_status:
49-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
49+
raise errors.UnexpectedStatus(response.status_code, response.content)
5050
else:
5151
return None
5252

Diff for: integration-tests/integration_tests/api/parameters/post_parameters_header.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def _parse_response(
5353

5454
return response_400
5555
if client.raise_on_unexpected_status:
56-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
56+
raise errors.UnexpectedStatus(response.status_code, response.content)
5757
else:
5858
return None
5959

Diff for: integration-tests/integration_tests/errors.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
class UnexpectedStatus(Exception):
55
"""Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True"""
66

7-
...
7+
def __init__(self, status_code: int, content: bytes):
8+
self.status_code = status_code
9+
self.content = content
10+
11+
super().__init__(f"Unexpected status code: {status_code}")
812

913

1014
__all__ = ["UnexpectedStatus"]

Diff for: openapi_python_client/templates/endpoint_module.py.jinja

+1-2
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def _parse_response(*, client: Client, response: httpx.Response) -> Optional[{{
7575
{% endif %}
7676
{% endfor %}
7777
if client.raise_on_unexpected_status:
78-
raise errors.UnexpectedStatus(f"Unexpected status code: {response.status_code}")
78+
raise errors.UnexpectedStatus(response.status_code, response.content)
7979
else:
8080
return None
8181

@@ -142,4 +142,3 @@ async def asyncio(
142142
{{ kwargs(endpoint) }}
143143
)).parsed
144144
{% endif %}
145-

Diff for: openapi_python_client/templates/errors.py.jinja

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
class UnexpectedStatus(Exception):
44
""" Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True """
5-
...
5+
6+
def __init__(self, status_code: int, content: bytes):
7+
self.status_code = status_code
8+
self.content = content
9+
10+
super().__init__(f"Unexpected status code: {status_code}")
611

712
__all__ = ["UnexpectedStatus"]

0 commit comments

Comments
 (0)