From 538995703cc19622bc093051308eadde0c8c97f7 Mon Sep 17 00:00:00 2001 From: Dairus01 Date: Sat, 27 Dec 2025 14:28:07 +0100 Subject: [PATCH 1/8] Clarify return ordering and units for get_revealed_commitment_by_hotkey --- bittensor/core/subtensor.py | 8 +++- tests/unit_tests/test_subtensor.py | 68 ++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/bittensor/core/subtensor.py b/bittensor/core/subtensor.py index 6862f3a1c4..2e80797d6c 100644 --- a/bittensor/core/subtensor.py +++ b/bittensor/core/subtensor.py @@ -3061,7 +3061,6 @@ def get_revealed_commitment_by_hotkey( hotkey_ss58: str, block: Optional[int] = None, ) -> Optional[tuple[tuple[int, str], ...]]: - # TODO: Clarify return ordering and units; add Examples """Retrieves hotkey related revealed commitment for a given subnet. Parameters: @@ -3070,8 +3069,13 @@ def get_revealed_commitment_by_hotkey( block: The block number to query. If `None`, queries the current chain head. Returns: - A tuple of reveal block and commitment message. + A tuple of tuples, where each inner tuple contains the reveal block number and the commitment message. + The return format is `((reveal_block, commitment_message), ...)`. + Example: + >>> subtensor.get_revealed_commitment_by_hotkey(netuid=1, hotkey_ss58="5C4hr...") + ((123, "commitment_string_1"), (150, "commitment_string_2")) + Notes: - """ diff --git a/tests/unit_tests/test_subtensor.py b/tests/unit_tests/test_subtensor.py index 0d70415874..c738fdc4d1 100644 --- a/tests/unit_tests/test_subtensor.py +++ b/tests/unit_tests/test_subtensor.py @@ -6430,3 +6430,71 @@ def test_mev_submit_encrypted_default_params(subtensor, fake_wallet, mocker): blocks_for_revealed_execution=3, ) assert result == mocked_submit_encrypted_extrinsic.return_value + +def test_get_revealed_commitment_by_hotkey_success(subtensor, mocker): + """Test get_revealed_commitment_by_hotkey returns correct structure.""" + + # Mock data + netuid = 1 + hotkey_ss58 = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM" + block = 123 + + # Mock the query response + # The query returns a list of tuples. Each tuple is (commitment_bytes, block_number) + # commitment_bytes structure: first byte is mode (offset), then commitment bytes. + # If mode is 0, offset is 1. + + # Example 1: block 100, message "hello" + commitment_1 = b'\x00' + b'hello' + block_1 = 100 + + # Example 2: block 150, message "world" + commitment_2 = b'\x00' + b'world' + block_2 = 150 + + mock_query_return = [ + (commitment_1, block_1), + (commitment_2, block_2) + ] + + mock_query_module = mocker.patch.object(subtensor, 'query_module', return_value=mock_query_return) + + result = subtensor.get_revealed_commitment_by_hotkey( + netuid=netuid, + hotkey_ss58=hotkey_ss58, + block=block + ) + + mock_query_module.assert_called_once_with( + module="Commitments", + name="RevealedCommitments", + params=[netuid, hotkey_ss58], + block=block, + ) + + # Verify result structure + assert isinstance(result, tuple) + assert len(result) == 2 + + # Order is preserved from the query result + assert result[0] == (100, "hello") + assert result[1] == (150, "world") + +def test_get_revealed_commitment_by_hotkey_invalid_address(subtensor): + """Test get_revealed_commitment_by_hotkey raises error for invalid address.""" + with pytest.raises(ValueError, match="Invalid ss58 address"): + subtensor.get_revealed_commitment_by_hotkey( + netuid=1, + hotkey_ss58="invalid_address" + ) + +def test_get_revealed_commitment_by_hotkey_none(subtensor, mocker): + """Test get_revealed_commitment_by_hotkey returns None when query returns None.""" + mocker.patch.object(subtensor, 'query_module', return_value=None) + + result = subtensor.get_revealed_commitment_by_hotkey( + netuid=1, + hotkey_ss58="5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM" + ) + + assert result is None From eeec6e4d43b33e21060f09db88dc58de7df40e8f Mon Sep 17 00:00:00 2001 From: Dairus Date: Sun, 28 Dec 2025 19:09:27 +0100 Subject: [PATCH 2/8] Add write permission for issues in workflow --- .github/workflows/monitor_requirements_size_master.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/monitor_requirements_size_master.yml b/.github/workflows/monitor_requirements_size_master.yml index 1cebb907e6..61d2763a03 100644 --- a/.github/workflows/monitor_requirements_size_master.yml +++ b/.github/workflows/monitor_requirements_size_master.yml @@ -12,6 +12,7 @@ on: permissions: pull-requests: write contents: read + issues: write jobs: read-python-versions: From c318f4cfd27112bbcb000a417dd5ddd9d7ad3ecb Mon Sep 17 00:00:00 2001 From: Dairus Date: Tue, 30 Dec 2025 00:26:03 -0800 Subject: [PATCH 3/8] Clarify return format in get_revealed_commitment_by_hotkey Updated docstring to clarify return format and removed example. --- bittensor/core/subtensor.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bittensor/core/subtensor.py b/bittensor/core/subtensor.py index 2e80797d6c..7a36c9de0b 100644 --- a/bittensor/core/subtensor.py +++ b/bittensor/core/subtensor.py @@ -3061,6 +3061,7 @@ def get_revealed_commitment_by_hotkey( hotkey_ss58: str, block: Optional[int] = None, ) -> Optional[tuple[tuple[int, str], ...]]: + # TODO: Clarify return ordering and units; add Examples """Retrieves hotkey related revealed commitment for a given subnet. Parameters: @@ -3069,12 +3070,7 @@ def get_revealed_commitment_by_hotkey( block: The block number to query. If `None`, queries the current chain head. Returns: - A tuple of tuples, where each inner tuple contains the reveal block number and the commitment message. - The return format is `((reveal_block, commitment_message), ...)`. - - Example: - >>> subtensor.get_revealed_commitment_by_hotkey(netuid=1, hotkey_ss58="5C4hr...") - ((123, "commitment_string_1"), (150, "commitment_string_2")) + A tuple of reveal block and commitment message. Notes: - From 8fc34207c1780c356ec34a5927cac2bb5d6f8439 Mon Sep 17 00:00:00 2001 From: Dairus Date: Tue, 30 Dec 2025 00:28:34 -0800 Subject: [PATCH 4/8] Restore assertion in test_subtensor.py Restores assertion for result equality in the test case. --- tests/unit_tests/test_subtensor.py | 68 ------------------------------ 1 file changed, 68 deletions(-) diff --git a/tests/unit_tests/test_subtensor.py b/tests/unit_tests/test_subtensor.py index c738fdc4d1..0d70415874 100644 --- a/tests/unit_tests/test_subtensor.py +++ b/tests/unit_tests/test_subtensor.py @@ -6430,71 +6430,3 @@ def test_mev_submit_encrypted_default_params(subtensor, fake_wallet, mocker): blocks_for_revealed_execution=3, ) assert result == mocked_submit_encrypted_extrinsic.return_value - -def test_get_revealed_commitment_by_hotkey_success(subtensor, mocker): - """Test get_revealed_commitment_by_hotkey returns correct structure.""" - - # Mock data - netuid = 1 - hotkey_ss58 = "5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM" - block = 123 - - # Mock the query response - # The query returns a list of tuples. Each tuple is (commitment_bytes, block_number) - # commitment_bytes structure: first byte is mode (offset), then commitment bytes. - # If mode is 0, offset is 1. - - # Example 1: block 100, message "hello" - commitment_1 = b'\x00' + b'hello' - block_1 = 100 - - # Example 2: block 150, message "world" - commitment_2 = b'\x00' + b'world' - block_2 = 150 - - mock_query_return = [ - (commitment_1, block_1), - (commitment_2, block_2) - ] - - mock_query_module = mocker.patch.object(subtensor, 'query_module', return_value=mock_query_return) - - result = subtensor.get_revealed_commitment_by_hotkey( - netuid=netuid, - hotkey_ss58=hotkey_ss58, - block=block - ) - - mock_query_module.assert_called_once_with( - module="Commitments", - name="RevealedCommitments", - params=[netuid, hotkey_ss58], - block=block, - ) - - # Verify result structure - assert isinstance(result, tuple) - assert len(result) == 2 - - # Order is preserved from the query result - assert result[0] == (100, "hello") - assert result[1] == (150, "world") - -def test_get_revealed_commitment_by_hotkey_invalid_address(subtensor): - """Test get_revealed_commitment_by_hotkey raises error for invalid address.""" - with pytest.raises(ValueError, match="Invalid ss58 address"): - subtensor.get_revealed_commitment_by_hotkey( - netuid=1, - hotkey_ss58="invalid_address" - ) - -def test_get_revealed_commitment_by_hotkey_none(subtensor, mocker): - """Test get_revealed_commitment_by_hotkey returns None when query returns None.""" - mocker.patch.object(subtensor, 'query_module', return_value=None) - - result = subtensor.get_revealed_commitment_by_hotkey( - netuid=1, - hotkey_ss58="5C4hrfjw9DjXZTzV3MwzrrAr9P1MJhSrvWGWqi1eSuyUpnhM" - ) - - assert result is None From 1fe3ae64a781f1700647b8d18ca29a582115ca61 Mon Sep 17 00:00:00 2001 From: Dairus Date: Tue, 30 Dec 2025 00:29:07 -0800 Subject: [PATCH 5/8] Update .github/workflows/monitor_requirements_size_master.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/monitor_requirements_size_master.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/monitor_requirements_size_master.yml b/.github/workflows/monitor_requirements_size_master.yml index 61d2763a03..af87292257 100644 --- a/.github/workflows/monitor_requirements_size_master.yml +++ b/.github/workflows/monitor_requirements_size_master.yml @@ -12,7 +12,7 @@ on: permissions: pull-requests: write contents: read - issues: write + issues: write jobs: read-python-versions: From 825d9c05c6a3c2b98d83ddcabd4ca886211daae6 Mon Sep 17 00:00:00 2001 From: Dairus Date: Tue, 30 Dec 2025 00:31:02 -0800 Subject: [PATCH 6/8] Update subtensor.py From 010ceedaa65d8e858c7860c00ef9329c51bff352 Mon Sep 17 00:00:00 2001 From: Roman <167799377+basfroman@users.noreply.github.com> Date: Tue, 30 Dec 2025 03:19:29 -0600 Subject: [PATCH 7/8] Update bittensor/core/subtensor.py --- bittensor/core/subtensor.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bittensor/core/subtensor.py b/bittensor/core/subtensor.py index 7a36c9de0b..24e5f6e814 100644 --- a/bittensor/core/subtensor.py +++ b/bittensor/core/subtensor.py @@ -3071,7 +3071,6 @@ def get_revealed_commitment_by_hotkey( Returns: A tuple of reveal block and commitment message. - Notes: - """ From 8135462aa8f39e0cb449610835eb5d3b15ec18c6 Mon Sep 17 00:00:00 2001 From: Roman <167799377+basfroman@users.noreply.github.com> Date: Tue, 30 Dec 2025 03:21:03 -0600 Subject: [PATCH 8/8] Update bittensor/core/subtensor.py --- bittensor/core/subtensor.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bittensor/core/subtensor.py b/bittensor/core/subtensor.py index 24e5f6e814..6862f3a1c4 100644 --- a/bittensor/core/subtensor.py +++ b/bittensor/core/subtensor.py @@ -3071,6 +3071,7 @@ def get_revealed_commitment_by_hotkey( Returns: A tuple of reveal block and commitment message. + Notes: - """