|
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