bittensor-cli 8.2.0rc8__tar.gz → 8.2.0rc10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/PKG-INFO +1 -1
  2. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/__init__.py +1 -1
  3. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/cli.py +1 -1
  4. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/subtensor_interface.py +2 -1
  5. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/stake/stake.py +3 -5
  6. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/subnets.py +17 -13
  7. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/sudo.py +5 -1
  8. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/PKG-INFO +1 -1
  9. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/README.md +0 -0
  10. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/doc_generation_helper.py +0 -0
  11. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/__init__.py +0 -0
  12. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/__init__.py +0 -0
  13. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/async_substrate_interface.py +0 -0
  14. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/balances.py +0 -0
  15. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/chain_data.py +0 -0
  16. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/extrinsics/__init__.py +0 -0
  17. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/extrinsics/registration.py +0 -0
  18. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/extrinsics/root.py +0 -0
  19. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/extrinsics/transfer.py +0 -0
  20. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/minigraph.py +0 -0
  21. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/networking.py +0 -0
  22. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/templates/table.j2 +0 -0
  23. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/bittensor/utils.py +0 -0
  24. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/__init__.py +0 -0
  25. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/stake/__init__.py +0 -0
  26. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/stake/children_hotkeys.py +0 -0
  27. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/wallets.py +0 -0
  28. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli/src/commands/weights.py +0 -0
  29. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/SOURCES.txt +0 -0
  30. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/dependency_links.txt +0 -0
  31. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/entry_points.txt +0 -0
  32. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/requires.txt +0 -0
  33. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/bittensor_cli.egg-info/top_level.txt +0 -0
  34. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/setup.cfg +0 -0
  35. {bittensor-cli-8.2.0rc8 → bittensor-cli-8.2.0rc10}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bittensor-cli
3
- Version: 8.2.0rc8
3
+ Version: 8.2.0rc10
4
4
  Summary: Bittensor CLI
5
5
  Home-page: https://github.com/opentensor/btcli
6
6
  Author: bittensor.com
@@ -18,6 +18,6 @@
18
18
  from .cli import CLIManager
19
19
 
20
20
 
21
- __version__ = "8.2.0rc8"
21
+ __version__ = "8.2.0rc10"
22
22
 
23
23
  __all__ = ["CLIManager", "__version__"]
@@ -62,7 +62,7 @@ except ImportError:
62
62
  pass
63
63
 
64
64
 
65
- __version__ = "8.2.0rc8"
65
+ __version__ = "8.2.0rc10"
66
66
 
67
67
 
68
68
  _core_version = re.match(r"^\d+\.\d+\.\d+", __version__).group(0)
@@ -1392,10 +1392,11 @@ class SubtensorInterface:
1392
1392
 
1393
1393
  return StakeInfo.list_of_tuple_from_vec_u8(bytes_result) # type: ignore
1394
1394
 
1395
- async def get_all_subnet_dynamic_info(self) -> list["DynamicInfo"]:
1395
+ async def get_all_subnet_dynamic_info(self, block_hash: Optional[str] = None) -> list["DynamicInfo"]:
1396
1396
  query = await self.substrate.runtime_call(
1397
1397
  "SubnetInfoRuntimeApi",
1398
1398
  "get_all_dynamic_info",
1399
+ block_hash=block_hash,
1399
1400
  )
1400
1401
  subnets = DynamicInfo.list_from_vec_u8(bytes.fromhex(query.decode()[2:]))
1401
1402
  return subnets
