From b757101ebb394600474d0faa0e9d013a034311b3 Mon Sep 17 00:00:00 2001 From: BD Himes Date: Mon, 16 Mar 2026 15:41:45 +0200 Subject: [PATCH] Properly applies the type hint that was mentioned in #855 --- bittensor_cli/src/bittensor/chain_data.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/bittensor_cli/src/bittensor/chain_data.py b/bittensor_cli/src/bittensor/chain_data.py index 718dbd694..8d9723e05 100644 --- a/bittensor_cli/src/bittensor/chain_data.py +++ b/bittensor_cli/src/bittensor/chain_data.py @@ -1,7 +1,8 @@ from abc import abstractmethod from dataclasses import dataclass +from collections.abc import Sequence from enum import Enum -from typing import Optional, Any, Union +from typing import Optional, Any, Union, Callable, Hashable import netaddr from scalecodec.utils.ss58 import ss58_encode @@ -69,9 +70,12 @@ def _chr_str(codes: tuple[int]) -> str: return "".join(map(chr, codes)) -def process_nested(data: Union[tuple, dict], chr_transform): +def process_nested( + data: Sequence[dict[Hashable, tuple[int]]] | dict, + chr_transform: Callable[[tuple[int]], str], +) -> list[dict[Hashable, str]] | dict[Hashable, str]: """Processes nested data structures by applying a transformation function to their elements.""" - if isinstance(data, (list, tuple)): + if isinstance(data, Sequence): if len(data) > 0 and isinstance(data[0], dict): return [ {k: chr_transform(v) for k, v in item.items()} @@ -79,9 +83,12 @@ def process_nested(data: Union[tuple, dict], chr_transform): else None for item in data ] + # TODO @abe why do we kind of silently fail here? return {} elif isinstance(data, dict): return {k: chr_transform(v) for k, v in data.items()} + else: + raise TypeError(f"Unsupported data type {type(data)}") @dataclass