Skip to content

Commit 2a7872b

Browse files
authored
Merge pull request #566 from atlanhq/APP-5595
APP-5595: Added handling for `doc` / `errorDoc` in `AtlanError`
2 parents 0ec575d + 7ec6c31 commit 2a7872b

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

pyatlan/client/atlan.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,12 @@ def _call_api_internal(
430430
error_message = error_info.get(
431431
"errorMessage", ""
432432
) or error_info.get("message", "")
433+
error_doc = (
434+
error_info.get("doc")
435+
or error_info.get("errorDoc")
436+
or error_info.get("errorDocument")
437+
or error_info.get("errorDocumentation")
438+
)
433439
error_cause = error_info.get("errorCause", [])
434440
causes = error_info.get("causes", [])
435441
backend_error_id = error_info.get("errorId")
@@ -481,6 +487,7 @@ def _call_api_internal(
481487
error_cause_details_str,
482488
error_cause=error_cause,
483489
backend_error_id=backend_error_id,
490+
error_doc=error_doc,
484491
)
485492
raise AtlanError(
486493
SimpleNamespace(

pyatlan/errors.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ class ErrorInfo(Protocol):
2323
# A human-readable explanation
2424
# of what caused the error
2525
error_cause: str
26+
# A URL linking to
27+
# documentation that explains the error
28+
error_doc: str
2629

2730

2831
class AtlanError(Exception):
@@ -35,12 +38,14 @@ def __init__(self, error_code: ErrorInfo, *args, **kwargs):
3538
self.error_code = error_code
3639
self.error_code.backend_error_id = kwargs.get("backend_error_id", "")
3740
self.error_code.error_cause = kwargs.get("error_cause", "")
41+
self.error_code.error_doc = kwargs.get("error_doc", "")
3842

3943
def __str__(self):
4044
return (
4145
f"{self.error_code.error_id or ''}"
4246
f"{' ' if self.error_code.error_id else ''}{super().__str__()}"
4347
f"{' errorCause: ' + self.error_code.error_cause if self.error_code.error_cause else ''}"
48+
f"{' errorDocument: ' + self.error_code.error_doc if self.error_code.error_doc else ''}"
4449
f"{' (errorId: ' + self.error_code.backend_error_id + ')' if self.error_code.backend_error_id else ''}"
4550
f" Suggestion: {self.error_code.user_action}"
4651
)

tests/unit/test_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2020,7 +2020,8 @@ def test_atlan_call_api_server_error_messages(
20202020
}
20212021
],
20222022
"errorCause": "something went wrong",
2023-
"errorId": "95d80a45999cabc"
2023+
"errorId": "95d80a45999cabc",
2024+
"doc": "https://ask.atlan.com/hc/en-us/articles/6645223434141-Is-there-a-limit-on-the-number-of-API-requests-that-can-be-performed"
20242025
}
20252026
"""
20262027
],
@@ -2049,6 +2050,7 @@ def test_atlan_call_api_server_error_messages_with_causes(
20492050
error_code = test_error.get("errorCode")
20502051
error_message = test_error.get("errorMessage")
20512052
error_cause = test_error.get("errorCause")
2053+
error_doc = test_error.get("doc")
20522054
error_id = test_error.get("errorId")
20532055
error_causes = test_error.get("causes")[0]
20542056
glossary = AtlasGlossary.creator(name="test-glossary")
@@ -2060,6 +2062,7 @@ def test_atlan_call_api_server_error_messages_with_causes(
20602062
error_causes,
20612063
error_cause=error_cause,
20622064
backend_error_id=error_id,
2065+
error_doc=error_doc,
20632066
)
20642067

20652068
with pytest.raises(

0 commit comments

Comments
 (0)