Skip to content

Commit 5b36387

Browse files
authored
Merge pull request #2637 from opentensor/bug/roman/after-rc-fixes
Bug fixes after release SDK v9.0.0rc1
2 parents 8332ef6 + 8cb8d0a commit 5b36387

File tree

4 files changed

+45
-18
lines changed

4 files changed

+45
-18
lines changed

bittensor/core/async_subtensor.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -763,7 +763,7 @@ async def get_all_subnets_info(
763763
"""
764764
result = await self.query_runtime_api(
765765
runtime_api="SubnetInfoRuntimeApi",
766-
method="get_subnets_info",
766+
method="get_subnets_info_v2",
767767
params=[],
768768
block=block,
769769
block_hash=block_hash,

bittensor/core/chain_data/subnet_state.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55

66
from dataclasses import dataclass
77

8-
from scalecodec.utils.ss58 import ss58_encode
9-
108
from bittensor.core.chain_data.info_base import InfoBase
11-
from bittensor.core.chain_data.utils import SS58_FORMAT
9+
from bittensor.core.chain_data.utils import decode_account_id
1210
from bittensor.utils import u16_normalized_float
1311
from bittensor.utils.balance import Balance
1412

@@ -39,8 +37,8 @@ def _from_dict(cls, decoded: dict) -> "SubnetState":
3937
netuid = decoded["netuid"]
4038
return SubnetState(
4139
netuid=netuid,
42-
hotkeys=[ss58_encode(val, SS58_FORMAT) for val in decoded["hotkeys"]],
43-
coldkeys=[ss58_encode(val, SS58_FORMAT) for val in decoded["coldkeys"]],
40+
hotkeys=[decode_account_id(hk) for hk in decoded.get("hotkeys", [])],
41+
coldkeys=[decode_account_id(ck) for ck in decoded.get("coldkeys", [])],
4442
active=decoded["active"],
4543
validator_permit=decoded["validator_permit"],
4644
pruning_score=[

bittensor/core/subtensor.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@
1313
from bittensor.core.async_subtensor import ProposalVoteData
1414
from bittensor.core.axon import Axon
1515
from bittensor.core.chain_data import (
16-
decode_account_id,
16+
DelegateInfo,
17+
DynamicInfo,
1718
MetagraphInfo,
19+
NeuronInfo,
20+
NeuronInfoLite,
21+
StakeInfo,
22+
SubnetHyperparameters,
1823
WeightCommitInfo,
24+
SubnetInfo,
25+
decode_account_id,
1926
)
20-
from bittensor.core.chain_data.delegate_info import DelegateInfo
21-
from bittensor.core.chain_data.dynamic_info import DynamicInfo
22-
from bittensor.core.chain_data.neuron_info import NeuronInfo
23-
from bittensor.core.chain_data.neuron_info_lite import NeuronInfoLite
24-
from bittensor.core.chain_data.stake_info import StakeInfo
25-
from bittensor.core.chain_data.subnet_hyperparameters import SubnetHyperparameters
26-
from bittensor.core.chain_data.subnet_info import SubnetInfo
2727
from bittensor.core.config import Config
2828
from bittensor.core.extrinsics.commit_reveal import commit_reveal_v3_extrinsic
2929
from bittensor.core.extrinsics.commit_weights import (
@@ -66,8 +66,7 @@
6666
TYPE_REGISTRY,
6767
DELEGATES_DETAILS_URL,
6868
)
69-
from bittensor.core.types import ParamWithTypes
70-
from bittensor.core.types import SubtensorMixin
69+
from bittensor.core.types import ParamWithTypes, SubtensorMixin
7170
from bittensor.utils import (
7271
torch,
7372
format_error_message,
@@ -83,13 +82,13 @@
8382
check_and_convert_to_balance,
8483
)
8584
from bittensor.utils.btlogging import logging
85+
from bittensor.utils.delegates_details import DelegatesDetails
8686
from bittensor.utils.weight_utils import generate_weight_hash
8787

8888
if TYPE_CHECKING:
8989
from bittensor_wallet import Wallet
9090
from async_substrate_interface.sync_substrate import QueryMapResult
9191
from async_substrate_interface.types import ScaleObj
92-
from bittensor.utils.delegates_details import DelegatesDetails
9392
from scalecodec.types import GenericCall
9493

9594

@@ -1798,6 +1797,8 @@ def query_identity(self, coldkey_ss58: str, block: Optional[int] = None) -> dict
17981797
params=[coldkey_ss58],
17991798
block_hash=self.determine_block_hash(block),
18001799
)
1800+
if not identity_info:
1801+
return {}
18011802
try:
18021803
return _decode_hex_identity_dict(identity_info)
18031804
except TypeError:

tests/unit_tests/test_async_subtensor.py

+29-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import asyncio
21
import unittest.mock as mock
32

43
import pytest
@@ -2609,3 +2608,32 @@ async def test_commit_weights_with_exception(subtensor, mocker):
26092608
assert mocked_commit_weights_extrinsic.call_count == max_retries
26102609
assert result is False
26112610
assert "No attempt made. Perhaps it is too soon to commit weights!" in message
2611+
2612+
2613+
@pytest.mark.asyncio
2614+
async def test_get_all_subnets_info_success(mocker, subtensor):
2615+
"""Test get_all_subnets_info returns correct data when subnet information is found."""
2616+
# Prep
2617+
block = 123
2618+
2619+
mocker.patch.object(subtensor, "query_runtime_api")
2620+
mocker.patch.object(
2621+
async_subtensor.SubnetInfo,
2622+
"list_from_dicts",
2623+
)
2624+
2625+
# Call
2626+
await subtensor.get_all_subnets_info(block)
2627+
2628+
# Asserts
2629+
subtensor.query_runtime_api.assert_awaited_once_with(
2630+
runtime_api="SubnetInfoRuntimeApi",
2631+
method="get_subnets_info_v2",
2632+
params=[],
2633+
block=block,
2634+
block_hash=None,
2635+
reuse_block=False,
2636+
)
2637+
async_subtensor.SubnetInfo.list_from_dicts.assert_called_once_with(
2638+
subtensor.query_runtime_api.return_value,
2639+
)

0 commit comments

Comments
 (0)