|
20 | 20 | ProxiesTypes,
|
21 | 21 | RequestOptions,
|
22 | 22 | )
|
23 |
| -from ._utils import is_given |
| 23 | +from ._utils import is_given, is_mapping |
24 | 24 | from ._version import __version__
|
25 | 25 | from ._streaming import Stream as Stream
|
26 | 26 | from ._streaming import AsyncStream as AsyncStream
|
@@ -221,30 +221,31 @@ def _make_status_error(
|
221 | 221 | body: object,
|
222 | 222 | response: httpx.Response,
|
223 | 223 | ) -> APIStatusError:
|
| 224 | + data = body.get("error", body) if is_mapping(body) else body |
224 | 225 | 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) |
226 | 227 |
|
227 | 228 | 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) |
229 | 230 |
|
230 | 231 | 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) |
232 | 233 |
|
233 | 234 | 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) |
235 | 236 |
|
236 | 237 | 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) |
238 | 239 |
|
239 | 240 | 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) |
241 | 242 |
|
242 | 243 | 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) |
244 | 245 |
|
245 | 246 | 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) |
248 | 249 |
|
249 | 250 |
|
250 | 251 | class AsyncOpenAI(AsyncAPIClient):
|
@@ -432,30 +433,31 @@ def _make_status_error(
|
432 | 433 | body: object,
|
433 | 434 | response: httpx.Response,
|
434 | 435 | ) -> APIStatusError:
|
| 436 | + data = body.get("error", body) if is_mapping(body) else body |
435 | 437 | if response.status_code == 400:
|
436 |
| - return _exceptions.BadRequestError(err_msg, response=response, body=body) |
| 438 | + return _exceptions.BadRequestError(err_msg, response=response, body=data) |
437 | 439 |
|
438 | 440 | if response.status_code == 401:
|
439 |
| - return _exceptions.AuthenticationError(err_msg, response=response, body=body) |
| 441 | + return _exceptions.AuthenticationError(err_msg, response=response, body=data) |
440 | 442 |
|
441 | 443 | if response.status_code == 403:
|
442 |
| - return _exceptions.PermissionDeniedError(err_msg, response=response, body=body) |
| 444 | + return _exceptions.PermissionDeniedError(err_msg, response=response, body=data) |
443 | 445 |
|
444 | 446 | if response.status_code == 404:
|
445 |
| - return _exceptions.NotFoundError(err_msg, response=response, body=body) |
| 447 | + return _exceptions.NotFoundError(err_msg, response=response, body=data) |
446 | 448 |
|
447 | 449 | if response.status_code == 409:
|
448 |
| - return _exceptions.ConflictError(err_msg, response=response, body=body) |
| 450 | + return _exceptions.ConflictError(err_msg, response=response, body=data) |
449 | 451 |
|
450 | 452 | if response.status_code == 422:
|
451 |
| - return _exceptions.UnprocessableEntityError(err_msg, response=response, body=body) |
| 453 | + return _exceptions.UnprocessableEntityError(err_msg, response=response, body=data) |
452 | 454 |
|
453 | 455 | if response.status_code == 429:
|
454 |
| - return _exceptions.RateLimitError(err_msg, response=response, body=body) |
| 456 | + return _exceptions.RateLimitError(err_msg, response=response, body=data) |
455 | 457 |
|
456 | 458 | if response.status_code >= 500:
|
457 |
| - return _exceptions.InternalServerError(err_msg, response=response, body=body) |
458 |
| - return APIStatusError(err_msg, response=response, body=body) |
| 459 | + return _exceptions.InternalServerError(err_msg, response=response, body=data) |
| 460 | + return APIStatusError(err_msg, response=response, body=data) |
459 | 461 |
|
460 | 462 |
|
461 | 463 | class OpenAIWithRawResponse:
|
|
0 commit comments