@@ -1999,7 +1999,7 @@ async def stake_list(
1999
1999
  (
2000
2000
  substakes,
2001
2001
  registered_delegate_info,
2002
- dynamic_info,
2002
+ _dynamic_info,
2003
2003
  ) = await asyncio.gather(
2004
2004
  subtensor.get_stake_info_for_coldkeys(
2005
2005
  coldkey_ss58_list=[coldkey_address], block_hash=block_hash
@@ -2008,6 +2008,7 @@ async def stake_list(
2008
2008
  subtensor.get_all_subnet_dynamic_info(),
2009
2009
  )
2010
2010
  sub_stakes = substakes[coldkey_address]
2011
+ dynamic_info = {info.netuid: info for info in _dynamic_info}
2011
2012
  return (
2012
2013
  sub_stakes,
2013
2014
  registered_delegate_info,
@@ -2195,9 +2196,7 @@ async def stake_list(
2195
2196
  f"{stake_value} {symbol}"
2196
2197
  if netuid != 0
2197
2198
  else f"{symbol} {stake_value}", # Stake (a)
2198
- f"{millify_tao(pool.price.tao)} τ/{symbol}"
2199
- if not verbose
2200
- else f"{pool.price.tao:.4f} τ/{symbol}", # Rate (t/a)
2199
+ f"{pool.price.tao:.4f} τ/{symbol}", # Rate (t/a)
2201
2200
  # f"τ {millify_tao(tao_ownership.tao)}" if not verbose else f"{tao_ownership}", # TAO equiv
2202
2201
  swap_value, # Swap(α) -> τ
2203
2202
  "YES"
@@ -2483,7 +2482,6 @@ async def stake_list(
2483
2482
  if stake.hotkey_ss58 == selected_hotkey
2484
2483
  ]
2485
2484
 
2486
- dynamic_info = {info.netuid: info for info in dynamic_info_}
2487
2485
  block_number = await subtensor.substrate.get_block_number(None)
2488
2486
 
2489
2487
  previous_block = current_block
@@ -324,9 +324,7 @@ async def subnets_list(
324
324
  else f"{subnet.alpha_out.tao:,.4f}"
325
325
  )
326
326
  price_value = (
327
- f"{millify_tao(subnet.price.tao)}"
328
- if not verbose
329
- else f"{subnet.price.tao:,.4f}"
327
+ f"{subnet.price.tao:,.4f}"
330
328
  )
331
329
 
332
330
  # Market Cap
@@ -534,7 +532,7 @@ async def subnets_list(
534
532
  "supply": supply,
535
533
  "blocks_since_last_step": subnet.blocks_since_last_step,
536
534
  }
537
- prev = previous_data.get(netuid) if previous_data else {}
535
+ prev = previous_data.get(netuid, {}) if previous_data else {}
538
536
 
539
537
  # Prepare cells
540
538
  if netuid == 0:
@@ -559,7 +557,7 @@ async def subnets_list(
559
557
  prev.get("price"),
560
558
  unit=f"τ/{symbol}",
561
559
  precision=4,
562
- millify=True if not verbose else False,
560
+ millify=False,
563
561
  )
564
562
 
565
563
  alpha_out_cell = format_cell(
@@ -801,7 +799,10 @@ async def show(
801
799
  ) -> Optional[str]:
802
800
  async def show_root():
803
801
  all_subnets = await subtensor.get_all_subnet_dynamic_info()
804
- root_info = all_subnets[0]
802
+ root_info = next((s for s in all_subnets if s.netuid == 0), None)
803
+ if root_info is None:
804
+ print_error("The root subnet does not exist")
805
+ raise typer.Exit()
805
806
 
806
807
  hex_bytes_result, identities, old_identities = await asyncio.gather(
807
808
  subtensor.query_runtime_api(
@@ -1035,24 +1036,27 @@ async def show(
1035
1036
  subtensor.query_all_identities(),
1036
1037
  subtensor.get_delegate_identities(),
1037
1038
  )
1038
- subnet_info = _subnet_info[netuid_]
1039
+ subnet_info = next((s for s in _subnet_info if s.netuid == netuid_), None)
1040
+ if subnet_info is None:
1041
+ print_error(f"Subnet {netuid_} does not exist")
1042
+ raise typer.Exit()
1039
1043
 
1040
1044
  if (bytes_result := hex_bytes_result) is None:
1041
- err_console.print(f"Subnet {netuid_} does not exist")
1042
- return
1045
+ print_error(f"Subnet {netuid_} does not exist")
1046
+ raise typer.Exit()
1043
1047
 
1044
1048
  if bytes_result.startswith("0x"):
1045
1049
  bytes_result = bytes.fromhex(bytes_result[2:])
1046
1050
 
1047
1051
  subnet_state: "SubnetState" = SubnetState.from_vec_u8(bytes_result)
1048
1052
  if subnet_info is None:
1049
- err_console.print(f"Subnet {netuid_} does not exist")
1050
- return
1053
+ print_error(f"Subnet {netuid_} does not exist")
1054
+ raise typer.Exit()
1051
1055
  elif len(subnet_state.hotkeys) == 0:
1052
- err_console.print(
1056
+ print_error(
1053
1057
  f"Subnet {netuid_} is currently empty with 0 UIDs registered."
1054
1058
  )
1055
- return
1059
+ raise typer.Exit()
1056
1060
 
1057
1061
  # Define table properties
1058
1062
  table = Table(
@@ -1,6 +1,7 @@
1
1
  import asyncio
2
2
  from typing import TYPE_CHECKING, Union, Optional
3
3
 
4
+ import typer
4
5
  from bittensor_wallet import Wallet
5
6
  from bittensor_wallet.errors import KeyFileError
6
7
  from rich import box
@@ -495,7 +496,10 @@ async def get_hyperparameters(subtensor: "SubtensorInterface", netuid: int):
495
496
  return False
496
497
  subnet = await subtensor.get_subnet_hyperparameters(netuid)
497
498
  _subnet_info = await subtensor.get_all_subnet_dynamic_info()
498
- subnet_info = _subnet_info[netuid]
499
+ subnet_info = next((s for s in _subnet_info if s.netuid == netuid), None)
500
+ if subnet_info is None:
501
+ print_error(f"Subnet with netuid {netuid} does not exist.")
502
+ raise typer.Exit()
499
503
 
500
504
  table = Table(
501
505
  Column("[white]HYPERPARAMETER", style=COLOR_PALETTE['SUDO']['HYPERPARAMETER']),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bittensor-cli
3
- Version: 8.2.0rc8
3
+ Version: 8.2.0rc10
4
4
  Summary: Bittensor CLI
5
5
  Home-page: https://github.com/opentensor/btcli
6
6
  Author: bittensor.com