Source code for bittensor.core.chain_data.subnet_info

from dataclasses import dataclass
from typing import Any

from bittensor.core.chain_data.info_base import InfoBase
from bittensor.core.chain_data.utils import decode_account_id
from bittensor.utils import u16_normalized_float
from bittensor.utils.balance import Balance


[docs] @dataclass class SubnetInfo(InfoBase): """Dataclass for subnet info.""" netuid: int rho: int kappa: int difficulty: int immunity_period: int max_allowed_validators: int min_allowed_weights: int max_weight_limit: float scaling_law_power: float subnetwork_n: int max_n: int blocks_since_epoch: int tempo: int modality: int connection_requirements: dict[str, float] emission_value: float burn: Balance owner_ss58: str @classmethod def _from_dict(cls, decoded: Any) -> "SubnetInfo": """Returns a SubnetInfo object from decoded chain data.""" return SubnetInfo( blocks_since_epoch=decoded["blocks_since_last_step"], burn=Balance.from_rao(decoded["burn"]), connection_requirements={ str(int(netuid)): u16_normalized_float(int(req)) for (netuid, req) in decoded["network_connect"] }, difficulty=decoded["difficulty"], emission_value=decoded["emission_value"], immunity_period=decoded["immunity_period"], kappa=decoded["kappa"], max_allowed_validators=decoded["max_allowed_validators"], max_n=decoded["max_allowed_uids"], max_weight_limit=decoded["max_weights_limit"], min_allowed_weights=decoded["min_allowed_weights"], modality=decoded["network_modality"], netuid=decoded["netuid"], owner_ss58=decode_account_id(decoded["owner"]), rho=decoded["rho"], scaling_law_power=decoded["scaling_law_power"], subnetwork_n=decoded["subnetwork_n"], tempo=decoded["tempo"], )