diff --git a/bittensor_cli/src/bittensor/utils.py b/bittensor_cli/src/bittensor/utils.py index ca95b1b4..b554be46 100644 --- a/bittensor_cli/src/bittensor/utils.py +++ b/bittensor_cli/src/bittensor/utils.py @@ -563,6 +563,16 @@ def format_error_message(error_message: Union[dict, Exception]) -> str: else: err_description = err_docs + matches = { + # A dict of well-known cryptic errors, with better explanations for them. + "SubtokenDisabled": "This subnet is not yet activated. You must wait for it to activate to peform this action." + } + + try: + err_description = matches[err_name] + except KeyError: + pass + return f"Subtensor returned `{err_name}({err_type})` error. This means: `{err_description}`." diff --git a/tests/unit_tests/test_utils.py b/tests/unit_tests/test_utils.py new file mode 100644 index 00000000..a00cd784 --- /dev/null +++ b/tests/unit_tests/test_utils.py @@ -0,0 +1,21 @@ +import pytest + +from bittensor_cli.src.bittensor.utils import format_error_message + + +@pytest.mark.parametrize( + "err_name,expected_output", + [ + ( + "SubtokenDisabled", + "This subnet is not yet activated. You must wait for it to activate to peform this action.", + ) + ], +) +def test_format_error_message_custom_error_message(err_name, expected_output): + error = {"name": err_name, "type": "error type", "docs": "docs"} + formatted_out = format_error_message(error) + assert ( + f"Subtensor returned `{err_name}(error type)` error. This means: `{expected_output}`." + == formatted_out + )