From c047cc7a41db5273943129659434c6b3da15a6ca Mon Sep 17 00:00:00 2001 From: neelasha23 Date: Sat, 9 Dec 2023 21:37:34 +0530 Subject: [PATCH 1/3] check for message --- src/ploomber_core/exceptions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ploomber_core/exceptions.py b/src/ploomber_core/exceptions.py index 301c304..9ac3b46 100644 --- a/src/ploomber_core/exceptions.py +++ b/src/ploomber_core/exceptions.py @@ -87,6 +87,8 @@ def _add_community_link(e): elif COMMUNITY not in e.args[0]: message = e.args[0] + COMMUNITY e.args = (message,) + if hasattr(e, "message"): + e.message = message return e From 30e1a9ea2b2f9243903907aa0a4b9d974edf5a1c Mon Sep 17 00:00:00 2001 From: neelasha23 Date: Sun, 10 Dec 2023 23:33:29 +0530 Subject: [PATCH 2/3] test --- tests/test_exceptions.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py index 2cad3df..055b8b0 100644 --- a/tests/test_exceptions.py +++ b/tests/test_exceptions.py @@ -54,6 +54,23 @@ def crash(): assert exceptions.get_community_link() in str(excinfo.value) +def test_modify_exceptions_with_message_attribute(): + class CustomException(Exception): + def __init__(self, message: str) -> None: + super().__init__(message) + self.message = message + self.modify_exception = True + + @exceptions.modify_exceptions + def crash(): + raise CustomException("some message") + + with pytest.raises(CustomException) as excinfo: + crash() + + assert exceptions.get_community_link() in str(excinfo.value) + + def test_modify_exceptions_value_error(): @exceptions.modify_exceptions def crash(): From 05685ff1a13f68e62419832249dd806b772260dc Mon Sep 17 00:00:00 2001 From: neelasha23 Date: Tue, 12 Dec 2023 13:13:57 +0530 Subject: [PATCH 3/3] comment --- src/ploomber_core/exceptions.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ploomber_core/exceptions.py b/src/ploomber_core/exceptions.py index 9ac3b46..f142b18 100644 --- a/src/ploomber_core/exceptions.py +++ b/src/ploomber_core/exceptions.py @@ -87,6 +87,9 @@ def _add_community_link(e): elif COMMUNITY not in e.args[0]: message = e.args[0] + COMMUNITY e.args = (message,) + # Certain exceptions like ClickException have message + # as their first parameter. In that case args is not + # accessed while raising the error if hasattr(e, "message"): e.message = message