Skip to content

Commit ef264d2

Browse files
fix(client): correctly assign error properties (#759)
1 parent aa68189 commit ef264d2

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/openai/_client.py

+21-19
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
ProxiesTypes,
2121
RequestOptions,
2222
)
23-
from ._utils import is_given
23+
from ._utils import is_given, is_mapping
2424
from ._version import __version__
2525
from ._streaming import Stream as Stream
2626
from ._streaming import AsyncStream as AsyncStream
@@ -221,30 +221,31 @@ def _make_status_error(
221221
body: object,
222222
response: httpx.Response,
223223
) -> APIStatusError:
224+
data = body.get("error", body) if is_mapping(body) else body
224225
if response.status_code == 400:
225-
return _exceptions.BadRequestError(err_msg, response=response, body=body)
226+
return _exceptions.BadRequestError(err_msg, response=response, body=data)
226227

227228
if response.status_code == 401:
228-
return _exceptions.AuthenticationError(err_msg, response=response, body=body)
229+
return _exceptions.AuthenticationError(err_msg, response=response, body=data)
229230

230231
if response.status_code == 403:
231-
return _exceptions.PermissionDeniedError(err_msg, response=response, body=body)
232+
return _exceptions.PermissionDeniedError(err_msg, response=response, body=data)
232233

233234
if response.status_code == 404:
234-
return _exceptions.NotFoundError(err_msg, response=response, body=body)
235+
return _exceptions.NotFoundError(err_msg, response=response, body=data)
235236

236237
if response.status_code == 409:
237-
return _exceptions.ConflictError(err_msg, response=response, body=body)
238+
return _exceptions.ConflictError(err_msg, response=response, body=data)
238239

239240
if response.status_code == 422:
240-
return _exceptions.UnprocessableEntityError(err_msg, response=response, body=body)
241+
return _exceptions.UnprocessableEntityError(err_msg, response=response, body=data)
241242

242243
if response.status_code == 429:
243-
return _exceptions.RateLimitError(err_msg, response=response, body=body)
244+
return _exceptions.RateLimitError(err_msg, response=response, body=data)
244245

245246
if response.status_code >= 500:
246-
return _exceptions.InternalServerError(err_msg, response=response, body=body)
247-
return APIStatusError(err_msg, response=response, body=body)
247+
return _exceptions.InternalServerError(err_msg, response=response, body=data)
248+
return APIStatusError(err_msg, response=response, body=data)
248249

249250

250251
class AsyncOpenAI(AsyncAPIClient):
@@ -431,30 +432,31 @@ def _make_status_error(
431432
body: object,
432433
response: httpx.Response,
433434
) -> APIStatusError:
435+
data = body.get("error", body) if is_mapping(body) else body
434436
if response.status_code == 400:
435-
return _exceptions.BadRequestError(err_msg, response=response, body=body)
437+
return _exceptions.BadRequestError(err_msg, response=response, body=data)
436438

437439
if response.status_code == 401:
438-
return _exceptions.AuthenticationError(err_msg, response=response, body=body)
440+
return _exceptions.AuthenticationError(err_msg, response=response, body=data)
439441

440442
if response.status_code == 403:
441-
return _exceptions.PermissionDeniedError(err_msg, response=response, body=body)
443+
return _exceptions.PermissionDeniedError(err_msg, response=response, body=data)
442444

443445
if response.status_code == 404:
444-
return _exceptions.NotFoundError(err_msg, response=response, body=body)
446+
return _exceptions.NotFoundError(err_msg, response=response, body=data)
445447

446448
if response.status_code == 409:
447-
return _exceptions.ConflictError(err_msg, response=response, body=body)
449+
return _exceptions.ConflictError(err_msg, response=response, body=data)
448450

449451
if response.status_code == 422:
450-
return _exceptions.UnprocessableEntityError(err_msg, response=response, body=body)
452+
return _exceptions.UnprocessableEntityError(err_msg, response=response, body=data)
451453

452454
if response.status_code == 429:
453-
return _exceptions.RateLimitError(err_msg, response=response, body=body)
455+
return _exceptions.RateLimitError(err_msg, response=response, body=data)
454456

455457
if response.status_code >= 500:
456-
return _exceptions.InternalServerError(err_msg, response=response, body=body)
457-
return APIStatusError(err_msg, response=response, body=body)
458+
return _exceptions.InternalServerError(err_msg, response=response, body=data)
459+
return APIStatusError(err_msg, response=response, body=data)
458460

459461

460462
class OpenAIWithRawResponse:

0 commit comments

Comments
 (0)