|
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):
|
@@ -431,30 +432,31 @@ def _make_status_error(
|
431 | 432 | body: object,
|
432 | 433 | response: httpx.Response,
|
433 | 434 | ) -> APIStatusError:
|
| 435 | + data = body.get("error", body) if is_mapping(body) else body |
434 | 436 | 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) |
436 | 438 |
|
437 | 439 | 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) |
439 | 441 |
|
440 | 442 | 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) |
442 | 444 |
|
443 | 445 | 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) |
445 | 447 |
|
446 | 448 | 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) |
448 | 450 |
|
449 | 451 | 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) |
451 | 453 |
|
452 | 454 | 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) |
454 | 456 |
|
455 | 457 | 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) |
458 | 460 |
|
459 | 461 |
|
460 | 462 | class OpenAIWithRawResponse:
|
|
0 commit comments