diff --git a/bittensor/utils/__init__.py b/bittensor/utils/__init__.py index 5efe1cbb25..14fb383847 100644 --- a/bittensor/utils/__init__.py +++ b/bittensor/utils/__init__.py @@ -22,6 +22,8 @@ if TYPE_CHECKING: from bittensor_wallet import Wallet +BT_DOCS_LINK = "https://docs.bittensor.com" + # redundant aliases logging = logging @@ -219,6 +221,7 @@ def format_error_message(error_message: Union[dict, Exception]) -> str: pass if new_error_message is None: return_val = " ".join(error_message.args) + return f"Subtensor returned: {return_val}" else: error_message = new_error_message @@ -236,7 +239,9 @@ def format_error_message(error_message: Union[dict, Exception]) -> str: # subtensor custom error marker if err_data.startswith("Custom error:"): - err_description = f"{err_data} | Please consult https://docs.bittensor.com/subtensor-nodes/subtensor-error-messages" + err_description = ( + f"{err_data} | Please consult {BT_DOCS_LINK}/errors/custom" + ) else: err_description = err_data @@ -249,6 +254,9 @@ def format_error_message(error_message: Union[dict, Exception]) -> str: err_name = error_message.get("name", err_name) err_docs = error_message.get("docs", [err_description]) err_description = " ".join(err_docs) + err_description += ( + f" | Please consult {BT_DOCS_LINK}/errors/subtensor#{err_name.lower()}" + ) elif error_message.get("code") and error_message.get("message"): err_type = error_message.get("code", err_name) diff --git a/tests/unit_tests/extrinsics/test__init__.py b/tests/unit_tests/extrinsics/test__init__.py index 9eb994a2a3..ba17c001be 100644 --- a/tests/unit_tests/extrinsics/test__init__.py +++ b/tests/unit_tests/extrinsics/test__init__.py @@ -1,6 +1,6 @@ """Tests for bittensor/extrinsics/__ini__ module.""" -from bittensor.utils import format_error_message +from bittensor.utils import format_error_message, BT_DOCS_LINK def test_format_error_message_with_right_error_message(): @@ -22,8 +22,9 @@ def test_format_error_message_with_right_error_message(): # Assertions assert ( - result - == "Subtensor returned `SomeErrorName(SomeType)` error. This means: `Some error description. I'm second part. Hah, I'm the last one.`." + result == "Subtensor returned `SomeErrorName(SomeType)` error. " + "This means: `Some error description. I'm second part. Hah, I'm the last one." + f" | Please consult {BT_DOCS_LINK}/errors/subtensor#someerrorname`." ) @@ -79,8 +80,7 @@ def test_format_error_message_with_custom_error_message_with_index(): assert ( result == f"Subtensor returned `SubstrateRequestException({fake_subtensor_error['name']})` error. This means: " - f"`{fake_custom_error['data']} | Please consult " - f"https://docs.bittensor.com/subtensor-nodes/subtensor-error-messages`." + f"`{fake_custom_error['data']} | Please consult {BT_DOCS_LINK}/errors/custom`." )