@@ -89,10 +89,15 @@ async def delete(self, path: str) -> None:
8989 response = await client .delete (path )
9090 await self .raise_for_status (response )
9191
92- def _extract_error (self , data : Union [bytes , str ], exception : Optional [Exception ] = None ) -> WorkflowAIError :
92+ def _extract_error (
93+ self ,
94+ response : httpx .Response ,
95+ data : Union [bytes , str ],
96+ exception : Optional [Exception ] = None ,
97+ ) -> WorkflowAIError :
9398 try :
9499 res = ErrorResponse .model_validate_json (data )
95- return WorkflowAIError (res .error , task_run_id = res .task_run_id )
100+ return WorkflowAIError (error = res .error , task_run_id = res .task_run_id , response = response )
96101 except JSONDecodeError :
97102 raise WorkflowAIError (
98103 error = BaseError (
@@ -101,6 +106,7 @@ def _extract_error(self, data: Union[bytes, str], exception: Optional[Exception]
101106 "raw" : str (data ),
102107 },
103108 ),
109+ response = response ,
104110 ) from exception
105111
106112 async def stream (
@@ -122,28 +128,8 @@ async def stream(
122128 for payload in split_chunks (chunk ):
123129 yield returns .model_validate_json (payload )
124130 except ValidationError as e :
125- raise self ._extract_error (payload , e ) from None
131+ raise self ._extract_error (response , payload , e ) from None
126132
127133 async def raise_for_status (self , response : httpx .Response ):
128- if response .status_code < 200 and response .status_code >= 300 :
129- try :
130- response_json = response .json ()
131- r_error = response_json .get ("error" ,{})
132- error_message = response_json .get ("detail" , {}) or r_error .get ("message" , "Unknown Error" )
133- details = r_error .get ("details" , {})
134- error_code = r_error .get ("code" , "unknown_error" )
135- status_code = r_error .get ("status_code" , response .status_code )
136- except JSONDecodeError :
137- error_message = "Unknown error"
138- details = {"raw" : response .content .decode ()}
139- error_code = "unknown_error"
140- status_code = response .status_code
141-
142- raise WorkflowAIError (
143- error = BaseError (
144- message = error_message ,
145- details = details ,
146- status_code = status_code ,
147- code = error_code ,
148- ),
149- ) from None
134+ if response .status_code < 200 or response .status_code >= 300 :
135+ raise WorkflowAIError .from_response (response ) from None
0 commit comments