Skip to content

Commit 59be121

Browse files
committed
feat: add accessors for error payload
1 parent 90795b2 commit 59be121

File tree

3 files changed

+67
-1
lines changed

3 files changed

+67
-1
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "workflowai"
3-
version = "0.6.0.dev13"
3+
version = "0.6.0.dev14"
44
description = ""
55
authors = ["Guillaume Aquilina <guillaume@workflowai.com>"]
66
readme = "README.md"

workflowai/core/domain/errors.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,5 +169,21 @@ def retry_after_delay_seconds(self) -> Optional[float]:
169169

170170
return None
171171

172+
@property
173+
def code(self) -> Optional[ErrorCode]:
174+
return self.error.code
175+
176+
@property
177+
def status_code(self) -> Optional[int]:
178+
return self.error.status_code
179+
180+
@property
181+
def message(self) -> str:
182+
return self.error.message
183+
184+
@property
185+
def details(self) -> Optional[dict[str, Any]]:
186+
return self.error.details
187+
172188

173189
class InvalidGenerationError(WorkflowAIError): ...

workflowai/core/domain/errors_test.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from freezegun import freeze_time
66

77
from workflowai.core.domain.errors import (
8+
BaseError,
89
WorkflowAIError,
910
_retry_after_to_delay_seconds, # pyright: ignore [reportPrivateUsage]
1011
)
@@ -33,3 +34,52 @@ def test_workflow_ai_error_404():
3334
)
3435
def test_retry_after_to_delay_seconds(retry_after: Optional[str], expected: Optional[float]):
3536
assert _retry_after_to_delay_seconds(retry_after) == expected
37+
38+
39+
def test_workflow_ai_error_code():
40+
error = WorkflowAIError(
41+
response=Mock(),
42+
error=BaseError(
43+
message="test",
44+
status_code=404,
45+
code="object_not_found",
46+
),
47+
)
48+
assert error.code == "object_not_found"
49+
50+
51+
def test_workflow_ai_error_status_code():
52+
error = WorkflowAIError(
53+
response=Mock(),
54+
error=BaseError(
55+
message="test",
56+
status_code=404,
57+
code="object_not_found",
58+
),
59+
)
60+
assert error.status_code == 404
61+
62+
63+
def test_workflow_ai_error_message():
64+
error = WorkflowAIError(
65+
response=Mock(),
66+
error=BaseError(
67+
message="test",
68+
status_code=404,
69+
code="object_not_found",
70+
),
71+
)
72+
assert error.message == "test"
73+
74+
75+
def test_workflow_ai_error_details():
76+
error = WorkflowAIError(
77+
response=Mock(),
78+
error=BaseError(
79+
message="test",
80+
status_code=404,
81+
code="object_not_found",
82+
details={"test": "test"},
83+
),
84+
)
85+
assert error.details == {"test": "test"}

0 commit comments

Comments
 (0)