Source code for bittensor.core.chain_data.subnet_info
from dataclasses import dataclass
import bt_decode
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:
    """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
[docs]
    @classmethod
    def list_from_vec_u8(cls, vec_u8: bytes) -> list["SubnetInfo"]:
        decoded = bt_decode.SubnetInfo.decode_vec_option(vec_u8)
        result = []
        for d in decoded:
            result.append(
                SubnetInfo(
                    netuid=d.netuid,
                    rho=d.rho,
                    kappa=d.kappa,
                    difficulty=d.difficulty,
                    immunity_period=d.immunity_period,
                    max_allowed_validators=d.max_allowed_validators,
                    min_allowed_weights=d.min_allowed_weights,
                    max_weight_limit=d.max_weights_limit,
                    scaling_law_power=d.scaling_law_power,
                    subnetwork_n=d.subnetwork_n,
                    max_n=d.max_allowed_uids,
                    blocks_since_epoch=d.blocks_since_last_step,
                    tempo=d.tempo,
                    modality=d.network_modality,
                    connection_requirements={
                        str(int(netuid)): u16_normalized_float(int(req))
                        for (netuid, req) in d.network_connect
                    },
                    emission_value=d.emission_values,
                    burn=Balance.from_rao(d.burn),
                    owner_ss58=decode_account_id(d.owner),
                )
            )
        return result