bittensor-cli 9.0.2__py3-none-any.whl → 9.0.3__py3-none-any.whl

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.
bittensor_cli/cli.py CHANGED
@@ -74,8 +74,6 @@ except ImportError:
74
74
  pass
75
75
 
76
76
 
77
-
78
-
79
77
  _epilog = "Made with [bold red]:heart:[/bold red] by The Openτensor Foundaτion"
80
78
 
81
79
  np.set_printoptions(precision=8, suppress=True, floatmode="fixed")
@@ -481,7 +479,7 @@ def version_callback(value: bool):
481
479
  f"{repo.active_branch.name}/"
482
480
  f"{repo.commit()}"
483
481
  )
484
- except (NameError, GitError):
482
+ except (TypeError, GitError):
485
483
  version = f"BTCLI version: {__version__}"
486
484
  typer.echo(version)
487
485
  raise typer.Exit()
@@ -3323,9 +3321,9 @@ class CLIManager:
3323
3321
  def stake_move(
3324
3322
  self,
3325
3323
  network: Optional[list[str]] = Options.network,
3326
- wallet_name=Options.wallet_name,
3327
- wallet_path=Options.wallet_path,
3328
- wallet_hotkey=Options.wallet_hotkey,
3324
+ wallet_name: Optional[str] = Options.wallet_name,
3325
+ wallet_path: Optional[str] = Options.wallet_path,
3326
+ wallet_hotkey: Optional[str] = Options.wallet_hotkey,
3329
3327
  origin_netuid: Optional[int] = typer.Option(
3330
3328
  None, "--origin-netuid", help="Origin netuid"
3331
3329
  ),
@@ -3535,14 +3533,45 @@ class CLIManager:
3535
3533
  )
3536
3534
  self.verbosity_handler(quiet, verbose)
3537
3535
 
3536
+ if not wallet_name:
3537
+ wallet_name = Prompt.ask(
3538
+ "Enter the [blue]origin wallet name[/blue]",
3539
+ default=self.config.get("wallet_name") or defaults.wallet.name,
3540
+ )
3538
3541
  wallet = self.wallet_ask(
3539
- wallet_name,
3540
- wallet_path,
3541
- wallet_hotkey,
3542
- ask_for=[WO.NAME, WO.PATH, WO.HOTKEY],
3543
- validate=WV.WALLET_AND_HOTKEY,
3542
+ wallet_name, wallet_path, wallet_hotkey, ask_for=[WO.NAME]
3544
3543
  )
3545
3544
 
3545
+ if not wallet_hotkey:
3546
+ origin_hotkey = Prompt.ask(
3547
+ "Enter the [blue]origin hotkey[/blue] name or "
3548
+ "[blue]ss58 address[/blue] where the stake will be moved from",
3549
+ default=self.config.get("wallet_hotkey") or defaults.wallet.hotkey,
3550
+ )
3551
+ if is_valid_ss58_address(origin_hotkey):
3552
+ origin_hotkey = origin_hotkey
3553
+ else:
3554
+ wallet = self.wallet_ask(
3555
+ wallet_name,
3556
+ wallet_path,
3557
+ origin_hotkey,
3558
+ ask_for=[WO.NAME, WO.PATH, WO.HOTKEY],
3559
+ validate=WV.WALLET_AND_HOTKEY,
3560
+ )
3561
+ origin_hotkey = wallet.hotkey.ss58_address
3562
+ else:
3563
+ if is_valid_ss58_address(wallet_hotkey):
3564
+ origin_hotkey = wallet_hotkey
3565
+ else:
3566
+ wallet = self.wallet_ask(
3567
+ wallet_name,
3568
+ wallet_path,
3569
+ wallet_hotkey,
3570
+ ask_for=[],
3571
+ validate=WV.WALLET_AND_HOTKEY,
3572
+ )
3573
+ origin_hotkey = wallet.hotkey.ss58_address
3574
+
3546
3575
  if not dest_ss58:
