|
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