Skip to content

Commit fa60791

Browse files
stainless-botwangshudong
authored and
wangshudong
committed
fix(client): correctly assign error properties (openai#759)
1 parent fe3db16 commit fa60791

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):
@@ -432,30 +433,31 @@ def _make_status_error(
432433
body: object,
433434
response: httpx.Response,
434435
) -> APIStatusError:
436+
data = body.get("error", body) if is_mapping(body) else body
435437
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)
437439

438440
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)
440442

441443
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)
443445

444446
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)
446448

447449
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)
449451

450452
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)
452454

453455
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)
455457

456458
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)
459461

460462

461463
class OpenAIWithRawResponse:

0 commit comments

Comments
 (0)