3547
3576
  dest_ss58 = Prompt.ask(
3548
3577
  "Enter the [blue]destination wallet name[/blue] or [blue]coldkey SS58 address[/blue]"
@@ -3580,6 +3609,7 @@ class CLIManager:
3580
3609
  move_stake.transfer_stake(
3581
3610
  wallet=wallet,
3582
3611
  subtensor=self.initialize_chain(network),
3612
+ origin_hotkey=origin_hotkey,
3583
3613
  origin_netuid=origin_netuid,
3584
3614
  dest_netuid=dest_netuid,
3585
3615
  dest_coldkey_ss58=dest_ss58,
@@ -1327,20 +1327,29 @@ class SubtensorInterface:
1327
1327
  This function is useful for analyzing the stake distribution and delegation patterns of multiple
1328
1328
  accounts simultaneously, offering a broader perspective on network participation and investment strategies.
1329
1329
  """
1330
- result = await self.query_runtime_api(
1331
- runtime_api="StakeInfoRuntimeApi",
1332
- method="get_stake_info_for_coldkeys",
1333
- params=[coldkey_ss58_list],
1334
- block_hash=block_hash,
1335
- )
1336
- if result is None:
1337
- return None
1338
-
1330
+ BATCH_SIZE = 60
1331
+
1332
+ tasks = []
1333
+ for i in range(0, len(coldkey_ss58_list), BATCH_SIZE):
1334
+ ss58_chunk = coldkey_ss58_list[i : i + BATCH_SIZE]
1335
+ tasks.append(
1336
+ self.query_runtime_api(
1337
+ runtime_api="StakeInfoRuntimeApi",
1338
+ method="get_stake_info_for_coldkeys",
1339
+ params=[ss58_chunk],
1340
+ block_hash=block_hash,
1341
+ )
1342
+ )
1343
+ results = await asyncio.gather(*tasks)
1339
1344
  stake_info_map = {}
1340
- for coldkey_bytes, stake_info_list in result:
1341
- coldkey_ss58 = decode_account_id(coldkey_bytes)
1342
- stake_info_map[coldkey_ss58] = StakeInfo.list_from_any(stake_info_list)
1343
- return stake_info_map
1345
+ for result in results:
1346
+ if result is None:
1347
+ continue
1348
+ for coldkey_bytes, stake_info_list in result:
1349
+ coldkey_ss58 = decode_account_id(coldkey_bytes)
1350
+ stake_info_map[coldkey_ss58] = StakeInfo.list_from_any(stake_info_list)
1351
+
1352
+ return stake_info_map if stake_info_map else None
1344
1353
 
1345
1354
  async def all_subnets(self, block_hash: Optional[str] = None) -> list[DynamicInfo]:
1346
1355
  result = await self.query_runtime_api(
@@ -17,6 +17,7 @@ from bittensor_cli.src.bittensor.utils import (
17
17
  is_valid_ss58_address,
18
18
  print_error,
19
19
  print_verbose,
20
+ unlock_key,
20
21
  )
21
22
  from bittensor_wallet import Wallet
22
23
  from bittensor_wallet.errors import KeyFileError
@@ -338,10 +339,7 @@ async def stake_add(
338
339
  if prompt:
339
340
  if not Confirm.ask("Would you like to continue?"):
340
341
  raise typer.Exit()
341
- try:
342
- wallet.unlock_coldkey()
343
- except KeyFileError:
344
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
342
+ if not unlock_key(wallet).success:
345
343
  return False
346
344
 
347
345
  if safe_staking:
@@ -671,6 +671,8 @@ async def childkey_take(
671
671
  chk_take = await get_childkey_take(
672
672
  subtensor=subtensor, netuid=netuid, hotkey=ss58
673
673
  )
674
+ if chk_take is None:
675
+ chk_take = 0
674
676
  chk_take = u16_to_float(chk_take)
675
677
  console.print(
676
678
  f"Child take for {ss58} is: {chk_take * 100:.2f}% on netuid {netuid}."
@@ -17,6 +17,7 @@ from bittensor_cli.src.bittensor.utils import (
17
17
  format_error_message,
18
18
  group_subnets,
19
19
  get_subnet_name,
20
+ unlock_key,
20
21
  )
21
22
 
22
23
  if TYPE_CHECKING:
@@ -621,10 +622,7 @@ async def move_stake(
621
622
  raise typer.Exit()
622
623
 
623
624
  # Perform moving operation.
624
- try:
625
- wallet.unlock_coldkey()
626
- except KeyFileError:
627
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
625
+ if not unlock_key(wallet).success:
628
626
  return False
629
627
  with console.status(
630
628
  f"\n:satellite: Moving [blue]{amount_to_move_as_balance}[/blue] from [blue]{origin_hotkey}[/blue] on netuid: [blue]{origin_netuid}[/blue] \nto "
@@ -697,6 +695,7 @@ async def transfer_stake(
697
695
  wallet: Wallet,
698
696
  subtensor: "SubtensorInterface",
699
697
  amount: float,
698
+ origin_hotkey: str,
700
699
  origin_netuid: int,
701
700
  dest_netuid: int,
702
701
  dest_coldkey_ss58: str,
@@ -709,6 +708,7 @@ async def transfer_stake(
709
708
  wallet (Wallet): Bittensor wallet object.
710
709
  subtensor (SubtensorInterface): Subtensor interface instance.
711
710
  amount (float): Amount to transfer.
711
+ origin_hotkey (str): The hotkey SS58 to transfer the stake from.
712
712
  origin_netuid (int): The netuid to transfer stake from.
713
713
  dest_netuid (int): The netuid to transfer stake to.
714
714
  dest_coldkey_ss58 (str): The destination coldkey to transfer stake to.
@@ -739,16 +739,15 @@ async def transfer_stake(
739
739
  return False
740
740
 
741
741
  # Get current stake balances
742
- hotkey_ss58 = wallet.hotkey.ss58_address
743
742
  with console.status(f"Retrieving stake data from {subtensor.network}..."):
744
743
  current_stake = await subtensor.get_stake(
745
744
  coldkey_ss58=wallet.coldkeypub.ss58_address,
746
- hotkey_ss58=hotkey_ss58,
745
+ hotkey_ss58=origin_hotkey,
747
746
  netuid=origin_netuid,
748
747
  )
749
748
  current_dest_stake = await subtensor.get_stake(
750
749
  coldkey_ss58=dest_coldkey_ss58,
751
- hotkey_ss58=hotkey_ss58,
750
+ hotkey_ss58=origin_hotkey,
752
751
  netuid=dest_netuid,
753
752
  )
754
753
  amount_to_transfer = Balance.from_tao(amount).set_unit(origin_netuid)
@@ -768,8 +767,8 @@ async def transfer_stake(
768
767
  subtensor=subtensor,
769
768
  origin_netuid=origin_netuid,
770
769
  destination_netuid=dest_netuid,
771
- origin_hotkey=hotkey_ss58,
772
- destination_hotkey=hotkey_ss58,
770
+ origin_hotkey=origin_hotkey,
771
+ destination_hotkey=origin_hotkey,
773
772
  amount_to_move=amount_to_transfer,
774
773
  )
775
774
 
@@ -777,10 +776,7 @@ async def transfer_stake(
777
776
  raise typer.Exit()
778
777
 
779
778
  # Perform transfer operation
780
- try:
781
- wallet.unlock_coldkey()
782
- except KeyFileError:
783
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
779
+ if not unlock_key(wallet).success:
784
780
  return False
785
781
 
786
782
  with console.status("\n:satellite: Transferring stake ..."):
@@ -789,7 +785,7 @@ async def transfer_stake(
789
785
  call_function="transfer_stake",
790
786
  call_params={
791
787
  "destination_coldkey": dest_coldkey_ss58,
792
- "hotkey": hotkey_ss58,
788
+ "hotkey": origin_hotkey,
793
789
  "origin_netuid": origin_netuid,
794
790
  "destination_netuid": dest_netuid,
795
791
  "alpha_amount": amount_to_transfer.rao,
@@ -820,12 +816,12 @@ async def transfer_stake(
820
816
  new_stake, new_dest_stake = await asyncio.gather(
821
817
  subtensor.get_stake(
822
818
  coldkey_ss58=wallet.coldkeypub.ss58_address,
823
- hotkey_ss58=hotkey_ss58,
819
+ hotkey_ss58=origin_hotkey,
824
820
  netuid=origin_netuid,
825
821
  ),
826
822
  subtensor.get_stake(
827
823
  coldkey_ss58=dest_coldkey_ss58,
828
- hotkey_ss58=hotkey_ss58,
824
+ hotkey_ss58=origin_hotkey,
829
825
  netuid=dest_netuid,
830
826
  ),
831
827
  )
@@ -933,10 +929,7 @@ async def swap_stake(
933
929
  raise typer.Exit()
934
930
 
935
931
  # Perform swap operation
936
- try:
937
- wallet.unlock_coldkey()
938
- except KeyFileError:
939
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
932
+ if not unlock_key(wallet).success:
940
933
  return False
941
934
 
942
935
  with console.status(
@@ -21,6 +21,7 @@ from bittensor_cli.src.bittensor.utils import (
21
21
  is_valid_ss58_address,
22
22
  format_error_message,
23
23
  group_subnets,
24
+ unlock_key,
24
25
  )
25
26
 
26
27
  if TYPE_CHECKING:
@@ -268,10 +269,7 @@ async def unstake(
268
269
  raise typer.Exit()
269
270
 
270
271
  # Execute extrinsics
271
- try:
272
- wallet.unlock_coldkey()
273
- except KeyFileError:
274
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
272
+ if not unlock_key(wallet).success:
275
273
  return False
276
274
 
277
275
  with console.status("\n:satellite: Performing unstaking operations...") as status:
@@ -465,10 +463,7 @@ async def unstake_all(
465
463
  ):
466
464
  return False
467
465
 
468
- try:
469
- wallet.unlock_coldkey()
470
- except KeyFileError:
471
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
466
+ if not unlock_key(wallet).success:
472
467
  return False
473
468
 
474
469
  with console.status("Unstaking all stakes...") as status:
@@ -97,8 +97,10 @@ async def register_subnetwork_extrinsic(
97
97
  sn_burn_cost = await burn_cost(subtensor)
98
98
  if sn_burn_cost > your_balance:
99
99
  err_console.print(
100
- f"Your balance of: [{COLOR_PALETTE['POOLS']['TAO']}]{your_balance}[{COLOR_PALETTE['POOLS']['TAO']}] is not enough to pay the subnet lock cost of: "
101
- f"[{COLOR_PALETTE['POOLS']['TAO']}]{sn_burn_cost}[{COLOR_PALETTE['POOLS']['TAO']}]"
100
+ f"Your balance of: [{COLOR_PALETTE['POOLS']['TAO']}]{your_balance}[{COLOR_PALETTE['POOLS']['TAO']}]"
101
+ f" is not enough to burn "
102
+ f"[{COLOR_PALETTE['POOLS']['TAO']}]{sn_burn_cost}[{COLOR_PALETTE['POOLS']['TAO']}] "
103
+ f"to register a subnet."
102
104
  )
103
105
  return False
104
106
 
@@ -107,7 +109,7 @@ async def register_subnetwork_extrinsic(
107
109
  f"Your balance is: [{COLOR_PALETTE['POOLS']['TAO']}]{your_balance}"
108
110
  )
109
111
  if not Confirm.ask(
110
- f"Do you want to register a subnet for [{COLOR_PALETTE['POOLS']['TAO']}]{sn_burn_cost}?"
112
+ f"Do you want to burn [{COLOR_PALETTE['POOLS']['TAO']}]{sn_burn_cost} to register a subnet?"
111
113
  ):
112
114
  return False
113
115
 
@@ -145,10 +147,7 @@ async def register_subnetwork_extrinsic(
145
147
  )
146
148
  return False
147
149
 
148
- try:
149
- wallet.unlock_coldkey()
150
- except KeyFileError:
151
- err_console.print("Error decrypting coldkey (possibly incorrect password)")
150
+ if not unlock_key(wallet).success:
152
151
  return False
153
152
 
154
153
  with console.status(":satellite: Registering subnet...", spinner="earth"):
@@ -189,6 +189,11 @@ async def set_hyperparameter_extrinsic(
189
189
  ":cross_mark: [red]Invalid hyperparameter specified.[/red]"
190
190
  )
191
191
  return False
192
+ if sudo_:
193
+ if not Confirm.ask(
194
+ "This hyperparam is only settable by root sudo users. If you are not, this will fail. Please confirm"
195
+ ):
196
+ return False
192
197
 
193
198
  substrate = subtensor.substrate
194
199
  msg_value = value if not arbitrary_extrinsic else call_params
bittensor_cli/version.py CHANGED
@@ -1,5 +1,6 @@
1
1
  import re
2
2
 
3
+
3
4
  def version_as_int(version):
4
5
  _core_version = re.match(r"^\d+\.\d+\.\d+", version).group(0)
5
6
  _version_split = _core_version.split(".")
@@ -14,5 +15,5 @@ def version_as_int(version):
14
15
  __new_signature_version__ = 360
15
16
  return __version_as_int__
16
17
 
17
- __version__ = "9.0.2"
18
+ __version__ = "9.0.3"
18
19
  __version_as_int__ = version_as_int(__version__)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bittensor-cli
3
- Version: 9.0.2
3
+ Version: 9.0.3
4
4
  Summary: Bittensor CLI
5
5
  Home-page: https://github.com/opentensor/btcli
6
6
  Author: bittensor.com
@@ -1,14 +1,14 @@
1
1
  bittensor_cli/__init__.py,sha256=Lpv4NkbAQgwrfqFOnTMuR_S-fqGdaWCSLhxnFnGTHM0,1232
2
- bittensor_cli/cli.py,sha256=hiCu9JQFnu22Q1WjpApkhzNvP9EuR3grNYXWcvGoufc,192627
2
+ bittensor_cli/cli.py,sha256=i9KKs432ZN9mb7JDIsFrKD6qS_jfQQaBUn6haTwD-F4,194036
3
3
  bittensor_cli/doc_generation_helper.py,sha256=GexqjEIKulWg84hpNBEchJ840oOgOi7DWpt447nsdNI,91
4
- bittensor_cli/version.py,sha256=W091sz9aNjfMKBgfd7SGgZHim3RwQSv-M8lo7mgPIEY,621
4
+ bittensor_cli/version.py,sha256=34wkPxh1A8pTDhsf7Fo0mtk1I7GfmHzJTaampx1V_nQ,622
5
5
  bittensor_cli/src/__init__.py,sha256=rTtP85aCliJTLdWv2DYFNgw5Fi0KB2--80Xta5_WsXE,26427
6
6
  bittensor_cli/src/bittensor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
7
  bittensor_cli/src/bittensor/balances.py,sha256=EZI8hX-eCkTfuTZq5GMvRYU6DCdl8V_zyZIQWi05K5g,11084
8
8
  bittensor_cli/src/bittensor/chain_data.py,sha256=WV_zX_05Zam1yp_oMX9VIYxu99cGPUGEnhCyH67vNtE,30856
9
9
  bittensor_cli/src/bittensor/minigraph.py,sha256=BIzmSVLfBYiRAeGD_i1LAC8Cw7zxp38a91SIFEPMqYc,10479
10
10
  bittensor_cli/src/bittensor/networking.py,sha256=pZLMs8YXpZzDMLXWMBb_Bj6TVkm_q9khyY-lnbwVMuE,462
11
- bittensor_cli/src/bittensor/subtensor_interface.py,sha256=mprNkG462WW57eRUhMmDE4gHGuMoeIvBeQLLSxIppLI,53098
11
+ bittensor_cli/src/bittensor/subtensor_interface.py,sha256=T9zBmWTR2fhotCrLQ1X0ihdMiy4vymHSkLBRbYy8Fqs,53457
12
12
  bittensor_cli/src/bittensor/utils.py,sha256=E57t4SiASuXCjiXLLU63vK6bK6aKqj9JtIIi9lDOi-k,46238
13
13
  bittensor_cli/src/bittensor/extrinsics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  bittensor_cli/src/bittensor/extrinsics/registration.py,sha256=3mJZ3hw_wZEa-8I0R8WVuKjMQi4Y9EV5FjTCvbY37Iw,63780
@@ -16,20 +16,20 @@ bittensor_cli/src/bittensor/extrinsics/root.py,sha256=N9Fg4VaveRRP1ZN4EZjIWCe04F
16
16
  bittensor_cli/src/bittensor/extrinsics/transfer.py,sha256=FyrRo3yk-065toN4f-1Xes23CE5tqP5KU0dBJkKofUc,8476
17
17
  bittensor_cli/src/bittensor/templates/table.j2,sha256=P2EFiksnO1cQsB8zjK6hVJwUryHTsLslzRE0YtobAV8,10601
18
18
  bittensor_cli/src/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- bittensor_cli/src/commands/sudo.py,sha256=yjmUuOrKkz0Ft2TqHWl4Lw96aYRCEk9kdvtyXCTOASE,31295
19
+ bittensor_cli/src/commands/sudo.py,sha256=erQVUDj101iJcmDL1Ej7tGQHNfWRP5BHpx0dXLHQYbE,31487
20
20
  bittensor_cli/src/commands/wallets.py,sha256=hv9gzh-zPS8gXzgJIfENQVR6BFYxh6abjxmHUjqMhsY,51086
21
21
  bittensor_cli/src/commands/weights.py,sha256=uI7aACKD90JOtYt61VdKL76z7Fe_wh4WtdwMXL6ydD4,16269
22
22
  bittensor_cli/src/commands/stake/__init__.py,sha256=uxomMv_QrYt5Qn3_X5UWFFh45ISjB0JmDmCFxVyX8nQ,6495
23
- bittensor_cli/src/commands/stake/add.py,sha256=ZPFuvlTUT2z23urITj_RLUBe51jqyfZ8l22-zdd2Nzg,25074
24
- bittensor_cli/src/commands/stake/children_hotkeys.py,sha256=9CMc56eg_6-tpRz9x5ml4Brc5SSbhC7KDlJqYgQ4XiU,29576
23
+ bittensor_cli/src/commands/stake/add.py,sha256=F93eM-RBjrjeoSQAq0iBj6LJwBF9BQJVDd4f9bub1f8,24979
24
+ bittensor_cli/src/commands/stake/children_hotkeys.py,sha256=STUeMc9PdzJPx_nfFzPLBUkSc4Wf9b40PJZZZEAKHfI,29630
25
25
  bittensor_cli/src/commands/stake/list.py,sha256=AnzBhUjuwckFAXYwgv9Yk1JHUKu2w1h8_m8-hf77g80,28625
26
- bittensor_cli/src/commands/stake/move.py,sha256=rFCHpkdyUc6tSp1YiJ3fOVG_s6La7YVwQPhXDIBD_FE,37406
27
- bittensor_cli/src/commands/stake/remove.py,sha256=6RnxandM05xAG1QJ_vRtWRI0xlzfZC_4kEJgOPKua0M,47069
26
+ bittensor_cli/src/commands/stake/move.py,sha256=HiQtuighlAvZr6uhtGikn5L5ZXgEjSHS5DbKhIDuTbU,37155
27
+ bittensor_cli/src/commands/stake/remove.py,sha256=gaQN7Gck0l0GCmtiYhZMWlD6OudcNy6cEIEkE8OzQRo,46863
28
28
  bittensor_cli/src/commands/subnets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  bittensor_cli/src/commands/subnets/price.py,sha256=TWcRXUFeS_Q-pfyv0YIluAL8SE7d2gzTODK-9M2J5pw,29878
30
- bittensor_cli/src/commands/subnets/subnets.py,sha256=ObB2g-iTCPkmrHomR0RHdvqX8FSHXaywSIoIFXko1h4,84118
31
- bittensor_cli-9.0.2.dist-info/METADATA,sha256=a-FAYGb9717y58lnFPAtwbKdVBCDwC4edgLf7sQd-GI,6855
32
- bittensor_cli-9.0.2.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
33
- bittensor_cli-9.0.2.dist-info/entry_points.txt,sha256=hBTLGLbVxmAKy69XSKaUZvjTCmyEzDGZKq4S8UOto8I,49
34
- bittensor_cli-9.0.2.dist-info/top_level.txt,sha256=DvgvXpmTtI_Q1BbDZMlK90LFcGFCreN1daViEPV2iFw,14
35
- bittensor_cli-9.0.2.dist-info/RECORD,,
30
+ bittensor_cli/src/commands/subnets/subnets.py,sha256=YuJ0pmd63O2dg9j3WmTwAeZQ7CGweqw6-ORF6ZaaNh0,84041
31
+ bittensor_cli-9.0.3.dist-info/METADATA,sha256=4_hNxQ1PdM4VNJes38PSeRMZFitO59g0wLPko8xPKpY,6855
32
+ bittensor_cli-9.0.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
33
+ bittensor_cli-9.0.3.dist-info/entry_points.txt,sha256=hBTLGLbVxmAKy69XSKaUZvjTCmyEzDGZKq4S8UOto8I,49
34
+ bittensor_cli-9.0.3.dist-info/top_level.txt,sha256=DvgvXpmTtI_Q1BbDZMlK90LFcGFCreN1daViEPV2iFw,14
35
+ bittensor_cli-9.0.3.dist-info/RECORD,,